From 028f033344962f7a481adcf48aeecce9349b13d6 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 19 Jun 2006 19:12:56 +0000 Subject: Need to change the activity service's name to the owners name before passing it along to the new activity that we're going to join. --- (limited to 'sugar') 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) -- cgit v0.9.1