]> git.cworth.org Git - sup/blob - lib/sup/modes/compose-mode.rb
move module-style spawn_xxx to class method style
[sup] / lib / sup / modes / compose-mode.rb
1 module Redwood
2
3 class ComposeMode < EditMessageMode
4   def initialize opts={}
5     header = {}
6     header["From"] = (opts[:from] || AccountManager.default_account).full_address
7     header["To"] = opts[:to].map { |p| p.full_address }.join(", ") if opts[:to]
8     header["To"] = opts[:to].map { |p| p.full_address }.join(", ") if opts[:to]
9     header["Cc"] = opts[:cc].map { |p| p.full_address }.join(", ") if opts[:cc]
10     header["Bcc"] = opts[:bcc].map { |p| p.full_address }.join(", ") if opts[:bcc]
11     header["Subject"] = opts[:subj] if opts[:subj]
12
13     super :header => header, :body => (opts[:body] || [])
14   end
15
16   def edit_message
17     edited = super
18     BufferManager.kill_buffer self.buffer unless edited
19     edited
20   end
21
22   def self.spawn_nicely opts={}
23     to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
24     cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
25     bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
26     subj = opts[:subj] || BufferManager.ask(:subject, "Subject: ") or return if $config[:ask_for_subject]
27     
28     mode = ComposeMode.new :from => opts[:from], :to => to, :cc => cc, :bcc => bcc, :subj => subj
29     BufferManager.spawn "New Message", mode
30     mode.edit_message
31   end
32 end
33
34 end