widget: Add ProvidesMessage interface

Consists of 3 functions
* Store: Access to MessageStore type
* SelectedAccount: Access to Account widget that the target widget
belongs to
* SelectedMessage: Current message (selected in msglist or the one we
are viewing)

Signed-off-by: Kevin Kuehler <keur@ocf.berkeley.edu>
This commit is contained in:
Kevin Kuehler 2019-06-01 22:15:04 -07:00 committed by Drew DeVault
parent 2be985fecb
commit 753adb9069
10 changed files with 93 additions and 18 deletions

View file

@ -24,6 +24,7 @@ import (
type MessageViewer struct {
ui.Invalidatable
acct *AccountView
conf *config.AercConfig
err error
grid *ui.Grid
@ -55,7 +56,7 @@ func formatAddresses(addrs []*imap.Address) string {
return val.String()
}
func NewMessageViewer(conf *config.AercConfig,
func NewMessageViewer(acct *AccountView, conf *config.AercConfig,
store *lib.MessageStore, msg *types.MessageInfo) *MessageViewer {
grid := ui.NewGrid().Rows([]ui.GridSpec{
@ -124,6 +125,7 @@ func NewMessageViewer(conf *config.AercConfig,
grid.AddChild(switcher).At(1, 0)
return &MessageViewer{
acct: acct,
grid: grid,
msg: msg,
store: store,
@ -185,6 +187,18 @@ func (mv *MessageViewer) OnInvalidate(fn func(d ui.Drawable)) {
})
}
func (mv *MessageViewer) Store() *lib.MessageStore {
return mv.store
}
func (mv *MessageViewer) SelectedAccount() *AccountView {
return mv.acct
}
func (mv *MessageViewer) SelectedMessage() *types.MessageInfo {
return mv.msg
}
func (mv *MessageViewer) CurrentPart() *PartInfo {
switcher := mv.switcher
part := switcher.parts[switcher.selected]