diff options
Diffstat (limited to 'src/jarabe/model/neighborhood.py')
-rw-r--r-- | src/jarabe/model/neighborhood.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/jarabe/model/neighborhood.py b/src/jarabe/model/neighborhood.py index a7e43f0..6f73bfe 100644 --- a/src/jarabe/model/neighborhood.py +++ b/src/jarabe/model/neighborhood.py @@ -160,7 +160,8 @@ class _Account(gobject.GObject): 'activity-removed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([object])), 'buddy-added': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([object, object, object])), + gobject.TYPE_NONE, + ([object, object, object, object])), 'buddy-updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([object, object])), 'buddy-removed': (gobject.SIGNAL_RUN_FIRST, @@ -538,7 +539,7 @@ class _Account(gobject.GObject): def __got_buddy_info_cb(self, handle, nick, properties): logging.debug('_Account.__got_buddy_info_cb %r', properties) self.emit('buddy-added', self._buddy_handles[handle], nick, - properties.get('key', None)) + properties.get('key', None), handle) self.emit('buddy-updated', self._buddy_handles[handle], properties) def __get_contact_attributes_cb(self, attributes): @@ -589,7 +590,7 @@ class _Account(gobject.GObject): 'BuddyInfo.GetCurrentActivity'), timeout=_QUERY_DBUS_TIMEOUT) else: - self.emit('buddy-added', contact_id, nick, None) + self.emit('buddy-added', contact_id, nick, None, handle) def __got_activities_cb(self, buddy_handle, activities): logging.debug('_Account.__got_activities_cb %r %r', buddy_handle, @@ -812,7 +813,7 @@ class Neighborhood(gobject.GObject): if needs_reconnect: account.Reconnect() - def __buddy_added_cb(self, account, contact_id, nick, key): + def __buddy_added_cb(self, account, contact_id, nick, key, handle): logging.debug('__buddy_added_cb %r', contact_id) if contact_id in self._buddies: @@ -823,7 +824,8 @@ class Neighborhood(gobject.GObject): nick=nick, account=account.object_path, contact_id=contact_id, - key=key) + key=key, + handle=handle) self._buddies[contact_id] = buddy self.emit('buddy-added', buddy) @@ -948,6 +950,18 @@ class Neighborhood(gobject.GObject): def get_buddies(self): return self._buddies.values() + def get_buddy_by_key(self, key): + for buddy in self._buddies.values(): + if buddy.key == key: + return buddy + return None + + def get_buddy_by_handle(self, contact_handle): + for buddy in self._buddies.values(): + if not buddy.is_owner() and buddy.handle == contact_handle: + return buddy + return None + def get_activity(self, activity_id): return self._activities.get(activity_id, None) |