diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index d13587c..518fe51 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -254,7 +254,8 @@ These options are configured in the *[ui]* section of aerc.conf. Have a look at *aerc-stylesets*(7) as to how a styleset looks like. *icon-unencrypted* - The icon to display for unencrypted mails. + The icon to display for unencrypted mails. The status indicator is only + displayed if an icon is set. Default: "" @@ -271,9 +272,10 @@ These options are configured in the *[ui]* section of aerc.conf. *icon-signed-encrypted* The icon to display for signed and encrypted mails where the signature - was successfully verified. + was successfully verified. The combined icon is only used if set, + otherwise the signed and encrypted icons are displayed separately. - Default: [s|e] + Default: "" *icon-unknown* The icon to display for signed mails which could not be verified due to diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 0e6af5b..d88785c 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -93,9 +93,9 @@ func NewMessageViewer(acct *AccountView, {Strategy: ui.SIZE_EXACT, Size: ui.Const(headerHeight)}, } - if msg.MessageDetails() != nil { + if msg.MessageDetails() != nil || conf.Ui.IconUnencrypted != "" { height := 1 - if msg.MessageDetails().IsSigned && msg.MessageDetails().IsEncrypted { + if msg.MessageDetails() != nil && msg.MessageDetails().IsSigned && msg.MessageDetails().IsEncrypted { height = 2 } rows = append(rows, ui.GridSpec{Strategy: ui.SIZE_EXACT, Size: ui.Const(height)}) @@ -125,7 +125,7 @@ func NewMessageViewer(acct *AccountView, borderChar := acct.UiConfig().BorderCharHorizontal grid.AddChild(header).At(0, 0) - if msg.MessageDetails() != nil { + if msg.MessageDetails() != nil || conf.Ui.IconUnencrypted != "" { grid.AddChild(NewPGPInfo(msg.MessageDetails(), acct.UiConfig())).At(1, 0) grid.AddChild(ui.NewFill(borderChar, borderStyle)).At(2, 0) grid.AddChild(switcher).At(3, 0) diff --git a/widgets/pgpinfo.go b/widgets/pgpinfo.go index 38118b7..2b21c22 100644 --- a/widgets/pgpinfo.go +++ b/widgets/pgpinfo.go @@ -40,7 +40,7 @@ func (p *PGPInfo) DrawSignature(ctx *ui.Context) { p.details.SignatureError) } else { icon := p.uiConfig.IconSigned - if p.details.IsEncrypted { + if p.details.IsEncrypted && p.uiConfig.IconSignedEncrypted != "" { icon = p.uiConfig.IconSignedEncrypted } x := ctx.Printf(0, 0, validStyle, "%s Authentic ", icon) @@ -55,29 +55,34 @@ func (p *PGPInfo) DrawEncryption(ctx *ui.Context, y int) { validStyle := p.uiConfig.GetStyle(config.STYLE_SUCCESS) defaultStyle := p.uiConfig.GetStyle(config.STYLE_DEFAULT) + // if a sign-encrypt combination icon is set, use that icon := p.uiConfig.IconEncrypted - if p.details.IsSigned && p.details.SignatureValidity == models.Valid { + if p.details.IsSigned && p.details.SignatureValidity == models.Valid && p.uiConfig.IconSignedEncrypted != "" { icon = strings.Repeat(" ", utf8.RuneCountInString(p.uiConfig.IconSignedEncrypted)) } - x := ctx.Printf(0, y, validStyle, "%s Encrypted ", icon) - x += ctx.Printf(x, y, defaultStyle, - "To %s (%8X) ", p.details.DecryptedWith, p.details.DecryptedWithKeyId) + x := ctx.Printf(0, y, validStyle, "%s Encrypted", icon) + x += ctx.Printf(x+1, y, defaultStyle, "To %s (%8X) ", p.details.DecryptedWith, p.details.DecryptedWithKeyId) if !p.details.IsSigned { - x += ctx.Printf(x, y, warningStyle, - "(message not signed!)") + x += ctx.Printf(x, y, warningStyle, "(message not signed!)") } } func (p *PGPInfo) Draw(ctx *ui.Context) { + warningStyle := p.uiConfig.GetStyle(config.STYLE_WARNING) defaultStyle := p.uiConfig.GetStyle(config.STYLE_DEFAULT) ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', defaultStyle) - if p.details.IsSigned && p.details.IsEncrypted { + + switch { + case p.details == nil && p.uiConfig.IconUnencrypted != "": + x := ctx.Printf(0, 0, warningStyle, "%s ", p.uiConfig.IconUnencrypted) + ctx.Printf(x, 0, defaultStyle, "message unencrypted and unsigned") + case p.details.IsSigned && p.details.IsEncrypted: p.DrawSignature(ctx) p.DrawEncryption(ctx, 1) - } else if p.details.IsSigned { + case p.details.IsSigned: p.DrawSignature(ctx) - } else if p.details.IsEncrypted { + case p.details.IsEncrypted: p.DrawEncryption(ctx, 0) } }