diff --git a/set_location/manifest.ini b/set_location/manifest.ini index 76377d1504b0825a29f898b82af03ad0e911f189..20f9ab34189bc8d4365d53c88bf44a720f261957 100644 --- a/set_location/manifest.ini +++ b/set_location/manifest.ini @@ -1,9 +1,8 @@ [info] name: Set Location short_name: set_location -version: 0.6 +version: 0.7 description: Set information about the current geographical or physical location. To be able to specify a location on the built-in card, you must install python-osmgpsmap > 0.5 authors: Denis Fomin <fominde@gmail.com> homepage: http://trac-plugins.gajim.org/wiki/SetLocalitionPlugin - diff --git a/set_location/set_location.py b/set_location/set_location.py index bbb91cd8c75a2a985c0ee57c35993b55abf7d325..1111cb92f34f5921f40d4854af7d8e00db8d72d8 100644 --- a/set_location/set_location.py +++ b/set_location/set_location.py @@ -10,6 +10,7 @@ from plugins.gui import GajimPluginConfigDialog from plugins import GajimPlugin from plugins.helpers import log, log_calls from common import gajim +from common import ged import gtkgui_helpers from dialogs import InputDialog, WarningDialog @@ -43,6 +44,22 @@ class SetLocationPlugin(GajimPlugin): @log_calls('SetLocationPlugin') def activate(self): + gajim.ged.register_event_handler('signed-in', ged.POSTGUI, + self.on_signed_in) + self.send_locations() + + @log_calls('SetLocationPlugin') + def deactivate(self): + self._data = {} + for acct in gajim.connections: + gajim.connections[acct].send_location(self._data) + gajim.ged.remove_event_handler('signed-in', ged.POSTGUI, + self.on_signed_in) + + def on_signed_in(self, network_event): + self.send_locations(network_event.conn.name) + + def send_locations(self, acct=False): self._data = {} timestamp = time.time() timestamp = datetime.utcfromtimestamp(timestamp) @@ -50,16 +67,13 @@ class SetLocationPlugin(GajimPlugin): self._data['timestamp'] = timestamp for name in self.config_default_values: self._data[name] = self.config[name] - for acct in gajim.connections: - if gajim.connections[acct].connected == 0: - gajim.connections[acct].to_be_sent_location = self._data - else: - gajim.connections[acct].send_location(self._data) - @log_calls('SetLocationPlugin') - def deactivate(self): - self._data = {} - for acct in gajim.connections: + if not acct: + #set geo for all accounts + for acct in gajim.connections: + if gajim.config.get_per('accounts', acct, 'publish_location'): + gajim.connections[acct].send_location(self._data) + elif gajim.config.get_per('accounts', acct, 'publish_location'): gajim.connections[acct].send_location(self._data)