+ def set_presence(self, status):
+ if status == self.ONLINE:
+ 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.set_dnd(True)
+ elif status == self.OFFLINE:
+ self.Disconnect()
+ else:
+ raise telepathy.errors.InvalidArgument("Unsupported status: %r" % status)
+ _moduleLogger.info("Setting Presence to '%s'" % status)
+
+
+class SimplePresenceMixin(tp.ConnectionInterfaceSimplePresence, TheOneRingPresence):
+
+ def __init__(self):
+ tp.ConnectionInterfaceSimplePresence.__init__(self)
+ TheOneRingPresence.__init__(self)
+
+ self._implement_property_get(
+ tp.CONNECTION_INTERFACE_SIMPLE_PRESENCE,
+ {'Statuses' : self._get_statuses}
+ )
+
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def GetPresences(self, contacts):
+ """
+ @return {ContactHandle: (Status, Presence Type, Message)}
+ """
+ personalMessage = u""
+ return dict(
+ (h, (presenceType, presence, personalMessage))
+ for (h, (presenceType, presence)) in self.get_presences(contacts).iteritems()
+ )
+