0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-26 11:04:27 -04:00

support the open-icon of folder

This commit is contained in:
Kerwin Bryant 2025-04-10 03:03:43 +00:00
parent 02e49a0f47
commit 39eedc1323
4 changed files with 32 additions and 9 deletions

View File

@ -10,7 +10,23 @@ import (
"code.gitea.io/gitea/modules/svg"
)
func BasicThemeFolderIconName(isOpen bool) string {
if isOpen {
return "octicon-file-directory-open-fill"
}
return "octicon-file-directory-fill"
}
func BasicThemeIcon(entry *git.TreeEntry) template.HTML {
return BasicThemeIconWithOpenStatus(entry, false)
}
func BasicThemeIconOpen(entry *git.TreeEntry) template.HTML {
return BasicThemeIconWithOpenStatus(entry, true)
}
func BasicThemeIconWithOpenStatus(entry *git.TreeEntry, isOpen bool) template.HTML {
// TODO: add "open icon" support
svgName := "octicon-file"
switch {
case entry.IsLink():
@ -19,7 +35,7 @@ func BasicThemeIcon(entry *git.TreeEntry) template.HTML {
svgName = "octicon-file-directory-symlink"
}
case entry.IsDir():
svgName = "octicon-file-directory-fill"
svgName = BasicThemeFolderIconName(isOpen)
case entry.IsSubModule():
svgName = "octicon-file-submodule"
}

View File

@ -76,8 +76,16 @@ func (m *MaterialIconProvider) renderFileIconSVG(p *RenderedIconPool, name, svg,
}
func (m *MaterialIconProvider) FileIcon(p *RenderedIconPool, entry *git.TreeEntry) template.HTML {
return m.FileIconWithOpenStatus(p, entry, false)
}
func (m *MaterialIconProvider) FileIconOpen(p *RenderedIconPool, entry *git.TreeEntry) template.HTML {
return m.FileIconWithOpenStatus(p, entry, true)
}
func (m *MaterialIconProvider) FileIconWithOpenStatus(p *RenderedIconPool, entry *git.TreeEntry, isOpen bool) template.HTML {
if m.rules == nil {
return BasicThemeIcon(entry)
return BasicThemeIconWithOpenStatus(entry, isOpen)
}
if entry.IsLink() {
@ -88,6 +96,7 @@ func (m *MaterialIconProvider) FileIcon(p *RenderedIconPool, entry *git.TreeEntr
return svg.RenderHTML("octicon-file-symlink-file") // TODO: find some better icons for them
}
// TODO: add "open icon" support
name := m.findIconNameByGit(entry)
// the material icon pack's "folder" icon doesn't look good, so use our built-in one
// keep the old "octicon-xxx" class name to make some "theme plugin selector" could still work
@ -96,14 +105,14 @@ func (m *MaterialIconProvider) FileIcon(p *RenderedIconPool, entry *git.TreeEntr
extraClass := "octicon-file"
switch {
case entry.IsDir():
extraClass = "octicon-file-directory-fill"
extraClass = BasicThemeFolderIconName(isOpen)
case entry.IsSubModule():
extraClass = "octicon-file-submodule"
}
return m.renderFileIconSVG(p, name, iconSVG, extraClass)
}
// TODO: use an interface or wrapper for git.Entry to make the code testable.
return BasicThemeIcon(entry)
return BasicThemeIconWithOpenStatus(entry, isOpen)
}
func (m *MaterialIconProvider) findIconNameWithLangID(s string) string {

View File

@ -44,9 +44,8 @@ func RenderEntryIcon(renderedIconPool *RenderedIconPool, entry *git.TreeEntry) t
}
func RenderEntryIconOpen(renderedIconPool *RenderedIconPool, entry *git.TreeEntry) template.HTML {
// TODO: add "open icon" support
if setting.UI.FileIconTheme == "material" {
return DefaultMaterialIconProvider().FileIcon(renderedIconPool, entry)
return DefaultMaterialIconProvider().FileIconOpen(renderedIconPool, entry)
}
return BasicThemeIcon(entry)
return BasicThemeIconOpen(entry)
}

View File

@ -176,8 +176,7 @@ func newTreeViewNodeFromEntry(ctx context.Context, renderedIconPool *fileicon.Re
if node.EntryIcon == "" {
node.EntryIcon = fileicon.RenderEntryIcon(renderedIconPool, entry)
// TODO: no open icon support yet
// node.EntryIconOpen = fileicon.RenderEntryIconOpen(renderedIconPool, entry)
node.EntryIconOpen = fileicon.RenderEntryIconOpen(renderedIconPool, entry)
}
if node.EntryMode == "commit" {