Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2006-06-19 19:12:56 (GMT)
committer Dan Williams <dcbw@redhat.com>2006-06-19 19:12:56 (GMT)
commit028f033344962f7a481adcf48aeecce9349b13d6 (patch)
tree7bfffd7edd67d5d4c0844ca71c267ef8ad2326d2 /sugar
parente7f9a0a72827dfdd175d2e25d1472654bcb552b7 (diff)
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.
Diffstat (limited to 'sugar')
-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)