Merge branch 'master' of git+ssh://crank.laptop.org/git/sugar
This commit is contained in:
commit
9c0669dde4
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user