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
@text = []
@done = false
@value = nil
+ @unread_only = false
super
regen_text
end
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
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)