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:
parent
02e49a0f47
commit
39eedc1323
@ -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"
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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" {
|
||||
|
Loading…
x
Reference in New Issue
Block a user