From: wmorgan Date: Fri, 2 Nov 2007 02:26:02 +0000 (+0000) Subject: tab in label-list-mode toggles hiding labels without new messages (thanks to Colin... X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=5048c339396ae70394ae2dc2bd054f61e07ec3a3;p=sup tab in label-list-mode toggles hiding labels without new messages (thanks to Colin Bell) git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@657 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb index ee9b983..e02fa26 100644 --- a/lib/sup/modes/label-list-mode.rb +++ b/lib/sup/modes/label-list-mode.rb @@ -4,6 +4,7 @@ class LabelListMode < LineCursorMode register_keymap do |k| k.add :select_label, "Select label", :enter k.add :reload, "Discard label list and reload", '@' + k.add :toggle_show_unread_only, "Toggle between all labels and those with unread mail", :tab end bool_reader :done @@ -14,6 +15,7 @@ class LabelListMode < LineCursorMode @text = [] @done = false @value = nil + @unread_only = false super regen_text end @@ -22,12 +24,16 @@ class LabelListMode < LineCursorMode def [] i; @text[i] end protected + def toggle_show_unread_only + @unread_only = !@unread_only + reload + end def reload regen_text buffer.mark_dirty if buffer end - + def regen_text @text = [] labels = LabelManager.listable_labels @@ -41,6 +47,10 @@ protected width = counts.max_of { |l, s, t, u| s.length } + if @unread_only + counts.delete_if { | l, s, t, u | u == 0 } + end + @labels = [] counts.map do |label, string, total, unread| if total == 0 && !LabelManager::RESERVED_LABELS.include?(label)