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.

This commit is contained in:
Dan Williams 2006-06-19 15:12:56 -04:00
parent e7f9a0a728
commit 028f033344

View File

@ -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)