]> git.cworth.org Git - sup/commitdiff
tab in label-list-mode toggles hiding labels without new messages (thanks to Colin...
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 2 Nov 2007 02:26:02 +0000 (02:26 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Fri, 2 Nov 2007 02:26:02 +0000 (02:26 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@657 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/modes/label-list-mode.rb

index ee9b9830da39202aaf68dc8c55338d1260abaed8..e02fa26d26afa23ee22d83e5bee3b9dbe082f745 100644 (file)
@@ -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)