From 3c11feca6f74d8bd6e45fefcac9d7e1ef5a9e02f Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 21 Sep 2006 16:49:25 -0400 Subject: [PATCH] Start trying to deal with current activity changes --- shell/model/BuddyModel.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/shell/model/BuddyModel.py b/shell/model/BuddyModel.py index b6a65dc4..0d36a4e2 100644 --- a/shell/model/BuddyModel.py +++ b/shell/model/BuddyModel.py @@ -6,6 +6,10 @@ class BuddyModel: if buddy: self.set_name(buddy.get_name()) self.set_color(buddy.get_color()) + self._buddy = buddy + self._cur_activity = None + self._pservice = PresenceService.get_instance() + self._pservice.connect('buddy-appeared', self.__buddy_appeared_cb) def set_name(self, name): self._name = name @@ -20,5 +24,18 @@ class BuddyModel: return self._color def get_buddy(self): - pservice = PresenceService.get_instance() - return pservice.get_buddy_by_name(self._name) + if not self._buddy: + self._buddy = self._pservice.get_buddy_by_name(self._name) + if self._buddy: + self._buddy.connect('property-changed', + self.__buddy_property_changed_cb) + return self._buddy + + def __buddy_appeared_cb(self, pservice, buddy): + if not self._buddy and buddy.get_name() == self._name: + self.get_buddy() + + def __buddy_property_changed_cb(self, buddy, keys): + curact = self._buddy.get_current_activity() + self._cur_activity = self._pservice.get_activity(curact) +