Adding option to log to a debug text channel
[theonering] / src / simple_presence.py
index 9c7f64e..c71a5c2 100644 (file)
@@ -1,14 +1,15 @@
 import logging
 
+import dbus
 import telepathy
 
-import gtk_toolbox
+import util.misc as misc_utils
 import tp
 import handle
 import gvoice.state_machine as state_machine
 
 
-_moduleLogger = logging.getLogger("simple_presence")
+_moduleLogger = logging.getLogger(__name__)
 
 
 class TheOneRingPresence(object):
@@ -20,10 +21,10 @@ class TheOneRingPresence(object):
        OFFLINE = 'offline'
 
        TO_PRESENCE_TYPE = {
-               ONLINE: telepathy.constants.CONNECTION_PRESENCE_TYPE_AVAILABLE,
-               AWAY: telepathy.constants.CONNECTION_PRESENCE_TYPE_AWAY,
-               HIDDEN: telepathy.constants.CONNECTION_PRESENCE_TYPE_HIDDEN,
-               OFFLINE: telepathy.constants.CONNECTION_PRESENCE_TYPE_OFFLINE,
+               ONLINE: dbus.UInt32(telepathy.constants.CONNECTION_PRESENCE_TYPE_AVAILABLE),
+               AWAY: dbus.UInt32(telepathy.constants.CONNECTION_PRESENCE_TYPE_AWAY),
+               HIDDEN: dbus.UInt32(telepathy.constants.CONNECTION_PRESENCE_TYPE_HIDDEN),
+               OFFLINE: dbus.UInt32(telepathy.constants.CONNECTION_PRESENCE_TYPE_OFFLINE),
        }
 
        @property
@@ -66,7 +67,7 @@ class TheOneRingPresence(object):
                                                raise telepathy.errors.InvalidArgument("Unsupported state on the state machine: %s" % state)
                                presenceType = TheOneRingPresence.TO_PRESENCE_TYPE[presence]
                        else:
-                               presence = TheOneRingPresence.ONLINE
+                               presence = TheOneRingPresence.AWAY
                                presenceType = TheOneRingPresence.TO_PRESENCE_TYPE[presence]
 
                        presences[h] = (presenceType, presence)
@@ -98,18 +99,21 @@ class SimplePresenceMixin(tp.ConnectionInterfaceSimplePresence, TheOneRingPresen
                        {'Statuses' : self._get_statuses}
                )
 
-       @gtk_toolbox.log_exception(_moduleLogger)
+       @misc_utils.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()
+               return dbus.Dictionary(
+                       (
+                               (h, dbus.Struct((presenceType, presence, personalMessage), signature="uss"))
+                               for (h, (presenceType, presence)) in self.get_presences(contacts).iteritems()
+                       ),
+                       signature="u(uss)"
                )
 
-       @gtk_toolbox.log_exception(_moduleLogger)
+       @misc_utils.log_exception(_moduleLogger)
        def SetPresence(self, status, message):
                if message:
                        raise telepathy.errors.InvalidArgument("Messages aren't supported")