diff options
author | Clayton Craft <clayton@craftyguy.net> | 2019-06-08 11:29:26 -0700 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-06-09 11:49:11 -0400 |
commit | dd178262bb1d01f9f7d4710431547041bde52d89 (patch) | |
tree | 4ab22337f7f6d4e2609aaf375df26d83225c5130 /widgets | |
parent | acfe7d7625192bc856d5d696f741e35ce38cab25 (diff) | |
download | aerc-dd178262bb1d01f9f7d4710431547041bde52d89.tar.gz |
Select user's preferred mimetype in MessageViewer
This implements selecting the most preferred mimetype under the 'View->Alternatives' configuration setting when viewing a message. Mimetypes in the alternatives array are weighted by their position, where the lower the index in the array the higher the priority, so this is taken into account during selection. If no message part matches a mimetype in the alternatives array, then it selects the first mimetype in the message.
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/msgviewer.go | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 52407b7..10c2182 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -160,14 +160,25 @@ func createSwitcher(switcher *PartSwitcher, conf *config.AercConfig, if err != nil { return err } - switcher.selected = -1 + selectedPriority := -1 for i, pv := range switcher.parts { pv.OnInvalidate(func(_ ui.Drawable) { switcher.Invalidate() }) - // TODO: switch to user's preferred mimetype, if configured + // Switch to user's preferred mimetype if switcher.selected == -1 && pv.part.MIMEType != "multipart" { switcher.selected = i + } else if selectedPriority == -1 { + for idx, m := range conf.Viewer.Alternatives { + if m != pv.part.MIMEType+"/"+pv.part.MIMESubType { + continue + } + priority := len(conf.Viewer.Alternatives) - idx + if priority > selectedPriority { + selectedPriority = priority + switcher.selected = i + } + } } } } |