Pulling in latest skeleton code
[theonering] / hand_tests / tp_accountmgr.py
1 #!/usr/bin/env python
2
3 import logging
4
5 import dbus
6 import telepathy
7
8
9 _moduleLogger = logging.getLogger(__name__)
10
11
12 DBUS_PROPERTIES = 'org.freedesktop.DBus.Properties'
13
14
15 class AccountManager(telepathy.client.interfacefactory.InterfaceFactory):
16
17         service_name = 'org.freedesktop.Telepathy.AccountManager'
18         object_path = '/org/freedesktop/Telepathy/AccountManager'
19
20         # Some versions of Mission Control are only activatable under this
21         # name, not under the generic AccountManager name
22         MC5_name = 'org.freedesktop.Telepathy.MissionControl5'
23         MC5_path = '/org/freedesktop/Telepathy/MissionControl5'
24
25         def __init__(self, bus=None):
26                 if not bus:
27                         bus = dbus.Bus()
28
29                 try:
30                         object = bus.get_object(self.service_name, self.object_path)
31                 except:
32                         raise
33                         # try activating MissionControl5 (ugly work-around)
34                         mc5 = bus.get_object(self.MC5_name, self.MC5_path)
35                         import time
36                         time.sleep(1)
37                         object = bus.get_object(self.service_name, self.object_path)
38                 telepathy.client.interfacefactory.InterfaceFactory.__init__(self, object, telepathy.interfaces.ACCOUNT_MANAGER)
39
40                 self[DBUS_PROPERTIES].Get(
41                         telepathy.interfaces.ACCOUNT_MANAGER,
42                         'Interfaces',
43                         reply_handler=self._on_get,
44                         error_handler=self._on_error,
45                 )
46
47         def _on_get(self, stuff):
48                 self.get_valid_interfaces().update(stuff)
49
50         def _on_error(self, *args):
51                 _moduleLogger.error(args)
52
53
54 if __name__ == '__main__':
55         import gobject
56         from dbus.mainloop.glib import DBusGMainLoop
57         DBusGMainLoop(set_as_default=True)
58
59         am = AccountManager()
60         print am[DBUS_PROPERTIES].Get(telepathy.interfaces.ACCOUNT_MANAGER, 'ValidAccounts')
61
62         gobject.MainLoop().run()