Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/presence/Buddy.py17
-rw-r--r--sugar/presence/Buddy.py7
2 files changed, 18 insertions, 6 deletions
diff --git a/services/presence/Buddy.py b/services/presence/Buddy.py
index a98982e..a49b46a 100644
--- a/services/presence/Buddy.py
+++ b/services/presence/Buddy.py
@@ -88,9 +88,18 @@ class BuddyDBusHelper(dbus.service.Object):
return icon
@dbus.service.method(BUDDY_DBUS_INTERFACE,
- in_signature="s", out_signature="o")
- def getServiceOfType(self, stype):
- service = self._parent.get_service_of_type(stype)
+ in_signature="so", out_signature="o")
+ def getServiceOfType(self, stype, activity_op):
+ activity = None
+ # "/" is the placeholder for None
+ if activity_op != "/":
+ for act in self._parent.get_joined_activities():
+ if act.object_path() == activity_op:
+ activity = act
+ if not activity:
+ raise NotFoundError("Not found")
+
+ service = self._parent.get_service_of_type(stype, activity)
if not service:
raise NotFoundError("Not found")
return service.object_path()
@@ -357,7 +366,7 @@ class Buddy(object):
acts.append(act)
return acts
- def get_service_of_type(self, stype=None, activity=None):
+ def get_service_of_type(self, stype, activity=None):
"""Return a service of a certain type, or None if the buddy
doesn't provide that service."""
if not stype:
diff --git a/sugar/presence/Buddy.py b/sugar/presence/Buddy.py
index 6751c7c..579592b 100644
--- a/sugar/presence/Buddy.py
+++ b/sugar/presence/Buddy.py
@@ -172,9 +172,12 @@ class Buddy(gobject.GObject):
else:
return None
- def get_service_of_type(self, stype):
+ def get_service_of_type(self, stype, activity=None):
try:
- object_path = self._buddy.getServiceOfType(stype)
+ act_op = "/"
+ if activity:
+ act_op = activity.object_path()
+ object_path = self._buddy.getServiceOfType(stype, act_op)
except dbus.exceptions.DBusException:
return None
return self._ps_new_object(object_path)