From f4fd908dbe5ed6a8b256256d71f56d135c95f452 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Sat, 24 Nov 2007 19:58:23 +0000 Subject: [PATCH] move module-style spawn_xxx to class method style git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@716 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- bin/sup | 23 +++++---------------- lib/sup/modes/compose-mode.rb | 24 ++++++++++------------ lib/sup/modes/forward-mode.rb | 22 +++++++++----------- lib/sup/modes/label-search-results-mode.rb | 14 +++++++++++++ lib/sup/modes/thread-index-mode.rb | 4 +--- lib/sup/modes/thread-view-mode.rb | 5 +---- 6 files changed, 42 insertions(+), 50 deletions(-) diff --git a/bin/sup b/bin/sup index 9ff137b..c857ac4 100644 --- a/bin/sup +++ b/bin/sup @@ -94,7 +94,6 @@ EOS end begin - extend CanSpawnComposeMode Redwood::start Index.load @@ -225,27 +224,15 @@ begin when :list_labels labels = LabelManager.listable_labels.map { |l| LabelManager.string_for l } user_label = bm.ask_with_completions :label, "Show threads with label (enter for listing): ", labels - user_label = - case user_label - when nil, /^\s*$/ - bm.spawn_modal("Label list", LabelListMode.new) if user_label && user_label.empty? + unless user_label.nil? + if user_label.empty? + bm.spawn_unless_exists("Label list") { LabelListMode.new } if user_label && user_label.empty? else - LabelManager.label_for user_label + LabelSearchResultsMode.spawn_nicely user_label end - - case user_label - when nil - when :inbox - BufferManager.raise_to_front InboxMode.instance.buffer - else - b = BufferManager.spawn_unless_exists("All threads with label '#{user_label}'") do - mode = LabelSearchResultsMode.new([user_label]) - end - b.mode.load_threads :num => b.content_height end - when :compose - spawn_compose_mode + ComposeMode.spawn_nicely when :poll reporting_thread { PollManager.poll } when :recall_draft diff --git a/lib/sup/modes/compose-mode.rb b/lib/sup/modes/compose-mode.rb index abd4dd1..3c92fd2 100644 --- a/lib/sup/modes/compose-mode.rb +++ b/lib/sup/modes/compose-mode.rb @@ -1,18 +1,5 @@ module Redwood -module CanSpawnComposeMode - def spawn_compose_mode 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] - 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 - class ComposeMode < EditMessageMode def initialize opts={} header = {} @@ -31,6 +18,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: ") 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 diff --git a/lib/sup/modes/forward-mode.rb b/lib/sup/modes/forward-mode.rb index 6a94877..7e830d3 100644 --- a/lib/sup/modes/forward-mode.rb +++ b/lib/sup/modes/forward-mode.rb @@ -1,17 +1,5 @@ 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 ## todo: share some of this with reply-mode @@ -28,6 +16,16 @@ class ForwardMode < EditMessageMode super :header => header, :body => forward_body_lines(m) end + def self.spawn_nicely 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 + protected def forward_body_lines m diff --git a/lib/sup/modes/label-search-results-mode.rb b/lib/sup/modes/label-search-results-mode.rb index 9fc051f..4897140 100644 --- a/lib/sup/modes/label-search-results-mode.rb +++ b/lib/sup/modes/label-search-results-mode.rb @@ -10,6 +10,20 @@ class LabelSearchResultsMode < ThreadIndexMode end def is_relevant? m; @labels.all? { |l| m.has_label? l }; end + + def self.spawn_nicely label + label = LabelManager.label_for(label) unless label.is_a?(Symbol) + case label + when nil + when :inbox + BufferManager.raise_to_front InboxMode.instance.buffer + else + BufferManager.spawn_unless_exists("All threads with label '#{label}'") do + mode = LabelSearchResultsMode.new([label]) + mode.load_threads :num => b.content_height + end + end + end end end diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index 533ad88..1f61f20 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -4,8 +4,6 @@ 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 @@ -399,7 +397,7 @@ EOS m = t.latest_message return if m.nil? # probably won't happen m.load_from_source! - spawn_forward_mode m + ForwardMode.spawn_nicely 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 5967148..108a7d3 100644 --- a/lib/sup/modes/thread-view-mode.rb +++ b/lib/sup/modes/thread-view-mode.rb @@ -1,9 +1,6 @@ module Redwood class ThreadViewMode < LineCursorMode - include CanSpawnComposeMode - include CanSpawnForwardMode - ## this holds all info we need to lay out a message class MessageLayout attr_accessor :top, :bot, :prev, :next, :depth, :width, :state, :color, :star_color, :orig_new @@ -113,7 +110,7 @@ class ThreadViewMode < LineCursorMode def subscribe_to_list m = @message_lines[curpos] or return if m.list_subscribe && m.list_subscribe =~ // - spawn_compose_mode :from => AccountManager.account_for(m.recipient_email), :to => [PersonManager.person_for($1)], :subj => $3 + ComposeMode.spawn_nicely :from => AccountManager.account_for(m.recipient_email), :to => [PersonManager.person_for($1)], :subj => $3 else BufferManager.flash "Can't find List-Subscribe header for this message." end -- 2.43.0