Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/activity
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-02-21 23:41:26 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-02-21 23:41:26 (GMT)
commit0d7bdeb20a6a807852a92aa5e854d1f5bfa9d82f (patch)
tree95c338942de476ef6b15b8bdf8804f824bd76600 /sugar/activity
parent0556d5f51f05e7effde34cfa7d0e977a5b204ef1 (diff)
Improve handle marshalling. Add an uri to the handle.
Diffstat (limited to 'sugar/activity')
-rw-r--r--sugar/activity/activityfactory.py2
-rw-r--r--sugar/activity/activityfactoryservice.py4
-rw-r--r--sugar/activity/activityhandle.py31
3 files changed, 26 insertions, 11 deletions
diff --git a/sugar/activity/activityfactory.py b/sugar/activity/activityfactory.py
index 6878103..6148466 100644
--- a/sugar/activity/activityfactory.py
+++ b/sugar/activity/activityfactory.py
@@ -60,7 +60,7 @@ class ActivityCreationHandler(gobject.GObject):
proxy_obj = bus.get_object(service_name, bundle.get_object_path())
factory = dbus.Interface(proxy_obj, "com.redhat.Sugar.ActivityFactory")
- factory.create(str(self._activity_handle),
+ factory.create(self._activity_handle.get_dict(),
reply_handler=self._reply_handler,
error_handler=self._error_handler)
diff --git a/sugar/activity/activityfactoryservice.py b/sugar/activity/activityfactoryservice.py
index e520010..82fae4a 100644
--- a/sugar/activity/activityfactoryservice.py
+++ b/sugar/activity/activityfactoryservice.py
@@ -48,9 +48,9 @@ class ActivityFactoryService(dbus.service.Object):
object_path = '/' + service_name.replace('.', '/')
dbus.service.Object.__init__(self, bus_name, object_path)
- @dbus.service.method("com.redhat.Sugar.ActivityFactory")
+ @dbus.service.method("com.redhat.Sugar.ActivityFactory", in_signature="a{ss}")
def create(self, handle):
- activity_handle = activityhandle.create_from_string(handle)
+ activity_handle = activityhandle.create_from_dict(handle)
activity = self._constructor(activity_handle)
self._activities.append(activity)
diff --git a/sugar/activity/activityhandle.py b/sugar/activity/activityhandle.py
index f9d1f30..24c9d67 100644
--- a/sugar/activity/activityhandle.py
+++ b/sugar/activity/activityhandle.py
@@ -21,14 +21,29 @@ class ActivityHandle(object):
def __init__(self, activity_id):
self.activity_id = activity_id
self.pservice_id = None
+ self.uri = None
- def __str__(self):
- return self.activity_id
+ def get_presence_service(self):
+ if self.pservice_id:
+ pservice = PresenceService.get_instance()
+ return pservice.get_activity(self.pservice_id)
+ else:
+ return None
- def get_presence_service():
- pservice = PresenceService.get_instance()
- return pservice.get_activity(self._pservice_id)
+ def get_dict(self):
+ result = { 'activity_id' : self.activity_id }
+ if self.pservice_id:
+ result['pservice_id'] = self.pservice_id
+ if self.uri:
+ result['uri'] = self.uri
-def create_from_string(handle):
- activity_handle = ActivityHandle(handle)
- activity_handle.pservice_id = handle
+ return result
+
+def create_from_dict(handle_dict):
+ result = ActivityHandle(handle_dict['activity_id'])
+ if handle_dict.has_key('pservice_id'):
+ result.pservice_id = handle_dict['pservice_id']
+ if handle_dict.has_key('uri'):
+ result.uri = handle_dict['uri']
+
+ return result