Use new PresenceService API for sharing by invitation only

master
Morgan Collett 17 years ago
parent d09b8d3ea4
commit 52f2bea3ed

@ -448,13 +448,22 @@ class Activity(Window, gtk.Container):
self._shared_activity = activity
self.emit('shared')
def share(self):
"""Request that the activity be shared on the network."""
def share(self, private=False):
"""Request that the activity be shared on the network.
private -- bool: True to share by invitation only,
False to advertise as shared to everyone.
"""
# FIXME: Make private=True to turn on the by-invitation-only scope
if self._shared_activity and self._shared_activity.props.joined:
raise RuntimeError("Activity %s already shared." % self._activity_id)
logging.debug('Requesting share of activity %s.' % self._activity_id)
self._share_id = self._pservice.connect("activity-shared", self._internal_share_cb)
self._pservice.share_activity(self)
raise RuntimeError("Activity %s already shared." %
self._activity_id)
verb = private and 'private' or 'public'
logging.debug('Requesting %s share of activity %s.' %
(verb, self._activity_id))
self._share_id = self._pservice.connect("activity-shared",
self._internal_share_cb)
self._pservice.share_activity(self, private)
def _realize_cb(self, window):
wm.set_bundle_id(window.window, self.get_service_name())

@ -371,10 +371,14 @@ class PresenceService(gobject.GObject):
_logger.debug("Error sharing activity %s: %s" % (activity.get_id(), err))
self.emit("activity-shared", False, None, err)
def share_activity(self, activity, properties={}):
"""Ask presence service to ask the activity to share itself
def share_activity(self, activity, private=True):
"""Ask presence service to ask the activity to share itself publicly.
activity -- sugar.activity.activity.Activity instance
private -- bool: True to share by invitation only,
False to advertise as shared to everyone.
Uses the ShareActivity method on the service to ask for the
Uses the AdvertiseActivity method on the service to ask for the
sharing of the given activity. Arranges to emit activity-shared
event with:
@ -395,7 +399,8 @@ class PresenceService(gobject.GObject):
atype = activity.get_service_name()
name = activity.props.title
self._ps.ShareActivity(actid, atype, name, properties,
# FIXME: Test, then make this AdvertiseActivity:
self._ps.ShareActivity(actid, atype, name, private,
reply_handler=lambda *args: self._share_activity_cb(activity, *args),
error_handler=lambda *args: self._share_activity_error_cb(activity, *args))

Loading…
Cancel
Save