diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-07-26 16:00:28 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-07-26 16:00:28 (GMT) |
commit | d778d45b13eb261d623d426097bf36bf6470a398 (patch) | |
tree | 3d59bdfaa215a27b33065b9dc75e6a03a6220ec6 /activities | |
parent | e1928878f9fd7bba493b10eacc726a470f531086 (diff) |
Load the current page when joining an active.
Get back page sharing to work.
Diffstat (limited to 'activities')
-rw-r--r-- | activities/browser/BrowserActivity.py | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/activities/browser/BrowserActivity.py b/activities/browser/BrowserActivity.py index 690eb06..c62ca71 100644 --- a/activities/browser/BrowserActivity.py +++ b/activities/browser/BrowserActivity.py @@ -57,19 +57,22 @@ class BrowserActivity(Activity): vbox.show() self._pservice = PresenceService() - self._pservice.connect('service-appeared', self._service_appeared_cb) - # Join the shared activity if we were started from one - if self._initial_service: - logging.debug("BrowserActivity joining shared activity %s" % - self._initial_service.get_activity_id()) - self._pservice.join_shared_activity(self._initial_service) + if service: + service.connect('service-appeared', self._service_appeared_cb) + + services = service.get_services_of_type('_web_olpc._udp') + if len(services) > 0: + self._notif_service = services[0] + + services = service.get_services_of_type(LocalModel.SERVICE_TYPE) + if len(services) > 0: + self._model_service = services[0] + + if self._notif_service and self._model_service: + self._listen_to_model() def _service_appeared_cb(self, pservice, service): - # Make sure the service is for our activity - if service.get_activity_id() != self._activity_id: - return - if service.get_type() == self._default_type: self._notif_service = service elif service.get_type() == LocalModel.SERVICE_TYPE: @@ -77,8 +80,12 @@ class BrowserActivity(Activity): self._model_service = service if not self._model and self._notif_service and self._model_service: - self._model = RemoteModel(self._model_service, self._notif_service) - self._model.add_listener(self.__shared_location_changed_cb) + self._listen_to_model() + + def _listen_to_model(self): + self._model = RemoteModel(self._model_service, self._notif_service) + self._model.add_listener(self.__shared_location_changed_cb) + self._go_to_shared_location() def _update_shared_location(self): address = self.embed.get_address() @@ -90,9 +97,12 @@ class BrowserActivity(Activity): if action_id == 'set_shared_location': self._update_shared_location() elif action_id == 'goto_shared_location': - address = self._model.get_value("address") - self.embed.load_address(address) - self._notif_bar.hide() + self._go_to_shared_location() + + def _go_to_shared_location(self): + address = self._model.get_value("address") + self.embed.load_address(address) + self._notif_bar.hide() def set_mode(self, mode): self._mode = mode @@ -125,7 +135,6 @@ class BrowserActivity(Activity): self.set_title(embed.get_title()) def __shared_location_changed_cb(self, model, key): - self.set_has_changes(True) self._notify_shared_location_change() def _notify_shared_location_change(self): |