X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c2028c9cf56b0c23813bcbf0fae06f3123bbadd0..5b374e685f27bd083343c943ea715e02679ac028:/lib/python/Plugins/Extensions/FritzCall/plugin.py diff --git a/lib/python/Plugins/Extensions/FritzCall/plugin.py b/lib/python/Plugins/Extensions/FritzCall/plugin.py index 9d20f415..be76f79e 100644 --- a/lib/python/Plugins/Extensions/FritzCall/plugin.py +++ b/lib/python/Plugins/Extensions/FritzCall/plugin.py @@ -1,7 +1,6 @@ from Screens.Screen import Screen from Screens.MessageBox import MessageBox -from Components.ActionMap import NumberActionMap -from Components.Label import Label +from Components.ActionMap import ActionMap from Plugins.Plugin import PluginDescriptor from Tools import Notifications @@ -9,18 +8,16 @@ from twisted.internet import reactor from twisted.internet.protocol import ReconnectingClientFactory from twisted.protocols.basic import LineReceiver -from enigma import eTimer - my_global_session = None -from Components.config import config, ConfigSubsection, configElement, configSequence, getConfigListEntry, configsequencearg, configElementBoolean -from Components.ConfigList import ConfigList +from Components.config import config, ConfigSubsection, ConfigIP, ConfigEnableDisable, getConfigListEntry +from Components.ConfigList import ConfigListScreen -config.FritzCall = ConfigSubsection() -config.FritzCall.hostname = configElement("config.FritzCall.hostname", configSequence, [192,168,178,254], configsequencearg.get("IP")) -config.FritzCall.enable = configElementBoolean("config.FritzCall.enable", 0) +config.plugins.FritzCall = ConfigSubsection() +config.plugins.FritzCall.hostname = ConfigIP(default = [192,168,178,254]) +config.plugins.FritzCall.enable = ConfigEnableDisable(default = False) -class FritzCallSetup(Screen): +class FritzCallSetup(ConfigListScreen, Screen): skin = """ @@ -28,41 +25,22 @@ class FritzCallSetup(Screen): def __init__(self, session, args = None): - from Tools.BoundFunction import boundFunction - - print "screen init" Screen.__init__(self, session) self.onClose.append(self.abort) # nun erzeugen wir eine liste von elementen fuer die menu liste. self.list = [ ] - self.list.append(getConfigListEntry(_("Call monitoring"), config.FritzCall.enable)) - self.list.append(getConfigListEntry(_("Fritz!Box FON IP address"), config.FritzCall.hostname)) - self["config"] = ConfigList(self.list) + self.list.append(getConfigListEntry(_("Call monitoring"), config.plugins.FritzCall.enable)) + self.list.append(getConfigListEntry(_("Fritz!Box FON IP address"), config.plugins.FritzCall.hostname)) + ConfigListScreen.__init__(self, self.list) - # DO NOT ASK. - self["setupActions"] = NumberActionMap(["SetupActions"], + # DO NOT ASK. + self["setupActions"] = ActionMap(["SetupActions"], { - "left": boundFunction(self["config"].handleKey, config.key["prevElement"]), - "right": boundFunction(self["config"].handleKey, config.key["nextElement"]), - "1": self.keyNumberGlobal, - "2": self.keyNumberGlobal, - "3": self.keyNumberGlobal, - "4": self.keyNumberGlobal, - "5": self.keyNumberGlobal, - "6": self.keyNumberGlobal, - "7": self.keyNumberGlobal, - "8": self.keyNumberGlobal, - "9": self.keyNumberGlobal, - "0": self.keyNumberGlobal, "save": self.save, "cancel": self.cancel, "ok": self.save, - }, -1) - # FIX ME. - def keyNumberGlobal(self, number): - if self["config"].getCurrent()[1].parent.enabled == True: - self["config"].handleKey(config.key[str(number)]) + }, -2) def abort(self): print "aborting" @@ -91,16 +69,20 @@ class FritzProtocol(LineReceiver): a = line.split(';') (date, event) = a[0:2] + line = a[2] if event == "RING": phone = a[4] number = a[3] text = _("incoming call!\n%s calls on %s!") % (number, phone) timeout = 10 + elif event == "DISCONNECT": + Notifications.RemovePopup("FritzCall_%s" % line) + return else: return - Notifications.AddNotification(MessageBox, text, type=MessageBox.TYPE_INFO, timeout=timeout) + Notifications.AddPopup(text=text, type=MessageBox.TYPE_INFO, timeout=timeout, id="FritzCall_%s" % line) class FritzClientFactory(ReconnectingClientFactory): @@ -111,20 +93,20 @@ class FritzClientFactory(ReconnectingClientFactory): self.hangup_ok = False def startedConnecting(self, connector): - Notifications.AddNotification(MessageBox, _("Connecting to Fritz!Box..."), type=MessageBox.TYPE_INFO, timeout=2) - + Notifications.AddPopup(text=_("Connecting to Fritz!Box..."), type=MessageBox.TYPE_INFO, timeout=2, id="FritzCallConnect") + def buildProtocol(self, addr): - Notifications.AddNotification(MessageBox, _("Connected to Fritz!Box!"), type=MessageBox.TYPE_INFO, timeout=2) + Notifications.AddPopup(text=_("Connected to Fritz!Box!"), type=MessageBox.TYPE_INFO, timeout=2, id="FritzCallConnect") self.resetDelay() return FritzProtocol() - + def clientConnectionLost(self, connector, reason): if not self.hangup_ok: - Notifications.AddNotification(MessageBox, _("Disconnected from\nFritz!Box! (%s)\nretrying...") % reason.getErrorMessage(), type=MessageBox.TYPE_INFO, timeout=4) + Notifications.AddPopup(text=_("Disconnected from\nFritz!Box! (%s)\nretrying...") % reason.getErrorMessage(), type=MessageBox.TYPE_INFO, timeout=4, id="FritzCallConnect") ReconnectingClientFactory.clientConnectionLost(self, connector, reason) - + def clientConnectionFailed(self, connector, reason): - Notifications.AddNotification(MessageBox, _("Connection to Fritz!Box\nfailed! (%s)\nretrying...") % reason.getErrorMessage(), type=MessageBox.TYPE_INFO, timeout=4) + Notifications.AddPopup(text=_("Connection to Fritz!Box\nfailed! (%s)\nretrying...") % reason.getErrorMessage(), type=MessageBox.TYPE_INFO, timeout=4, id="FritzCallConnect") ReconnectingClientFactory.clientConnectionFailed(self, connector, reason) class FritzCall: @@ -135,9 +117,9 @@ class FritzCall: def connect(self): self.abort() - if config.FritzCall.enable.value: + if config.plugins.FritzCall.enable.value: f = FritzClientFactory() - self.d = (f, reactor.connectTCP("%d.%d.%d.%d" % tuple(config.FritzCall.hostname.value), 1012, f)) + self.d = (f, reactor.connectTCP("%d.%d.%d.%d" % tuple(config.plugins.FritzCall.hostname.value), 1012, f)) def shutdown(self): self.abort() @@ -149,7 +131,7 @@ class FritzCall: self.d[1].disconnect() self.d = None -def main(session): +def main(session, **kwargs): session.open(FritzCallSetup) fritz_call = None