lib/sup/modes/thread-view-mode.rb in sup-0.6 vs lib/sup/modes/thread-view-mode.rb in sup-0.7

- old
+ new

@@ -28,10 +28,11 @@ k.add :toggle_detailed_header, "Toggle detailed header", 'h' k.add :show_header, "Show full message header", 'H' k.add :activate_chunk, "Expand/collapse or activate item", :enter k.add :expand_all_messages, "Expand/collapse all messages", 'E' k.add :edit_draft, "Edit draft", 'e' + k.add :send_draft, "Send draft", 'y' k.add :edit_labels, "Edit or add labels for a thread", 'l' k.add :expand_all_quotes, "Expand/collapse all quotes in a message", 'o' k.add :jump_to_next_open, "Jump to next open message", 'n' k.add :jump_to_prev_open, "Jump to previous open message", 'p' k.add :align_current_message, "Align current message in buffer", 'z' @@ -257,11 +258,12 @@ def save_to_disk chunk = @chunk_lines[curpos] or return case chunk when Chunk::Attachment - fn = BufferManager.ask_for_filename :filename, "Save attachment to file: ", chunk.filename + default_dir = File.join(($config[:default_attachment_save_dir] || "."), chunk.filename) + fn = BufferManager.ask_for_filename :filename, "Save attachment to file: ", default_dir save_to_file(fn) { |f| f.print chunk.raw_content } if fn else m = @message_lines[curpos] fn = BufferManager.ask_for_filename :filename, "Save message to file: " return unless fn @@ -281,10 +283,22 @@ else BufferManager.flash "Not a draft message!" end end + def send_draft + m = @message_lines[curpos] or return + if m.is_draft? + mode = ResumeMode.new m + BufferManager.spawn "Send message", mode + BufferManager.kill_buffer self.buffer + mode.send_message + else + BufferManager.flash "Not a draft message!" + end + end + def jump_to_first_open loose_alignment=false m = @message_lines[0] or return if @layout[m].state != :closed jump_to_message m, loose_alignment else @@ -640,10 +654,10 @@ [[[:missing_message_color, "#{prefix}<one or more unreceived messages>"]]] when nil [[[:missing_message_color, "#{prefix}<an unreceived message>"]]] when Message message_patina_lines(chunk, state, start, parent, prefix, color, star_color) + - (chunk.is_draft? ? [[[:draft_notification_color, prefix + " >>> This message is a draft. To edit, hit 'e'. <<<"]]] : []) + (chunk.is_draft? ? [[[:draft_notification_color, prefix + " >>> This message is a draft. Hit 'e' to edit, 'y' to send. <<<"]]] : []) else raise "Bad chunk: #{chunk.inspect}" unless chunk.respond_to?(:inlineable?) ## debugging if chunk.inlineable? chunk.lines.map { |line| [[chunk.color, "#{prefix}#{line}"]] }