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
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, ConfigIP, ConfigEnableDisable
-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 = ConfigIP(default = [192,168,178,254])
-config.FritzCall.enable = ConfigEnableDisable()
+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 = """
<screen position="100,100" size="550,400" title="FritzCall Setup" >
<widget name="config" position="20,10" size="460,350" scrollbarMode="showOnDemand" />
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"
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):
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:
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()
self.d[1].disconnect()
self.d = None
-def main(session):
+def main(session, **kwargs):
session.open(FritzCallSetup)
fritz_call = None