summaryrefslogtreecommitdiff
path: root/widgets/dirlist.go
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/dirlist.go')
-rw-r--r--widgets/dirlist.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/widgets/dirlist.go b/widgets/dirlist.go
index 6f8869d..9535c69 100644
--- a/widgets/dirlist.go
+++ b/widgets/dirlist.go
@@ -4,6 +4,7 @@ import (
"fmt"
"log"
"math"
+ "os"
"regexp"
"sort"
"time"
@@ -19,6 +20,25 @@ import (
"git.sr.ht/~rjarry/aerc/worker/types"
)
+type DirectoryLister interface {
+ ui.Drawable
+
+ Selected() string
+ Select(string)
+
+ UpdateList(func([]string))
+ List() []string
+
+ NextPrev(int)
+
+ CollapseFolder()
+ ExpandFolder()
+
+ SelectedMsgStore() (*lib.MessageStore, bool)
+ MsgStore(string) (*lib.MessageStore, bool)
+ SetMsgStore(string, *lib.MessageStore)
+}
+
type DirectoryList struct {
ui.Invalidatable
aercConf *config.AercConfig
@@ -35,7 +55,7 @@ type DirectoryList struct {
}
func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig,
- logger *log.Logger, worker *types.Worker) *DirectoryList {
+ logger *log.Logger, worker *types.Worker) DirectoryLister {
dirlist := &DirectoryList{
aercConf: conf,
@@ -51,6 +71,11 @@ func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig,
dirlist.Invalidate()
})
dirlist.spinner.Start()
+
+ if uiConf.DirListTree {
+ return NewDirectoryTree(dirlist, string(os.PathSeparator))
+ }
+
return dirlist
}
@@ -88,6 +113,14 @@ func (dirlist *DirectoryList) UpdateList(done func(dirs []string)) {
})
}
+func (dirlist *DirectoryList) CollapseFolder() {
+ // no effect for the DirectoryList
+}
+
+func (dirlist *DirectoryList) ExpandFolder() {
+ // no effect for the DirectoryList
+}
+
func (dirlist *DirectoryList) Select(name string) {
dirlist.selecting = name