Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2009-01-15 20:41:07 (GMT)
committer Simon Schampijer <simon@schampijer.de>2009-01-15 20:41:07 (GMT)
commitd8d3eea2e4e39724ca227926664aa30697ed1a02 (patch)
treee35809cdf197151df33be3aeb6e69a6d1dfa64c3 /extensions
parent6a801ecc636c9896186094e1f02cf8b4608ee6b9 (diff)
change jabber server without sugar restart #142
Diffstat (limited to 'extensions')
-rw-r--r--extensions/cpsection/network/model.py19
-rw-r--r--extensions/cpsection/network/view.py13
2 files changed, 25 insertions, 7 deletions
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):