dirtree: add dirtree-collapse config setting

Adds a setting to the configuration to choose at which level the
folders in the dirtree are collapsed by default.

In my case, this is useful because my organisation has some rather deep
nesting in the folder structure, and a _lot_ of folders, and this way I
can keep my dirtree uncluttered while still having all folders there if
I need them.

Signed-off-by: Sijmen <me@sijman.nl>
Acked-by: Koni Marti <koni.marti@gmail.com>
This commit is contained in:
Sijmen 2022-08-13 01:44:44 +02:00 committed by Robin Jarry
parent 7377b8b05a
commit db39ca181a
5 changed files with 20 additions and 3 deletions
widgets

View file

@ -327,7 +327,7 @@ func (dt *DirectoryTree) buildTree() {
copy(dt.treeDirs, dt.dirs)
root := &types.Thread{Uid: 0}
buildTree(root, sTree, 0xFFFFFF)
dt.buildTreeNode(root, sTree, 0xFFFFFF, 1)
threads := make([]*types.Thread, 0)
@ -373,7 +373,7 @@ func (dt *DirectoryTree) buildTree() {
}
}
func buildTree(node *types.Thread, stree [][]string, defaultUid uint32) {
func (dt *DirectoryTree) buildTreeNode(node *types.Thread, stree [][]string, defaultUid uint32, depth int) {
m := make(map[string][][]string)
for _, branch := range stree {
if len(branch) > 1 {
@ -398,7 +398,10 @@ func buildTree(node *types.Thread, stree [][]string, defaultUid uint32) {
}
nextNode := &types.Thread{Uid: uid}
node.AddChild(nextNode)
buildTree(nextNode, next, defaultUid)
if dt.UiConfig().DirListCollapse != 0 {
node.Hidden = depth > dt.UiConfig().DirListCollapse
}
dt.buildTreeNode(nextNode, next, defaultUid, depth+1)
}
}