X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fpresence.py;fp=src%2Fpresence.py;h=f078e27dd0beaf1d9056928bb437f6ec1fdedb95;hp=0000000000000000000000000000000000000000;hb=d0c410418ea6a64e3b6b72ba132a14bcaebbf771;hpb=68d1653679bdce47f008d9167a263dbb2259e91d diff --git a/src/presence.py b/src/presence.py new file mode 100644 index 0000000..f078e27 --- /dev/null +++ b/src/presence.py @@ -0,0 +1,50 @@ +import logging + +import telepathy + +import gtk_toolbox +import simple_presence +import gvoice.state_machine as state_machine + + +_moduleLogger = logging.getLogger('presence') + + +class PresenceMixin(telepathy.server.ConnectionInterfacePresence, simple_presence.TheOneRingPresence): + + def __init__(self): + telepathy.server.ConnectionInterfacePresence.__init__(self) + simple_presence.TheOneRingPresence.__init__(self) + + @gtk_toolbox.log_exception(_moduleLogger) + def GetStatuses(self): + # the arguments are in common to all on-line presences + arguments = {} + + return dict( + (localType, (telepathyType, True, True, arguments)) + for (localType, telepathyType) in self.TO_PRESENCE_TYPE.iteritems() + ) + + @gtk_toolbox.log_exception(_moduleLogger) + def RequestPresence(self, contactIds): + presences = self.__get_presences(contactIds) + self.PresenceUpdate(presences) + + @gtk_toolbox.log_exception(_moduleLogger) + def GetPresence(self, contactIds): + return self.__get_presences(contactIds) + + @gtk_toolbox.log_exception(_moduleLogger) + def SetStatus(self, statuses): + assert len(statuses) == 1 + status, arguments = statuses.items()[0] + assert len(arguments) == 0 + self.set_presence(status) + + def __get_presences(self, contacts): + arguments = {} + return dict( + (h, (0, {presence: arguments})) + for (h, (presenceType, presence)) in self.get_presences(contacts).iteritems() + )