From cc7011b724b6e0e03abb867a2e89e65a55fb2861 Mon Sep 17 00:00:00 2001
From: Anna <annabuches@gmail.com>
Date: Wed, 26 May 2010 00:14:56 -0400
Subject: [PATCH] Status icon flashes on new tweets

---
 apithreads.py     |  3 ++-
 hrafn.py          | 20 ++++++++++++--------
 twitterwidgets.py |  8 ++++----
 3 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/apithreads.py b/apithreads.py
index 9e640c4..04768be 100644
--- a/apithreads.py
+++ b/apithreads.py
@@ -270,7 +270,7 @@ class GetUserLists(ApiThread):
                     lists = self.api.GetUserLists()
             except (HTTPError, URLError) as exception:
                 print 'debug: GetUserLists had error: ' + str(exception.code)
-                sleep(5)
+                sleep(30)
                 done = False
 
         self.sig_proxy.emit('lists-ready', lists, None)
@@ -424,6 +424,7 @@ def results_to_statuses(results, api):
         status.user.screen_name = result.from_user
         status.user.name = ''
         status.user.profile.image_url = result.profile_image_url
+        status.in_reply_to_status_id = None
         status.in_reply_to_screen_name = result.to_user
         # The Twitter Search API has different timestamps than the
         # REST API... balls
diff --git a/hrafn.py b/hrafn.py
index c061570..1ce6262 100755
--- a/hrafn.py
+++ b/hrafn.py
@@ -329,8 +329,8 @@ class Hrafn():
             entries=1
 
         new_pane = TweetPane(name, num_entries=entries, single_tweet=single_tweet, is_user=is_user, conversation=conversation)
-        new_pane.connect('new-tweets', self.on_new_tweets)
-        new_pane.connect('tweets-read', self.on_tweets_read)
+        new_pane.connect('new-tweets', self.on_read_tweets_changed)
+        new_pane.connect('tweets-read', self.on_read_tweets_changed)
 
         if is_user:
             new_pane.connect('at-clicked', self.on_at_button_clicked)
@@ -627,12 +627,16 @@ class Hrafn():
             config_filehandle.close()
 
 
-    def on_new_tweets(self, widget, num_tweets):
-        pass
-
-
-    def on_tweets_read(self, widget, num_tweets):
-        pass
+    def on_read_tweets_changed(self, widget):
+        unread_tweets = 0
+        for i in range(self.tweet_notebook.get_n_pages()):
+            pane = self.tweet_notebook.get_nth_page(i)
+            unread_tweets += pane.num_new_tweets
+            
+        if unread_tweets > 0:
+            self.tray_icon.set_property('blinking', True)
+        else:
+            self.tray_icon.set_property('blinking', False)
 
 ### end class Hrafn
 
diff --git a/twitterwidgets.py b/twitterwidgets.py
index 46ce54c..37e21fd 100644
--- a/twitterwidgets.py
+++ b/twitterwidgets.py
@@ -124,7 +124,7 @@ class TweetPane(gtk.ScrolledWindow):
                 self.tweets[i].hide()
 
         if self.num_new_tweets > 0:
-            self.emit('new-tweets', self.num_new_tweets)
+            self.emit('new-tweets')
 
         if len(statuses) == 0:
             self.message.set_label('There is no data to display')
@@ -161,7 +161,7 @@ class TweetPane(gtk.ScrolledWindow):
         self.last_tweet_read = self.latest_tweet
         self.num_new_tweets = 0
         self.update_tab_label()
-        self.emit('tweets-read', num_read)
+        self.emit('tweets-read')
 
 
 
@@ -239,10 +239,10 @@ gobject.signal_new("at-clicked", TweetPane,
                    gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
 gobject.signal_new("new-tweets", TweetPane,
                    gobject.SIGNAL_RUN_LAST,
-                   gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
+                   gobject.TYPE_NONE, ())
 gobject.signal_new("tweets-read", TweetPane,
                    gobject.SIGNAL_RUN_LAST,
-                   gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
+                   gobject.TYPE_NONE, ())