]> git.cworth.org Git - sup/commitdiff
improve forwarding, having it prompt for addresses and respect related configuration...
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 7 Nov 2007 20:54:24 +0000 (20:54 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 7 Nov 2007 20:54:24 +0000 (20:54 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@679 5c8cc53c-5e98-4d25-b20a-d8db53a31250

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

index 34551b34ce53ca921c01df74d96942c8db3f1823..c513d3ed7c6392d30f3b92c31748f1ae4675e3eb 100644 (file)
@@ -1,12 +1,31 @@
 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
-  def initialize m
-    super :header => {
+
+  ## todo: share some of this with reply-mode
+  def initialize m, opts={}
+    header = {
       "From" => AccountManager.default_account.full_address,
       "Subject" => "Fwd: #{m.subj}",
-    },
-         :body => forward_body_lines(m)
+    }
+
+    header["To"] = opts[:to].map { |p| p.full_address }.join(", ") if opts[:to]
+    header["Cc"] = opts[:cc].map { |p| p.full_address }.join(", ") if opts[:cc]
+    header["Bcc"] = opts[:bcc].map { |p| p.full_address }.join(", ") if opts[:bcc]
+
+    super :header => header, :body => forward_body_lines(m)
   end
 
 protected
index a337b9d8b09a53f869c4bf48269aadd2dc23c709..38bc5dff90109ec5d09a2b91f39dd88cf32678b1 100644 (file)
@@ -4,6 +4,8 @@ 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
@@ -379,9 +381,7 @@ EOS
     m = t.latest_message
     return if m.nil? # probably won't happen
     m.load_from_source!
-    mode = ForwardMode.new m
-    BufferManager.spawn "Forward of #{m.subj}", mode
-    mode.edit_message
+    spawn_forward_mode m
   end
 
   def load_n_threads_background n=LOAD_MORE_THREAD_NUM, opts={}
index 6bc716493eabf32562209b8cc110cbdf65c79093..5f3cd6f9e8315df5b904b3f4e00024d0626dfc66 100644 (file)
@@ -2,6 +2,7 @@ module Redwood
 
 class ThreadViewMode < LineCursorMode
   include CanSpawnComposeMode
+  include CanSpawnForwardMode
 
   ## this holds all info we need to lay out a message
   class MessageLayout
@@ -109,9 +110,7 @@ class ThreadViewMode < LineCursorMode
 
   def forward
     m = @message_lines[curpos] or return
-    mode = ForwardMode.new m
-    BufferManager.spawn "Forward of #{m.subj}", mode
-    mode.edit_message
+    spawn_forward_mode m
   end
 
   include CanAliasContacts