From: wmorgan Date: Wed, 7 Nov 2007 20:54:24 +0000 (+0000) Subject: improve forwarding, having it prompt for addresses and respect related configuration... X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=d41d3ab44903e4e894ecb9bed2740846e05fa53b;p=sup improve forwarding, having it prompt for addresses and respect related configuration options, etc git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@679 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- diff --git a/lib/sup/modes/forward-mode.rb b/lib/sup/modes/forward-mode.rb index 34551b3..c513d3e 100644 --- a/lib/sup/modes/forward-mode.rb +++ b/lib/sup/modes/forward-mode.rb @@ -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 diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index a337b9d..38bc5df 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -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={} diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb index 6bc7164..5f3cd6f 100644 --- a/lib/sup/modes/thread-view-mode.rb +++ b/lib/sup/modes/thread-view-mode.rb @@ -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