]> git.cworth.org Git - sup/blobdiff - lib/sup/modes/compose-mode.rb
fixes for ruby1.9
[sup] / lib / sup / modes / compose-mode.rb
index c1585926c644832879fd9a43384a550a9db3237e..04d5922381b728de2034c9dbda3b8089d78d7ccc 100644 (file)
@@ -2,14 +2,14 @@ module Redwood
 
 class ComposeMode < EditMessageMode
   def initialize opts={}
-    header = {
-      "From" => AccountManager.default_account.full_address,
-    }
-
+    header = {}
+    header["From"] = (opts[:from] || AccountManager.default_account).full_address
     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]
     header["Subject"] = opts[:subj] if opts[:subj]
+    header["References"] = opts[:refs].map { |r| "<#{r}>" }.join(" ") if opts[:refs]
+    header["In-Reply-To"] = opts[:replytos].map { |r| "<#{r}>" }.join(" ") if opts[:replytos]
 
     super :header => header, :body => (opts[:body] || [])
   end
@@ -19,6 +19,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: ", [opts[:to_default]]) 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