diff options
Diffstat (limited to 'ui/account.go')
-rw-r--r-- | ui/account.go | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/ui/account.go b/ui/account.go index 9c16cc5..50f41e4 100644 --- a/ui/account.go +++ b/ui/account.go @@ -1,25 +1,35 @@ package ui import ( + "fmt" + tb "github.com/nsf/termbox-go" "git.sr.ht/~sircmpwn/aerc2/config" "git.sr.ht/~sircmpwn/aerc2/worker" + "git.sr.ht/~sircmpwn/aerc2/worker/types" ) type AccountTab struct { Config *config.AccountConfig - Worker *worker.Worker + Worker worker.Worker Parent *UIState counter int + log []string } -func NewAccountTab(conf *config.AccountConfig, work *worker.Worker) *AccountTab { +func NewAccountTab(conf *config.AccountConfig) (*AccountTab, error) { + work, err := worker.NewWorker(conf.Source) + if err != nil { + return nil, err + } + go work.Run() + work.PostAction(types.Configure{Config: conf}) return &AccountTab{ Config: conf, Worker: work, - } + }, nil } func (acc *AccountTab) Name() string { @@ -32,13 +42,26 @@ func (acc *AccountTab) SetParent(parent *UIState) { func (acc *AccountTab) Render(at Geometry) { cell := tb.Cell{ + Ch: ' ', Fg: tb.ColorDefault, Bg: tb.ColorDefault, } - TPrintf(&at, cell, "%s %d", acc.Name(), acc.counter) + TFill(at, cell) + TPrintf(&at, cell, "%s %d\n", acc.Name(), acc.counter) + for _, str := range acc.log { + TPrintf(&at, cell, "%s\n", str) + } acc.counter++ if acc.counter%10000 == 0 { acc.counter = 0 } acc.Parent.InvalidateFrom(acc) } + +func (acc *AccountTab) GetChannel() chan types.WorkerMessage { + return acc.Worker.GetMessages() +} + +func (acc *AccountTab) HandleMessage(msg types.WorkerMessage) { + acc.log = append(acc.log, fmt.Sprintf("<- %T", msg)) +} |