Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-06-19 19:31:32 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-06-19 19:31:32 (GMT)
commit9c0669dde49344ade510e0c3c9780f864be2b8fd (patch)
tree5c774674f7a827528225860ae29a32d7b6745c18 /sugar
parent4cef4cb3bdf5620f2cdd956c52daa4a17e045171 (diff)
parent028f033344962f7a481adcf48aeecce9349b13d6 (diff)
Merge branch 'master' of git+ssh://crank.laptop.org/git/sugar
Diffstat (limited to 'sugar')
-rw-r--r--sugar/presence/PresenceService.py2
-rw-r--r--sugar/presence/Service.py7
-rw-r--r--sugar/shell/StartPage.py22
3 files changed, 27 insertions, 4 deletions
diff --git a/sugar/presence/PresenceService.py b/sugar/presence/PresenceService.py
index 7063b41..dc563b2 100644
--- a/sugar/presence/PresenceService.py
+++ b/sugar/presence/PresenceService.py
@@ -514,6 +514,8 @@ class PresenceService(gobject.GObject):
raise RuntimeError("presence service must be started first.")
rs_name = service.get_name()
+ if self.get_owner() and rs_name != self.get_owner().get_nick_name():
+ raise RuntimeError("Tried to register a service that didn't have Owner nick as the service name!")
rs_stype = service.get_full_type()
rs_port = service.get_port()
rs_props = service.get_properties()
diff --git a/sugar/presence/Service.py b/sugar/presence/Service.py
index e1232f6..e3885ad 100644
--- a/sugar/presence/Service.py
+++ b/sugar/presence/Service.py
@@ -143,9 +143,12 @@ class Service(object):
if uid and not self._properties.has_key(_ACTIVITY_UID_TAG):
self._properties[_ACTIVITY_UID_TAG] = uid
- def serialize(self):
+ def serialize(self, owner=None):
sdict = {}
- sdict['name'] = dbus.Variant(self._name)
+ if owner is not None:
+ sdict['name'] = dbus.Variant(owner.get_nick_name())
+ else:
+ sdict['name'] = dbus.Variant(self._name)
sdict['full_stype'] = dbus.Variant(self._full_stype)
sdict['activity_stype'] = dbus.Variant(self._activity_stype)
sdict['domain'] = dbus.Variant(self._domain)
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)