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-22 14:54:12 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-08-22 14:54:12 (GMT)
commit52f2bea3ed542e65f22664b5c837280fdab6960d (patch)
tree505490315ac5996924743633fec98b362630ffd3 /sugar
parentd09b8d3ea43bb877c39e0f2e169cf3d885521ff2 (diff)
Use new PresenceService API for sharing by invitation only
Diffstat (limited to 'sugar')
-rw-r--r--sugar/activity/activity.py21
-rw-r--r--sugar/presence/presenceservice.py13
2 files changed, 24 insertions, 10 deletions
diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py
index 553b1a1..f63174a 100644
--- a/sugar/activity/activity.py
+++ b/sugar/activity/activity.py
@@ -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())
diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py
index 81835fc..238012d 100644
--- a/sugar/presence/presenceservice.py
+++ b/sugar/presence/presenceservice.py
@@ -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))