Imitiating buttfly in being explicitly typed
[theonering] / src / autogv.py
index b29990e..6a238c0 100644 (file)
@@ -108,6 +108,7 @@ class RefreshVoicemail(object):
 
                self._isStarted = False
 
+       @misc_utils.log_exception(_moduleLogger)
        def _on_new_channel(self, bus, serviceName, connObjectPath, channelObjectPath, channelType):
                if channelType != telepathy.interfaces.CHANNEL_TYPE_STREAMED_MEDIA:
                        return
@@ -147,11 +148,12 @@ class TimedDisconnect(object):
                self.__delayedDisconnect = gobject_utils.Timeout(self._on_delayed_disconnect)
 
        def start(self):
-               self.__delayedDisconnect.start(seconds=5)
+               self.__delayedDisconnect.start(seconds=20)
 
        def stop(self):
                self.__delayedDisconnect.cancel()
 
+       @misc_utils.log_exception(_moduleLogger)
        def _on_delayed_disconnect(self):
                _moduleLogger.info("Timed disconnect occurred")
                self._connRef().disconnect(telepathy.CONNECTION_STATUS_REASON_NETWORK_ERROR)
@@ -195,6 +197,7 @@ class AutoDisconnect(object):
                else:
                        _moduleLogger.info("Other status: %r" % (status, ))
 
+       @misc_utils.log_exception(_moduleLogger)
        def _cancel_delayed_disconnect(self):
                _moduleLogger.info("Cancelling auto-log off")
                self.__delayedDisconnect.cancel()
@@ -251,3 +254,25 @@ class DisconnectOnShutdown(object):
                        self._connRef().disconnect(telepathy.CONNECTION_STATUS_REASON_REQUESTED)
                except Exception:
                        _moduleLogger.exception("Error durring disconnect")
+
+
+class DelayEnableContactIntegration(object):
+
+       def __init__(self, protocolName):
+               self.__enableSystemContactSupport = telepathy_utils.EnableSystemContactIntegration(
+                       protocolName
+               )
+               self.__delayedEnable = gobject_utils.Async(self._on_delayed_enable)
+
+       def start(self):
+               self.__delayedEnable.start()
+
+       def stop(self):
+               self.__delayedEnable.cancel()
+
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_delayed_enable(self):
+               try:
+                       self.__enableSystemContactSupport.start()
+               except dbus.DBusException, e:
+                       _moduleLogger.info("Contact integration seems to not be supported (%s)" % e)