diff options
author | Dan Williams <dcbw@redhat.com> | 2007-04-13 20:27:58 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2007-04-13 20:27:58 (GMT) |
commit | 3abe79353afc83999f3850bd61bf3e7053559243 (patch) | |
tree | dea6f50633c924283d60e02a8c860962e1a91fda /sugar/activity/activity.py | |
parent | 17adb7b58beaecec626a830b14da780ef2cbee1a (diff) |
Asynchronize activity sharing on the client side
Diffstat (limited to 'sugar/activity/activity.py')
-rw-r--r-- | sugar/activity/activity.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index 5360253..a15c846 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -62,6 +62,7 @@ class Activity(Window, gtk.Container): self._activity_id = handle.activity_id self._pservice = presenceservice.get_instance() self._service = None + self._share_sigid = None service = handle.get_presence_service() if service: @@ -100,11 +101,20 @@ class Activity(Window, gtk.Container): self._service.join() self.present() + def _share_cb(self, ps, success, service, err): + self._pservice.disconnect(self._share_sigid) + if success: + logging.debug('Share of activity %s successful.' % self.get_id()) + self._service = service + self._shared = True + else: + logging.debug('Share of activity %s failed: %s.' % (self.get_id(), err)) + def share(self): - """Share the activity on the network.""" - logging.debug('Share activity %s on the network.' % self.get_id()) - self._service = self._pservice.share_activity(self) - self._shared = True + """Request that the activity be shared on the network.""" + logging.debug('Requesting share of activity %s.' % self.get_id()) + self._share_sigid = self._pservice.connect("activity-shared", self._share_cb) + self._pservice.share_activity(self) def execute(self, command, args): """Execute the given command with args""" |