diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-08-30 10:06:50 (GMT) |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-08-30 10:06:50 (GMT) |
commit | 319ef24bc7f41987bcd464cf34dc0746fcb9894d (patch) | |
tree | 8ad935670387b8810feab2dd3676b7af5fd80989 /src/presenceservice.py | |
parent | cc6191863f97a3995e7c616b539631c205350e89 (diff) |
Support mutable activity properties (name, tags, color, private).
If we're in an activity's local pending set, join the channel correctly.
Allow sending invitations using Activity.Invite().
Diffstat (limited to 'src/presenceservice.py')
-rw-r--r-- | src/presenceservice.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/presenceservice.py b/src/presenceservice.py index bc8d9e4..5f81fcf 100644 --- a/src/presenceservice.py +++ b/src/presenceservice.py @@ -174,6 +174,8 @@ class PresenceService(ExportedGObject): if CONN_INTERFACE_BUDDY_INFO in conn: def buddy_activities_changed(contact, activities): + _logger.debug('ActivitiesChanged on %s: (%u, %r)', tp, + contact, activities) self._buddy_activities_changed(tp, contact, activities) m = conn[CONN_INTERFACE_BUDDY_INFO].connect_to_signal( 'ActivitiesChanged', buddy_activities_changed) @@ -255,6 +257,18 @@ class PresenceService(ExportedGObject): for match in matches: match.remove() + def get_buddy_by_path(self, path): + """Get the Buddy object corresponding to an object-path, or None. + + :Parameters: + path : dbus.ObjectPath + The object-path of a buddy + :Returns: a Buddy object or None + """ + if not path.startswith(BUDDY_PATH): + return None + return self._buddies.get(path[len(BUDDY_PATH):]) + def get_buddy(self, objid): buddy = self._buddies.get(objid) if buddy is None: @@ -373,6 +387,8 @@ class PresenceService(ExportedGObject): handle_error(e, 'fetching current activity') def got_activities(activities): gobject.idle_add(self._run_contacts_online_queue) + _logger.debug('GetActivities() returned on %s contact %u: %r', + tp, contact, activities) self._buddy_activities_changed(tp, contact, activities) def get_activities(): try: @@ -473,8 +489,6 @@ class PresenceService(ExportedGObject): def _buddy_activities_changed(self, tp, contact_handle, activities): activities = dict(activities) - _logger.debug("Handle %s activities changed: %s", contact_handle, - activities) buddies = self._handles_buddies[tp] buddy = buddies.get(contact_handle) @@ -747,7 +761,8 @@ class PresenceService(ExportedGObject): activity = Activity(self._session_bus, objid, self, self._get_preferred_plugin(), 0, id=actid, type=atype, - name=name, color=color, local=True) + name=name, color=color, local=True, + private=private) activity.connect("validity-changed", self._activity_validity_changed_cb) activity.connect("disappeared", self._activity_disappeared_cb) |