Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/shell/StartPage.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar/shell/StartPage.py')
-rw-r--r--sugar/shell/StartPage.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/sugar/shell/StartPage.py b/sugar/shell/StartPage.py
index 518315e..5251b0e 100644
--- a/sugar/shell/StartPage.py
+++ b/sugar/shell/StartPage.py
@@ -92,6 +92,8 @@ class ActivitiesModel(gtk.ListStore):
class ActivitiesView(gtk.TreeView):
def __init__(self, model):
gtk.TreeView.__init__(self, model)
+
+ self._owner = None
self.set_headers_visible(False)
@@ -130,7 +132,10 @@ class ActivitiesView(gtk.TreeView):
cell.set_property('markup', markup)
cell.set_property('ellipsize', pango.ELLIPSIZE_END)
-
+
+ def set_owner(self, owner):
+ self._owner = owner
+
def _row_activated_cb(self, treeview, path, column):
bus = dbus.SessionBus()
proxy_obj = bus.get_object('com.redhat.Sugar.Browser', '/com/redhat/Sugar/Browser')
@@ -145,7 +150,9 @@ class ActivitiesView(gtk.TreeView):
if service is None:
browser_shell.open_browser(address)
else:
- serialized_service = service.serialize()
+ if not self._owner:
+ raise RuntimeError("We don't have an owner yet!")
+ serialized_service = service.serialize(self._owner)
browser_shell.open_browser(address, serialized_service)
class StartPage(gtk.HBox):
@@ -161,6 +168,8 @@ class StartPage(gtk.HBox):
self._pservice = PresenceService.get_instance()
self._pservice.connect("activity-announced", self._on_activity_announced_cb)
self._pservice.connect("new-service-adv", self._on_new_service_adv_cb)
+ self._pservice.connect("buddy-appeared", self._on_buddy_appeared_cb)
+ self._pservice.connect("buddy-disappeared", self._on_buddy_disappeared_cb)
self._pservice.start()
self._pservice.track_service_type(BrowserActivity._BROWSER_ACTIVITY_TYPE)
@@ -222,6 +231,7 @@ class StartPage(gtk.HBox):
self._activities_model = ActivitiesModel()
+ owner = self._pservice.get_owner()
self._activities = ActivitiesView(self._activities_model)
sw.add(self._activities)
self._activities.show()
@@ -245,6 +255,14 @@ class StartPage(gtk.HBox):
if activity_id:
self._pservice.track_service_type(short_stype)
+ def _on_buddy_appeared_cb(self, pservice, buddy):
+ if buddy.is_owner():
+ self._activities.set_owner(buddy)
+
+ def _on_buddy_disappeared_cb(self, pservice, buddy):
+ if buddy.is_owner() and self._owner == buddy:
+ self._activities.set_owner(None)
+
def _on_activity_announced_cb(self, pservice, service, buddy):
print "Found new activity with type %s" % service.get_full_type()
self._activities_model.add_activity(buddy, service)