From d8d3eea2e4e39724ca227926664aa30697ed1a02 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Thu, 15 Jan 2009 20:41:07 +0000 Subject: change jabber server without sugar restart #142 --- (limited to 'extensions') diff --git a/extensions/cpsection/network/model.py b/extensions/cpsection/network/model.py index bfd008a..bfb9686 100644 --- a/extensions/cpsection/network/model.py +++ b/extensions/cpsection/network/model.py @@ -44,7 +44,24 @@ def set_jabber(server): """ client = gconf.client_get_default() client.set_string('/desktop/sugar/collaboration/jabber_server', server) - return 1 + + self._restart_jabber() + return 0 + +def _restart_jabber(): + """Call Sugar Presence Service to restart Telepathy CMs. + + This allows restarting the jabber server connection when we change it. + """ + _PS_SERVICE = "org.laptop.Sugar.Presence" + _PS_INTERFACE = "org.laptop.Sugar.Presence" + _PS_PATH = "/org/laptop/Sugar/Presence" + bus = dbus.SessionBus() + try: + ps = dbus.Interface(bus.get_object(_PS_SERVICE, _PS_PATH), _PS_INTERFACE) + except dbus.DBusException: + raise ReadError('%s service not available', _PS_SERVICE) + ps.RestartServerConnection() def get_radio(): bus = dbus.SystemBus() diff --git a/extensions/cpsection/network/view.py b/extensions/cpsection/network/view.py index 9a7f387..31a4f72 100644 --- a/extensions/cpsection/network/view.py +++ b/extensions/cpsection/network/view.py @@ -27,6 +27,8 @@ CLASS = 'Network' ICON = 'module-network' TITLE = _('Network') +_APPLY_TIMEOUT = 3000 + class Network(SectionView): def __init__(self, model, alerts): SectionView.__init__(self) @@ -214,7 +216,7 @@ class Network(SectionView): def __jabber_changed_cb(self, widget, data=None): if self._jabber_sid: gobject.source_remove(self._jabber_sid) - self._jabber_sid = gobject.timeout_add(self._APPLY_TIMEOUT, + self._jabber_sid = gobject.timeout_add(_APPLY_TIMEOUT, self.__jabber_timeout_cb, widget) def __jabber_timeout_cb(self, widget): @@ -223,17 +225,16 @@ class Network(SectionView): return try: self._model.set_jabber(widget.get_text()) - except ValueError, detail: + except ReadError, detail: self._jabber_alert.props.msg = detail self._jabber_valid = False + self._jabber_alert.show() + self.restart_alerts.append('jabber') else: - self._jabber_alert.props.msg = self.restart_msg self._jabber_valid = True - self.needs_restart = True - self.restart_alerts.append('jabber') + self._jabber_alert.hide() self._validate() - self._jabber_alert.show() return False def __network_configuration_reset_cb(self, widget): -- cgit v0.9.1