From d2261e405136845217a8f769995ebeb832b9ffac Mon Sep 17 00:00:00 2001 From: Morgan Collett Date: Thu, 23 Aug 2007 12:48:16 +0000 Subject: Fix sharing publicly --- diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index eea76a8..3f782b5 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -484,7 +484,7 @@ class Activity(Window, gtk.Container): (verb, self._activity_id)) self._share_id = self._pservice.connect("activity-shared", self._internal_share_cb) - self._pservice.share_activity(self, private) + self._pservice.share_activity(self, private=private) def _realize_cb(self, window): wm.set_bundle_id(window.window, self.get_service_name()) diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py index 238012d..f4f102d 100644 --- a/sugar/presence/presenceservice.py +++ b/sugar/presence/presenceservice.py @@ -371,12 +371,8 @@ 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, private=True): + def share_activity(self, activity, properties={}, 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 AdvertiseActivity method on the service to ask for the sharing of the given activity. Arranges to emit activity-shared @@ -389,20 +385,33 @@ class PresenceService(gobject.GObject): returns None """ actid = activity.get_id() + _logger.debug('XXXX in share_activity') # Ensure the activity is not already shared/joined for obj in self._objcache.values(): if not isinstance(object, Activity): continue if obj.props.id == actid or obj.props.joined: - raise RuntimeError("Activity %s is already shared." % actid) + raise RuntimeError("Activity %s is already shared." % + actid) atype = activity.get_service_name() name = activity.props.title - # 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)) + if private: + _logger.debug('XXXX private, so calling InviteActivity') + self._ps.InviteActivity(actid, atype, name, properties, + reply_handler=lambda *args: \ + self._share_activity_cb(activity, *args), + error_handler=lambda *args: \ + self._share_activity_error_cb(activity, *args)) + else: + # FIXME: Test, then make this AdvertiseActivity: + _logger.debug('XXXX not private, so calling ShareActivity') + self._ps.ShareActivity(actid, atype, name, properties, + reply_handler=lambda *args: \ + self._share_activity_cb(activity, *args), + error_handler=lambda *args: \ + self._share_activity_error_cb(activity, *args)) def get_preferred_connection(self): """Gets the preferred telepathy connection object that an activity -- cgit v0.9.1