from Screen import Screen
-from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.ConfigList import ConfigListScreen
from Components.ActionMap import NumberActionMap
from Components.config import config, getConfigListEntry, ConfigNothing, NoSave, ConfigPIN
-from Components.ServiceList import ServiceList
from Components.ParentalControlList import ParentalControlEntryComponent, ParentalControlList
from Components.ParentalControl import parentalControl
+from Components.Sources.StaticText import StaticText
from Screens.ChoiceBox import ChoiceBox
from Screens.MessageBox import MessageBox
-from Screens.InputBox import InputBox, Input, PinInput
+from Screens.InputBox import PinInput
from Screens.ChannelSelection import service_types_tv
from Tools.BoundFunction import boundFunction
-from ServiceReference import ServiceReference
-from enigma import eServiceCenter, eServiceReference, eTimer
+from enigma import eServiceCenter, eTimer, eServiceReference
from operator import itemgetter
class ProtectedScreen:
def __init__(self, session):
Screen.__init__(self, session)
ProtectedScreen.__init__(self)
+ # for the skin: first try ParentalControlSetup, then Setup, this allows individual skinning
+ self.skinName = ["ParentalControlSetup", "Setup" ]
+ self.setup_title = _("Parental control setup")
+ self.onChangedEntry = [ ]
+
self.list = []
- ConfigListScreen.__init__(self, self.list)
+ ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry)
self.createSetup()
-
+
self["actions"] = NumberActionMap(["SetupActions"],
{
- "cancel": self.keyCancel
+ "cancel": self.keyCancel,
+ "save": self.keyCancel
}, -2)
+ self["key_red"] = StaticText(_("Cancel"))
+ self["key_green"] = StaticText(_("OK"))
+ self.onLayoutFinish.append(self.layoutFinished)
+
+ def layoutFinished(self):
+ self.setTitle(self.setup_title)
def isProtected(self):
- return config.ParentalControl.setuppinactive.value
-
+ return config.ParentalControl.setuppinactive.value and config.ParentalControl.configured.value
+
def createSetup(self):
self.editListEntry = None
self.changePin = None
self.changeSetupPin = None
-
+
self.list = []
self.list.append(getConfigListEntry(_("Enable parental control"), config.ParentalControl.configured))
print "config.ParentalControl.configured.value", config.ParentalControl.configured.value
#self.list.append(getConfigListEntry(_("Remember service pin"), config.ParentalControl.storeservicepin))
self.editListEntry = getConfigListEntry(_("Edit services list"), NoSave(ConfigNothing()))
self.list.append(self.editListEntry)
-
+
self["config"].list = self.list
self["config"].setList(self.list)
def keyNumberGlobal(self, number):
pass
+ # for summary:
+ def changedEntry(self):
+ for x in self.onChangedEntry:
+ x()
+
+ def getCurrentEntry(self):
+ return self["config"].getCurrent()[0]
+
+ def getCurrentValue(self):
+ return str(self["config"].getCurrent()[1].getText())
+
+ def createSummary(self):
+ from Screens.Setup import SetupSummary
+ return SetupSummary
SPECIAL_CHAR = 96
class ParentalControlEditor(Screen):
self.currentLetter = chr(SPECIAL_CHAR)
self.readServiceList()
self.chooseLetterTimer = eTimer()
- self.chooseLetterTimer.timeout.get().append(self.chooseLetter)
+ self.chooseLetterTimer.callback.append(self.chooseLetter)
self.onLayoutFinish.append(self.LayoutFinished)
self["actions"] = NumberActionMap(["DirectionActions", "ColorActions", "OkCancelActions", "NumberActions"],
if list is not None:
services = list.getContent("CN", True) #(servicecomparestring, name)
for s in services:
- if ord(s[1][0])==0xc2 and ord(s[1][1])==0x86: # ignore shortname brackets
- key = s[1].lower()[2]
- else:
- key = s[1].lower()[0]
+ key = s[1].lower()[0]
if key < 'a' or key > 'z':
key = chr(SPECIAL_CHAR)
#key = str(key)
if result is not None:
print "result:", result
self.currentLetter = result[1]
- self.list = []
- for x in self.servicesList[result[1]]:
- self.list.append(ParentalControlEntryComponent(x[0], x[1], parentalControl.getProtectionLevel(x[0]) != -1))
+ self.list = [ParentalControlEntryComponent(x[0], x[1], parentalControl.getProtectionLevel(x[0]) != -1) for x in self.servicesList[result[1]]]
self.servicelist.setList(self.list)
else:
parentalControl.save()
class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen):
def __init__(self, session, pin, pinname):
Screen.__init__(self, session)
+ # for the skin: first try ParentalControlChangePin, then Setup, this allows individual skinning
+ self.skinName = ["ParentalControlChangePin", "Setup" ]
+ self.setup_title = _("Change pin code")
+ self.onChangedEntry = [ ]
+
self.pin = pin
self.list = []
self.pin1 = ConfigPIN(default = 1111, censor = "*")
self.pin2 = ConfigPIN(default = 1112, censor = "*")
+ self.pin1.addEndNotifier(boundFunction(self.valueChanged, 1))
+ self.pin2.addEndNotifier(boundFunction(self.valueChanged, 2))
self.list.append(getConfigListEntry(_("New pin"), NoSave(self.pin1)))
self.list.append(getConfigListEntry(_("Reenter new pin"), NoSave(self.pin2)))
- ConfigListScreen.__init__(self, self.list)
+ ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry)
# print "old pin:", pin
#if pin.value != "aaaa":
#self.onFirstExecBegin.append(boundFunction(self.session.openWithCallback, self.pinEntered, PinInput, pinList = [self.pin.value], title = _("please enter the old pin"), windowTitle = _("Change pin code")))
ProtectedScreen.__init__(self)
-
+
self["actions"] = NumberActionMap(["DirectionActions", "ColorActions", "OkCancelActions"],
{
"cancel": self.cancel,
+ "red": self.cancel,
+ "save": self.keyOK,
}, -1)
+ self["key_red"] = StaticText(_("Cancel"))
+ self["key_green"] = StaticText(_("OK"))
+ self.onLayoutFinish.append(self.layoutFinished)
+
+ def layoutFinished(self):
+ self.setTitle(self.setup_title)
+
+ def valueChanged(self, pin, value):
+ if pin == 1:
+ self["config"].setCurrentIndex(1)
+ elif pin == 2:
+ self.keyOK()
def getPinText(self):
return _("Please enter the old pin code")
def keyNumberGlobal(self, number):
ConfigListScreen.keyNumberGlobal(self, number)
+ # for summary:
+ def changedEntry(self):
+ for x in self.onChangedEntry:
+ x()
+
+ def getCurrentEntry(self):
+ return self["config"].getCurrent()[0]
+
+ def getCurrentValue(self):
+ return str(self["config"].getCurrent()[1].getText())
+
+ def createSummary(self):
+ from Screens.Setup import SetupSummary
+ return SetupSummary