]> git.cworth.org Git - sup/commitdiff
move module-style spawn_xxx to class method style
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 19:58:23 +0000 (19:58 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 19:58:23 +0000 (19:58 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@716 5c8cc53c-5e98-4d25-b20a-d8db53a31250

bin/sup
lib/sup/modes/compose-mode.rb
lib/sup/modes/forward-mode.rb
lib/sup/modes/label-search-results-mode.rb
lib/sup/modes/thread-index-mode.rb
lib/sup/modes/thread-view-mode.rb

diff --git a/bin/sup b/bin/sup
index 9ff137b4578178b10e241e2395416f420d8b8829..c857ac4306d6add7c7a6bc68751c0154706030d0 100644 (file)
--- a/bin/sup
+++ b/bin/sup
@@ -94,7 +94,6 @@ EOS
 end
 
 begin
-  extend CanSpawnComposeMode
   Redwood::start
   Index.load
 
@@ -225,27 +224,15 @@ begin
       when :list_labels
         labels = LabelManager.listable_labels.map { |l| LabelManager.string_for l }
         user_label = bm.ask_with_completions :label, "Show threads with label (enter for listing): ", labels
-        user_label =
-          case user_label
-          when nil, /^\s*$/
-            bm.spawn_modal("Label list", LabelListMode.new) if user_label && user_label.empty?
+        unless user_label.nil?
+          if user_label.empty?
+            bm.spawn_unless_exists("Label list") { LabelListMode.new } if user_label && user_label.empty?
           else
-            LabelManager.label_for user_label
+            LabelSearchResultsMode.spawn_nicely user_label
           end
-        
-        case user_label
-        when nil
-        when :inbox
-          BufferManager.raise_to_front InboxMode.instance.buffer
-        else
-          b = BufferManager.spawn_unless_exists("All threads with label '#{user_label}'") do
-            mode = LabelSearchResultsMode.new([user_label])
-          end
-          b.mode.load_threads :num => b.content_height
         end
-
       when :compose
-        spawn_compose_mode
+        ComposeMode.spawn_nicely
       when :poll
         reporting_thread { PollManager.poll }
       when :recall_draft
index abd4dd175f82e7e6fcd79509011f6b229661b976..3c92fd286f544f9c9e0347fdc42a40a822cace0d 100644 (file)
@@ -1,18 +1,5 @@
 module Redwood
 
-module CanSpawnComposeMode
-  def spawn_compose_mode opts={}
-    to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
-    cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
-    bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
-    subj = opts[:subj] || BufferManager.ask(:subject, "Subject: ") or return if $config[:ask_for_subject]
-    
-    mode = ComposeMode.new :from => opts[:from], :to => to, :cc => cc, :bcc => bcc, :subj => subj
-    BufferManager.spawn "New Message", mode
-    mode.edit_message
-  end
-end
-
 class ComposeMode < EditMessageMode
   def initialize opts={}
     header = {}
@@ -31,6 +18,17 @@ class ComposeMode < EditMessageMode
     BufferManager.kill_buffer self.buffer unless edited
     edited
   end
+
+  def self.spawn_nicely opts={}
+    to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
+    cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
+    bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
+    subj = opts[:subj] || BufferManager.ask(:subject, "Subject: ") or return if $config[:ask_for_subject]
+    
+    mode = ComposeMode.new :from => opts[:from], :to => to, :cc => cc, :bcc => bcc, :subj => subj
+    BufferManager.spawn "New Message", mode
+    mode.edit_message
+  end
 end
 
 end
index 6a94877e787d950fbdcb158ecc9f0448638d70cd..7e830d388e8f8a754b039eaf1592e30418af57f6 100644 (file)
@@ -1,17 +1,5 @@
 module Redwood
 
-module CanSpawnForwardMode
-  def spawn_forward_mode m, opts={}
-    to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
-    cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
-    bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
-    
-    mode = ForwardMode.new m, :to => to, :cc => cc, :bcc => bcc
-    BufferManager.spawn "Forwarding #{m.subj}", mode
-    mode.edit_message
-  end
-end
-
 class ForwardMode < EditMessageMode
 
   ## todo: share some of this with reply-mode
@@ -28,6 +16,16 @@ class ForwardMode < EditMessageMode
     super :header => header, :body => forward_body_lines(m)
   end
 
+  def self.spawn_nicely m, opts={}
+    to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
+    cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
+    bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
+    
+    mode = ForwardMode.new m, :to => to, :cc => cc, :bcc => bcc
+    BufferManager.spawn "Forwarding #{m.subj}", mode
+    mode.edit_message
+  end
+
 protected
 
   def forward_body_lines m
index 9fc051f137c83d27b686be43df3707ca5e95837b..489714057d8efa74dd9dccb1fa1cb6daf4f3abc1 100644 (file)
@@ -10,6 +10,20 @@ class LabelSearchResultsMode < ThreadIndexMode
   end
 
   def is_relevant? m; @labels.all? { |l| m.has_label? l }; end
+
+  def self.spawn_nicely label
+    label = LabelManager.label_for(label) unless label.is_a?(Symbol)
+    case label
+    when nil
+    when :inbox
+      BufferManager.raise_to_front InboxMode.instance.buffer
+    else
+      BufferManager.spawn_unless_exists("All threads with label '#{label}'") do
+        mode = LabelSearchResultsMode.new([label])
+        mode.load_threads :num => b.content_height
+      end
+    end
+  end
 end
 
 end
index 533ad8896e61f80eef33ec4e8856ca7a61d2eb62..1f61f2069a671d005f967cc4f0f22b0bae6c7647 100644 (file)
@@ -4,8 +4,6 @@ module Redwood
 ## - is_relevant?
 
 class ThreadIndexMode < LineCursorMode
-  include CanSpawnForwardMode
-
   DATE_WIDTH = Time::TO_NICE_S_MAX_LEN
   MIN_FROM_WIDTH = 15
   LOAD_MORE_THREAD_NUM = 20
@@ -399,7 +397,7 @@ EOS
     m = t.latest_message
     return if m.nil? # probably won't happen
     m.load_from_source!
-    spawn_forward_mode m
+    ForwardMode.spawn_nicely m
   end
 
   def load_n_threads_background n=LOAD_MORE_THREAD_NUM, opts={}
index 59671483c5ee7005f45a2d95b5ba664363c0ff8c..108a7d35c1a16a9c93fe3419fc85c756f28e9c6f 100644 (file)
@@ -1,9 +1,6 @@
 module Redwood
 
 class ThreadViewMode < LineCursorMode
-  include CanSpawnComposeMode
-  include CanSpawnForwardMode
-
   ## this holds all info we need to lay out a message
   class MessageLayout
     attr_accessor :top, :bot, :prev, :next, :depth, :width, :state, :color, :star_color, :orig_new
@@ -113,7 +110,7 @@ class ThreadViewMode < LineCursorMode
   def subscribe_to_list
     m = @message_lines[curpos] or return
     if m.list_subscribe && m.list_subscribe =~ /<mailto:(.*?)\?(subject=(.*?))>/
-      spawn_compose_mode :from => AccountManager.account_for(m.recipient_email), :to => [PersonManager.person_for($1)], :subj => $3
+      ComposeMode.spawn_nicely :from => AccountManager.account_for(m.recipient_email), :to => [PersonManager.person_for($1)], :subj => $3
     else
       BufferManager.flash "Can't find List-Subscribe header for this message."
     end