diff options
author | Dan Williams <dcbw@redhat.com> | 2006-06-15 21:05:44 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2006-06-15 21:05:44 (GMT) |
commit | 9034dc8f3b926ff8e3e9773966c38ad3b8506340 (patch) | |
tree | be6ee249d77d4c54f435ed3da66d58105b0eccbe /sugar/browser | |
parent | 97881ae7c008d753eab591246eb2c46000323fa8 (diff) |
More fixes for sharing activities
Diffstat (limited to 'sugar/browser')
-rw-r--r-- | sugar/browser/BrowserActivity.py | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/sugar/browser/BrowserActivity.py b/sugar/browser/BrowserActivity.py index aa06dfb..7171100 100644 --- a/sugar/browser/BrowserActivity.py +++ b/sugar/browser/BrowserActivity.py @@ -8,8 +8,12 @@ import urllib from sugar.shell import activity from sugar.browser import NotificationBar from sugar.browser import NavigationToolbar +from sugar.presence.PresenceService import PresenceService + _BROWSER_ACTIVITY_TYPE = "_web_browser_olpc._udp" +_SERVICE_URI_TAG = "URI" +_SERVICE_TITLE_TAG = "Title" class BrowserActivity(activity.Activity): SOLO = 1 @@ -20,6 +24,11 @@ class BrowserActivity(activity.Activity): activity.Activity.__init__(self) self.uri = uri self._mode = BrowserActivity.SOLO + self._pservice = PresenceService.get_instance() + self._pservice.start() + self._pservice.track_service_type(_BROWSER_ACTIVITY_TYPE) + self._share_service = None + self._model = None def _update_shared_location(self): address = self.embed.get_address() @@ -46,10 +55,11 @@ class BrowserActivity(activity.Activity): self._notif_bar.show() def _setup_shared(self, uri): - self._model = self._group.get_store().get_model(uri) - if self._model: - self.set_mode(BrowserActivity.FOLLOWING) - self._model.add_listener(self.__shared_location_changed_cb) + if False: + self._model = self._group.get_store().get_model(uri) + if self._model: + self.set_mode(BrowserActivity.FOLLOWING) + self._model.add_listener(self.__shared_location_changed_cb) def on_connected_to_shell(self): self.set_ellipsize_tab(True) @@ -90,20 +100,27 @@ class BrowserActivity(activity.Activity): return self.embed def share(self): - url = self.embed.get_address() - self._model = self._group.get_store().create_model(url) - self._model.set_value('owner', self._group.get_owner().get_nick_name()) - self._update_shared_location() - self.set_mode(BrowserActivity.LEADING) - - bus = dbus.SessionBus() - proxy_obj = bus.get_object('com.redhat.Sugar.Chat', '/com/redhat/Sugar/Chat') - chat_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.ChatShell') - escaped_title = urllib.quote(self.embed.get_title()) - escaped_url = urllib.quote(url) - chat_shell.send_text_message('<richtext><link href="' + escaped_address + - '">' + escaped_title + '</link></richtext>') + escaped_url = urllib.quote(self.embed.get_address()) + + # Publish ourselves on the network + properties = {_SERVICE_URI_TAG: escaped_url, _SERVICE_TITLE_TAG: escaped_title} + self._share_service = self._pservice.share_activity(self, + stype=_BROWSER_ACTIVITY_TYPE, properties=properties) + + if False: + # Create our activity-specific browser sharing service + self._model = self._group.get_store().create_model(url) + self._model.set_value('owner', self._pservice.get_owner().get_nick_name()) + self._update_shared_location() + self.set_mode(BrowserActivity.LEADING) + + bus = dbus.SessionBus() + proxy_obj = bus.get_object('com.redhat.Sugar.Chat', '/com/redhat/Sugar/Chat') + chat_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.ChatShell') + + chat_shell.send_text_message('<richtext><link href="' + escaped_address + + '">' + escaped_title + '</link></richtext>') def __title_cb(self, embed): self.set_tab_text(embed.get_title()) |