Adding in application alarm support
[gc-dialer] / src / led_handler.py
index 211036e..f1b6328 100755 (executable)
@@ -3,7 +3,7 @@
 import dbus
 
 
-class LedHandler(object):
+class _NokiaLedHandler(object):
 
        def __init__(self):
                self._bus = dbus.SystemBus()
@@ -19,6 +19,48 @@ class LedHandler(object):
                self._mceRequest.req_led_pattern_deactivate(self._ledPattern)
 
 
+class _NoLedHandler(object):
+
+       def __init__(self):
+               pass
+
+       def on(self):
+               pass
+
+       def off(self):
+               pass
+
+
+class LedHandler(object):
+
+       def __init__(self):
+               self._actual = None
+               self._isReal = False
+
+       def on(self):
+               self._lazy_init()
+               self._actual.on()
+
+       def off(self):
+               self._lazy_init()
+               self._actual.on()
+
+       @property
+       def isReal(self):
+               self._lazy_init()
+               self._isReal
+
+       def _lazy_init(self):
+               if self._actual is not None:
+                       return
+               try:
+                       self._actual = _NokiaLedHandler()
+                       self._isReal = True
+               except dbus.DBusException:
+                       self._actual = _NoLedHandler()
+                       self._isReal = False
+
+
 if __name__ == "__main__":
-       leds = LedHandler()
+       leds = _NokiaLedHandler()
        leds.off()