Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-11 15:53:27 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-11 15:53:27 (GMT)
commitfdb9c57e659c8ff66479f80633e2305e3a56a686 (patch)
tree471557c94dd4c2472c2dc8e588d354c86133ae95
parent6ff3486f42437e8a758d2fc6fd1f723e176a20d3 (diff)
Handle invitations inside Activity.
-rw-r--r--shell/view/ActivityHost.py17
-rw-r--r--sugar/activity/activity.py14
-rw-r--r--sugar/activity/activityservice.py5
3 files changed, 26 insertions, 10 deletions
diff --git a/shell/view/ActivityHost.py b/shell/view/ActivityHost.py
index b22cd2b..c6c0853 100644
--- a/shell/view/ActivityHost.py
+++ b/shell/view/ActivityHost.py
@@ -64,16 +64,13 @@ class ActivityHost:
def get_model(self):
return self._model
- def invite(self, buddy):
- pservice = presenceservice.get_instance()
- activity = pservice.get_activity(self.get_id())
- if activity is None:
- logging.error('Invite failed, %s is unknown.' % self.get_id())
- activity.invite(buddy.get_buddy(), '', self._invite_response_cb)
-
- def _invite_response_cb(self, error):
- if error:
- logging.error('Invite failed: %s' % error)
+ def invite(self, buddy_model):
+ service = self._model.get_service()
+ if service:
+ buddy = buddy_model.get_buddy()
+ service.Invite(buddy.props.key)
+ else:
+ logging.error('Invite failed, activity service not ')
def present(self):
# wnck.Window.activate() expects a timestamp, but we don't
diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py
index 9e14088..af15e4e 100644
--- a/sugar/activity/activity.py
+++ b/sugar/activity/activity.py
@@ -543,6 +543,20 @@ class Activity(Window, gtk.Container):
# FIXME: some way to distinguish between share scopes
self._jobject.metadata['share-scope'] = SCOPE_NEIGHBORHOOD
+ def _invite_response_cb(self, error):
+ if error:
+ logging.error('Invite failed: %s' % error)
+
+ def invite(self, buddy_key):
+ if self._shared_activity is None:
+ return
+
+ buddy = self._pservice.get_buddy(buddy_key)
+ if buddy:
+ self._shared_activity.invite(buddy, '', self._invite_response_cb)
+ else:
+ logging.error('Cannot invite %s, no such buddy.' % buddy_key)
+
def share(self, private=False):
"""Request that the activity be shared on the network.
diff --git a/sugar/activity/activityservice.py b/sugar/activity/activityservice.py
index f2b3394..b2f7e15 100644
--- a/sugar/activity/activityservice.py
+++ b/sugar/activity/activityservice.py
@@ -59,3 +59,8 @@ class ActivityService(dbus.service.Object):
def SetActive(self, active):
logging.debug('ActivityService.set_active: %s.' % active)
self._activity.props.active = active
+
+ @dbus.service.method(_ACTIVITY_INTERFACE)
+ def Invite(self, buddy_key):
+ self._activity.invite(buddy_key)
+