diff options
author | Dan Williams <dcbw@localhost.localdomain> | 2006-09-21 20:49:25 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@localhost.localdomain> | 2006-09-21 20:49:25 (GMT) |
commit | 3c11feca6f74d8bd6e45fefcac9d7e1ef5a9e02f (patch) | |
tree | 0e2edd98e05389edd4e914069272b114f3c53825 /shell/model | |
parent | ab7ef75518c66a4a6060812f71c0e87a19f350aa (diff) |
Start trying to deal with current activity changes
Diffstat (limited to 'shell/model')
-rw-r--r-- | shell/model/BuddyModel.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/shell/model/BuddyModel.py b/shell/model/BuddyModel.py index b6a65dc..0d36a4e 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) + |