From b360cca977bdf29d19764712d97af22e9165e2d0 Mon Sep 17 00:00:00 2001 From: Reto Brunner Date: Mon, 23 Dec 2019 12:51:59 +0100 Subject: msgviewer: Add Labels as a virtual header In order to accommodate for that, the headerlayout needed to be rewritten to pass the filter criteria back to the msgviewer, instead of just using the normal headers. --- widgets/headerlayout.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'widgets/headerlayout.go') diff --git a/widgets/headerlayout.go b/widgets/headerlayout.go index c6e6161..7f6b93d 100644 --- a/widgets/headerlayout.go +++ b/widgets/headerlayout.go @@ -7,15 +7,19 @@ import ( type HeaderLayout [][]string +type HeaderLayoutFilter struct { + layout HeaderLayout + keep func(msg *models.MessageInfo, header string) bool // filter criteria +} + // forMessage returns a filtered header layout, removing rows whose headers // do not appear in the provided message. -func (layout HeaderLayout) forMessage(msg *models.MessageInfo) HeaderLayout { - headers := msg.RFC822Headers - result := make(HeaderLayout, 0, len(layout)) - for _, row := range layout { +func (filter HeaderLayoutFilter) forMessage(msg *models.MessageInfo) HeaderLayout { + result := make(HeaderLayout, 0, len(filter.layout)) + for _, row := range filter.layout { // To preserve layout alignment, only hide rows if all columns are empty for _, col := range row { - if headers.Get(col) != "" { + if filter.keep(msg, col) { result = append(result, row) break } -- cgit v1.2.3