Bump to 1.3.6
[gc-dialer] / src / led_handler.py
1 #!/usr/bin/env python
2
3 import dbus
4
5
6 class _NokiaLedHandler(object):
7
8         def __init__(self):
9                 self._bus = dbus.SystemBus()
10                 self._rawMceRequest = self._bus.get_object("com.nokia.mce", "/com/nokia/mce/request")
11                 self._mceRequest = dbus.Interface(self._rawMceRequest, dbus_interface="com.nokia.mce.request")
12
13                 self._ledPattern = "PatternCommunicationChat"
14
15         def on(self):
16                 self._mceRequest.req_led_pattern_activate(self._ledPattern)
17
18         def off(self):
19                 self._mceRequest.req_led_pattern_deactivate(self._ledPattern)
20
21
22 class _NoLedHandler(object):
23
24         def __init__(self):
25                 pass
26
27         def on(self):
28                 pass
29
30         def off(self):
31                 pass
32
33
34 class LedHandler(object):
35
36         def __init__(self):
37                 self._actual = None
38                 self._isReal = False
39
40         def on(self):
41                 self._lazy_init()
42                 self._actual.on()
43
44         def off(self):
45                 self._lazy_init()
46                 self._actual.off()
47
48         @property
49         def isReal(self):
50                 self._lazy_init()
51                 self._isReal
52
53         def _lazy_init(self):
54                 if self._actual is not None:
55                         return
56                 try:
57                         self._actual = _NokiaLedHandler()
58                         self._isReal = True
59                 except dbus.DBusException:
60                         self._actual = _NoLedHandler()
61                         self._isReal = False
62
63
64 if __name__ == "__main__":
65         leds = _NokiaLedHandler()
66         leds.off()