Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/presenceservice.py
diff options
context:
space:
mode:
authorSimon 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)
commit319ef24bc7f41987bcd464cf34dc0746fcb9894d (patch)
tree8ad935670387b8810feab2dd3676b7af5fd80989 /src/presenceservice.py
parentcc6191863f97a3995e7c616b539631c205350e89 (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.py21
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)