]> git.cworth.org Git - sup/commitdiff
edit labels within thread-view-mode
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 1 Aug 2007 16:06:55 +0000 (16:06 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 1 Aug 2007 16:06:55 +0000 (16:06 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@513 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/buffer.rb
lib/sup/modes/thread-index-mode.rb
lib/sup/modes/thread-view-mode.rb

index 62b582e958c565d0eb4736486f34d9eb3bf037a5..30cac13655fd713036f552456336a3a1fb7d805f 100644 (file)
@@ -394,6 +394,7 @@ class BufferManager
 
   ## returns an array of labels
   def ask_for_labels domain, question, default_labels, forbidden_labels=[]
+    default_labels = default_labels - forbidden_labels - LabelManager::RESERVED_LABELS
     default = default_labels.join(" ")
     default += " " unless default.empty?
 
index a59bad356f28e448d7fb98e2a559dca1673334c7..5c6d4bd45dd4f7c6c766b6d925a3a0766662a4c3 100644 (file)
@@ -90,7 +90,7 @@ class ThreadIndexMode < LineCursorMode
     threads.each { |t| select t }
   end
   
-  def handle_starred_update sender, m
+  def handle_label_update sender, m
     t = @ts.thread_for(m) or return
     l = @lines[t] or return
     update_text_for_line l
index 409c23d019dc750a6bf8d721d2246176bfef637e..bc197725efaed3be37f4a2f8aa23fa20e70abde1 100644 (file)
@@ -19,6 +19,7 @@ class ThreadViewMode < LineCursorMode
     k.add :toggle_expanded, "Expand/collapse item", :enter
     k.add :expand_all_messages, "Expand/collapse all messages", 'E'
     k.add :edit_draft, "Edit draft", 'e'
+    k.add :edit_labels, "Edit or add labels for a thread", 'l'
     k.add :expand_all_quotes, "Expand/collapse all quotes in a message", 'o'
     k.add :jump_to_next_open, "Jump to next open message", 'n'
     k.add :jump_to_prev_open, "Jump to previous open message", 'p'
@@ -134,6 +135,18 @@ class ThreadViewMode < LineCursorMode
     mode.edit
   end    
 
+  def edit_labels
+    m = @message_lines[curpos] or return
+    new_labels = BufferManager.ask_for_labels :label, "Labels for message: ", m.labels
+
+    return unless new_labels
+    m.labels = new_labels
+    new_labels.each { |l| LabelManager << l }
+    ## TODO: don't recalculate EVERYTHING
+    update
+    UpdateManager.relay self, :label, m
+  end
+
   def toggle_starred
     m = @message_lines[curpos] or return
     if m.has_label? :starred
@@ -144,7 +157,7 @@ class ThreadViewMode < LineCursorMode
     ## TODO: don't recalculate EVERYTHING just to add a stupid little
     ## star to the display
     update
-    UpdateManager.relay self, :starred, m
+    UpdateManager.relay self, :label, m
   end
 
   def toggle_expanded
@@ -281,7 +294,7 @@ class ThreadViewMode < LineCursorMode
     BufferManager.kill_buffer_safely buffer
   end
 
-private 
+private
 
   def toggle_chunk_expansion chunk
     l = @chunk_layout[chunk]