#!/usr/bin/env python
import os
+import time
import logging
import backend
self._masterStateMachine.append_machine(self._voicemailsStateMachine)
self._masterStateMachine.append_machine(self._textsStateMachine)
+ self._lastDndCheck = 0
+ self._cachedIsDnd = False
+
def load(self, path):
self._texts.load(os.sep.join((path, "texts.cache")))
self._voicemails.load(os.sep.join((path, "voicemails.cache")))
self.logout()
return False
+ def set_dnd(self, doNotDisturb):
+ self._backend.set_dnd(doNotDisturb)
+ self._cachedIsDnd = doNotDisturb
+
+ def is_dnd(self):
+ # To throttle checking with the server, use a 30s cache
+ newTime = time.time()
+ if self._lastDndCheck + 30 < newTime:
+ self._lasDndCheck = newTime
+ self._cachedIsDnd = self._backend.is_dnd()
+ return self._cachedIsDnd
+
@property
def backend(self):
"""
def get_presences(self, contactIds):
"""
- @bug On Maemo 5, the connection handle is being passed in a lot, forcing lots of downloads is the webpage for dnd
-
@return {ContactHandle: (Status, Presence Type, Message)}
"""
presences = {}
for handleId in contactIds:
h = self.get_handle_by_id(telepathy.HANDLE_TYPE_CONTACT, handleId)
if isinstance(h, handle.ConnectionHandle):
- isDnd = self.session.backend.is_dnd()
+ isDnd = self.session.is_dnd()
if isDnd:
presence = TheOneRingPresence.HIDDEN
else:
def set_presence(self, status):
if status == self.ONLINE:
- self.session.backend.set_dnd(False)
+ self.session.set_dnd(False)
self.session.stateMachine.set_state(state_machine.StateMachine.STATE_ACTIVE)
elif status == self.AWAY:
self.session.stateMachine.set_state(state_machine.StateMachine.STATE_IDLE)
elif status == self.HIDDEN:
- self.session.backend.set_dnd(True)
+ self.session.set_dnd(True)
elif status == self.OFFLINE:
self.Disconnect()
else: