]> git.cworth.org Git - sup/blobdiff - lib/sup/modes/compose-mode.rb
fixes for ruby1.9
[sup] / lib / sup / modes / compose-mode.rb
index 65ea172013b6a25f05d8911afc52e605b6f6e61e..04d5922381b728de2034c9dbda3b8089d78d7ccc 100644 (file)
@@ -1,29 +1,34 @@
 module Redwood
 
 class ComposeMode < EditMessageMode
-  attr_reader :body, :header
-
   def initialize opts={}
-    super()
-    @header = {
-      "From" => AccountManager.default_account.full_address,
-      "Message-Id" => gen_message_id,
-    }
-
-    @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 = {}
+    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]
 
-    @body = opts[:body] || []
-    regen_text
+    super :header => header, :body => (opts[:body] || [])
   end
 
-protected
+  def edit_message
+    edited = super
+    BufferManager.kill_buffer self.buffer unless edited
+    edited
+  end
 
-  def handle_new_text new_header, new_body
-    @header = new_header
-    @body = new_body
+  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