import logging
+import dbus
import telepathy
try:
import util.go_utils as gobject_utils
import util.tp_utils as telepathy_utils
import util.misc as misc_utils
+import gvoice
-_moduleLogger = logging.getLogger("autogv")
+_moduleLogger = logging.getLogger(__name__)
class NewGVConversations(object):
# Maemo 4.1's RTComm opens a window for a chat regardless if a
# message is received or not, so we need to do some filtering here
mergedConv = conv.get_conversation(phoneNumber)
- unreadConvs = [
- conversation
- for conversation in mergedConv.conversations
- if not conversation.isRead and not conversation.isArchived
- ]
- if not unreadConvs:
+ newConversations = mergedConv.conversations
+ newConversations = gvoice.conversations.filter_out_read(newConversations)
+ newConversations = gvoice.conversations.filter_out_self(newConversations)
+ newConversations = list(newConversations)
+ if not newConversations:
continue
chan = self._connRef()._channel_manager.channel_for_props(props, signal=True)
return
conn = telepathy.client.Connection(serviceName, connObjectPath)
- chan = telepathy.client.Channel(serviceName, channelObjectPath)
+ try:
+ chan = telepathy.client.Channel(serviceName, channelObjectPath)
+ except dbus.exceptions.UnknownMethodException:
+ _moduleLogger.exception("Client might not have implemented a deprecated method")
+ return
missDetection = telepathy_utils.WasMissedCall(
bus, conn, chan, self._on_missed_call, self._on_error_for_missed
)
self._outstandingRequests.remove(missDetection)
+class TimedDisconnect(object):
+
+ def __init__(self, connRef):
+ self._connRef = connRef
+ self.__delayedDisconnect = gobject_utils.Timeout(self._on_delayed_disconnect)
+
+ def start(self):
+ 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)
+
+
class AutoDisconnect(object):
def __init__(self, connRef):
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()
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):
+ self.__enableSystemContactSupport.start()