Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2007-08-23 12:48:16 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-08-23 12:48:16 (GMT)
commitd2261e405136845217a8f769995ebeb832b9ffac (patch)
tree4bfae1c101c62e7e27935f1359cea93f7d84288f /sugar
parentd52860a764fdc0f488bfca924cd9eb39a8528960 (diff)
Fix sharing publicly
Diffstat (limited to 'sugar')
-rw-r--r--sugar/activity/activity.py2
-rw-r--r--sugar/presence/presenceservice.py29
2 files changed, 20 insertions, 11 deletions
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