diff --git a/widgets/account.go b/widgets/account.go index d749f60..d368d42 100644 --- a/widgets/account.go +++ b/widgets/account.go @@ -53,7 +53,7 @@ func NewAccountView( } } - dirlist := NewDirectoryList(logger, worker) + dirlist := NewDirectoryList(conf, logger, worker) grid.AddChild(ui.NewBordered(dirlist, ui.BORDER_RIGHT)).Span(2, 1) acct := &AccountView{ diff --git a/widgets/directories.go b/widgets/directories.go index a9ea7d4..16b0e5a 100644 --- a/widgets/directories.go +++ b/widgets/directories.go @@ -6,19 +6,23 @@ import ( "github.com/gdamore/tcell" + "git.sr.ht/~sircmpwn/aerc2/config" "git.sr.ht/~sircmpwn/aerc2/lib/ui" "git.sr.ht/~sircmpwn/aerc2/worker/types" ) type DirectoryList struct { + conf *config.AccountConfig dirs []string logger *log.Logger onInvalidate func(d ui.Drawable) worker *types.Worker } -func NewDirectoryList(logger *log.Logger, worker *types.Worker) *DirectoryList { - return &DirectoryList{logger: logger, worker: worker} +func NewDirectoryList(conf *config.AccountConfig, + logger *log.Logger, worker *types.Worker) *DirectoryList { + + return &DirectoryList{conf: conf, logger: logger, worker: worker} } func (dirlist *DirectoryList) UpdateList() { @@ -49,10 +53,19 @@ func (dirlist *DirectoryList) Invalidate() { func (dirlist *DirectoryList) Draw(ctx *ui.Context) { ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault) - for i, name := range dirlist.dirs { - if i >= ctx.Height() { + row := 0 + for _, name := range dirlist.dirs { + if row >= ctx.Height() { break } - ctx.Printf(0, i, tcell.StyleDefault, "%s", name) + if len(dirlist.conf.Folders) > 1 { + idx := sort.SearchStrings(dirlist.conf.Folders, name) + if idx == len(dirlist.conf.Folders) || + dirlist.conf.Folders[idx] != name { + continue + } + } + ctx.Printf(0, row, tcell.StyleDefault, "%s", name) + row++ } }