From 4726bd0448cd8b64528f05be665b906ad8e6238a Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Wed, 22 Sep 2010 10:22:20 +0000 Subject: Connect to gabble immediatly when possible #10350 We make sure this happens after registration and when setting a new jabber server. --- diff --git a/src/presenceservice.py b/src/presenceservice.py index 84c3cc2..4fb6432 100644 --- a/src/presenceservice.py +++ b/src/presenceservice.py @@ -114,17 +114,7 @@ class PresenceService(ExportedGObject): self._connected_plugins = set() for tp in self._plugins: - self._handles_buddies[tp] = {} - self._activities_by_handle[tp] = {} - - tp.connect('status', self._tp_status_cb) - tp.connect('contacts-online', self._contacts_online) - tp.connect('contacts-offline', self._contacts_offline) - tp.connect('activity-invitation', - self._activity_invitation) - tp.connect('private-invitation', - self._private_invitation) - tp.connect('want-to-connect', self._want_to_connect) + self._setup_tp(tp) tp.start() self._contacts_online_queue = [] @@ -137,6 +127,19 @@ class PresenceService(ExportedGObject): self._bus_name = dbus.service.BusName(_PRESENCE_SERVICE, bus=self._session_bus) + def _setup_tp(self, tp): + self._handles_buddies[tp] = {} + self._activities_by_handle[tp] = {} + + tp.connect('status', self._tp_status_cb) + tp.connect('contacts-online', self._contacts_online) + tp.connect('contacts-offline', self._contacts_offline) + tp.connect('activity-invitation', + self._activity_invitation) + tp.connect('private-invitation', + self._private_invitation) + tp.connect('want-to-connect', self._want_to_connect) + @property def owner(self): return self._owner @@ -858,16 +861,20 @@ class PresenceService(ExportedGObject): self._server_plugin.sync_friends(keys) @dbus.service.method(PRESENCE_INTERFACE, in_signature="", - out_signature="") - def RestartServerConnection(self): - """Stop and restart the server_plugin. - - This allows changing jabber servers without restarting Sugar. - """ - if self._server_plugin: - if self._server_plugin.status == CONNECTION_STATUS_CONNECTED: - self._server_plugin.cleanup() - self._server_plugin.start() + out_signature="") + def RetryConnections(self): + """Reload configuration and retry connections on all managers.""" + if self._server_plugin is None: + server = self._owner.get_server() + if server and len(server): + tp = ServerPlugin(self._registry, self._owner) + self._setup_tp(tp) + self._server_plugin = tp + self._plugins.append(self._server_plugin) + + for tp in self._plugins: + tp.reload_account_info() + tp.start() def main(test_num=0, randomize=False): loop = gobject.MainLoop() diff --git a/src/telepathy_plugin.py b/src/telepathy_plugin.py index 5aca07e..8ad211c 100644 --- a/src/telepathy_plugin.py +++ b/src/telepathy_plugin.py @@ -153,6 +153,9 @@ class TelepathyPlugin(gobject.GObject): self._ip4am_sigid = self._ip4am.connect('address-changed', self._ip4_address_changed_cb) + def reload_account_info(self): + self._account = self._get_account_info() + @property def status(self): """Return the Telepathy connection status.""" -- cgit v0.9.1