]> git.notmuchmail.org Git - sup/commitdiff
improved load_n_threads
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 3 Jan 2007 06:11:14 +0000 (06:11 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Wed, 3 Jan 2007 06:11:14 +0000 (06:11 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@151 5c8cc53c-5e98-4d25-b20a-d8db53a31250

bin/sup
lib/sup/modes/contact-list-mode.rb
lib/sup/modes/inbox-mode.rb
lib/sup/modes/label-list-mode.rb
lib/sup/modes/label-search-results-mode.rb
lib/sup/modes/person-search-results-mode.rb
lib/sup/modes/search-results-mode.rb
lib/sup/modes/thread-index-mode.rb

diff --git a/bin/sup b/bin/sup
index 36fd15263f57c75e06a4db6af0cbbaf3f631c9f5..c60d990f0413cd51ba3230f36b18e65f1823bbd3 100644 (file)
--- a/bin/sup
+++ b/bin/sup
@@ -100,9 +100,8 @@ begin
   Logger.make_buf
 
   bm.draw_screen
-  imode.load_more_threads ibuf.content_height
+  imode.load_more_threads :num => ibuf.content_height, :when_done => lambda {   reporting_thread { sleep 1; PollManager.poll } }
 
-  reporting_thread { sleep 5; PollManager.poll }
   PollManager.start_thread
 
   until $exception
@@ -141,7 +140,7 @@ begin
             log "built query from #{text.inspect}: #{qobj}"
             mode = SearchResultsMode.new qobj
             bm.spawn "search: \"#{short_text}\"", mode
-            mode.load_more_threads mode.buffer.content_height
+            mode.load_more_threads :num => mode.buffer.content_height
           rescue Ferret::QueryParser::QueryParseException => e
             bm.flash "Couldn't parse query."
           end
@@ -168,7 +167,7 @@ begin
             b = BufferManager.spawn_unless_exists(:draft) do
               mode = LabelSearchResultsMode.new [:draft]
             end
-            b.mode.load_more_threads b.content_height
+            b.mode.load_more_threads :num => b.content_height
           end
         when :nothing
         when :redraw
index f2f5049a77da93fce6eecf0a2e0ee5c00b9aa893..ceb185ab313e0a9312bc3bc01301fb6674bd7715 100644 (file)
@@ -60,7 +60,7 @@ class ContactListMode < LineCursorMode
   def multi_search people
     mode = PersonSearchResultsMode.new people
     BufferManager.spawn "personal search results", mode
-    mode.load_more_threads mode.buffer.content_height
+    mode.load_more_threads :num => mode.buffer.content_height
   end
 
   def search
index 245560c720e3c6b194d5a205bfcd7739953bcb8b..b4da4f60f4488c4649967a174ec3f51d7b9cba49 100644 (file)
@@ -28,19 +28,21 @@ class InboxMode < ThreadIndexMode
 
   def is_relevant? m; m.has_label? :inbox; end
 
-  def load_more_threads n=ThreadIndexMode::LOAD_MORE_THREAD_NUM
+  def load_more_threads opts={}
+    n = opts[:num] || ThreadIndexMode::LOAD_MORE_THREAD_NUM
     load_n_threads_background n, :label => :inbox,
                                  :load_killed => false,
                                  :load_spam => false,
-                                 :when_done => lambda { |num|
+                                 :when_done => (lambda do |num|
+      opts[:when_done].call if opts[:when_done]
       BufferManager.flash "Added #{num} threads."
-    }
+    end)
   end
 
   def reload
     drop_all_threads
     BufferManager.draw_screen
-    load_more_threads buffer.content_height
+    load_more_threads :num => buffer.content_height
   end
 end
 
index 485c4d8333b3e961276c09029278f446bdecf214..6bd3aa7d024557ba566f4154237fa44d1a1f6f10 100644 (file)
@@ -81,7 +81,7 @@ protected
       b = BufferManager.spawn_unless_exists(label) do
         mode = LabelSearchResultsMode.new [label]
       end
-      b.mode.load_more_threads b.content_height
+      b.mode.load_more_threads :num => b.content_height
     end
   end
 end
index 3f49e277984eb921b22e1b140697ad28346832cd..34a094325beccab1bf3552913c8246efc12285a9 100644 (file)
@@ -12,11 +12,13 @@ class LabelSearchResultsMode < ThreadIndexMode
 
   def is_relevant? m; @labels.all? { |l| m.has_label? l }; end
 
-  def load_more_threads n=ThreadIndexMode::LOAD_MORE_THREAD_NUM
+  def load_more_threads opts={}
+    n = opts[:num] || ThreadIndexMode::LOAD_MORE_THREAD_NUM
     load_n_threads_background n, :labels => @labels,
                                  :load_killed => true,
                                  :load_spam => false,
                                  :when_done =>(lambda do |num|
+      opts[:when_done].call if opts[:when_done]
       if num > 0
         BufferManager.flash "Found #{num} threads"
       else
index 8fe3c30f5a421ba883362a183a131197c8cadc35..d2de8d33c4503d4dbd08fce94a47ecad8fa35d35 100644 (file)
@@ -12,11 +12,13 @@ class PersonSearchResultsMode < ThreadIndexMode
 
   def is_relevant? m; @people.any? { |p| m.from == p }; end
 
-  def load_more_threads n=ThreadIndexMode::LOAD_MORE_THREAD_NUM
+  def load_more_threads opts={}
+    n = opts[:num] || ThreadIndexMode::LOAD_MORE_THREAD_NUM
     load_n_threads_background n, :participants => @people,
                                  :load_killed => true,
                                  :load_spam => false,
                                  :when_done =>(lambda do |num|
+      opts[:when_done].call if opts[:when_done]
       if num > 0
         BufferManager.flash "Found #{num} threads"
       else
index ff83a5e6c9867eb74926887f1d6b45008f3a4b4a..1dbbadf3ed191ead8fb790b64b1c60e28635b07a 100644 (file)
@@ -13,11 +13,13 @@ class SearchResultsMode < ThreadIndexMode
   ## TODO: think about this
   def is_relevant? m; super; end
 
-  def load_more_threads n=ThreadIndexMode::LOAD_MORE_THREAD_NUM
+  def load_more_threads opts={}
+    n = opts[:num] || ThreadIndexMode::LOAD_MORE_THREAD_NUM
     load_n_threads_background n, :qobj => @qobj,
                                  :load_killed => true,
                                  :load_spam => false,
                                  :when_done =>(lambda do |num|
+      opts[:when_done].call if opts[:when_done]
       if num > 0
         BufferManager.flash "Found #{num} threads"
       else
index 81ff75261b1f91c8f1a2d3a63c36f2a5b4c805c2..17d9992d818506a181a4b99a9ca24d332c725d9a 100644 (file)
@@ -72,6 +72,7 @@ class ThreadIndexMode < LineCursorMode
   def handle_add_update m
     if is_relevant?(m) || @ts.is_relevant?(m)
       @ts.load_thread_for_message m
+      @new_cache.delete @ts.thread_for(m) # force recalculation of newness
       update
     end
   end