select directory on .. (and first entry otherewise) in Filelist, add getCurrentDirec...
[enigma2.git] / lib / python / Components / ParentalControl.py
index ac786fcd946d41c2d1518f196666964f6e3d27f3..b9c31c4b9eccbe11aa78703e92818df5029f98c8 100644 (file)
@@ -1,4 +1,4 @@
-from Components.config import config, ConfigSubsection, ConfigSelection, ConfigPIN, ConfigYesNo, ConfigSubList
+from Components.config import config, ConfigSubsection, ConfigSelection, ConfigPIN, ConfigYesNo, ConfigSubList, ConfigInteger
 from Components.Input import Input
 from Screens.InputBox import InputBox, PinInput
 from Screens.MessageBox import MessageBox
 from Components.Input import Input
 from Screens.InputBox import InputBox, PinInput
 from Screens.MessageBox import MessageBox
@@ -16,6 +16,14 @@ def InitParentalControl():
        config.ParentalControl.setuppinactive = ConfigYesNo(default = False)
        config.ParentalControl.type = ConfigSelection(default = "blacklist", choices = [("whitelist", _("whitelist")), ("blacklist", _("blacklist"))])
        config.ParentalControl.setuppin = ConfigPIN(default = -1)
        config.ParentalControl.setuppinactive = ConfigYesNo(default = False)
        config.ParentalControl.type = ConfigSelection(default = "blacklist", choices = [("whitelist", _("whitelist")), ("blacklist", _("blacklist"))])
        config.ParentalControl.setuppin = ConfigPIN(default = -1)
+       
+       config.ParentalControl.retries = ConfigSubsection()
+       config.ParentalControl.retries.setuppin = ConfigSubsection()
+       config.ParentalControl.retries.setuppin.tries = ConfigInteger(default = 3)
+       config.ParentalControl.retries.setuppin.time = ConfigInteger(default = 3)       
+       config.ParentalControl.retries.servicepin = ConfigSubsection()
+       config.ParentalControl.retries.servicepin.tries = ConfigInteger(default = 3)
+       config.ParentalControl.retries.servicepin.time = ConfigInteger(default = 3)
 #      config.ParentalControl.configured = configElement("config.ParentalControl.configured", configSelection, 1, (("yes", _("yes")), ("no", _("no"))))
        #config.ParentalControl.mode = configElement("config.ParentalControl.mode", configSelection, 0, (("simple", _("simple")), ("complex", _("complex"))))
        #config.ParentalControl.storeservicepin = configElement("config.ParentalControl.storeservicepin", configSelection, 0, (("never", _("never")), ("5_minutes", _("5 minutes")), ("30_minutes", _("30 minutes")), ("60_minutes", _("60 minutes")), ("restart", _("until restart"))))
 #      config.ParentalControl.configured = configElement("config.ParentalControl.configured", configSelection, 1, (("yes", _("yes")), ("no", _("no"))))
        #config.ParentalControl.mode = configElement("config.ParentalControl.mode", configSelection, 0, (("simple", _("simple")), ("complex", _("complex"))))
        #config.ParentalControl.storeservicepin = configElement("config.ParentalControl.storeservicepin", configSelection, 0, (("never", _("never")), ("5_minutes", _("5 minutes")), ("30_minutes", _("30 minutes")), ("60_minutes", _("60 minutes")), ("restart", _("until restart"))))
@@ -34,7 +42,6 @@ class ParentalControl:
        def __init__(self):
                self.open()
                self.serviceLevel = {}
        def __init__(self):
                self.open()
                self.serviceLevel = {}
-               self.tries = 3
                
        def addWhitelistService(self, service):
                self.whitelist.append(service)
                
        def addWhitelistService(self, service):
                self.whitelist.append(service)
@@ -58,47 +65,47 @@ class ParentalControl:
        def isServicePlayable(self, service, callback):
                if not config.ParentalControl.configured.value:
                        return True
        def isServicePlayable(self, service, callback):
                if not config.ParentalControl.configured.value:
                        return True
-               print "whitelist:", self.whitelist
-               print "blacklist:", self.blacklist
-               print "config.ParentalControl.type.value:", config.ParentalControl.type.value
-               print "not in whitelist:", (service not in self.whitelist)
-               print "checking parental control for service:", service
+               #print "whitelist:", self.whitelist
+               #print "blacklist:", self.blacklist
+               #print "config.ParentalControl.type.value:", config.ParentalControl.type.value
+               #print "not in whitelist:", (service not in self.whitelist)
+               #print "checking parental control for service:", service
                if (config.ParentalControl.type.value == "whitelist" and service not in self.whitelist) or (config.ParentalControl.type.value == "blacklist" and service in self.blacklist):
                        self.callback = callback
                if (config.ParentalControl.type.value == "whitelist" and service not in self.whitelist) or (config.ParentalControl.type.value == "blacklist" and service in self.blacklist):
                        self.callback = callback
-                       print "service:", ServiceReference(service).getServiceName()
+                       #print "service:", ServiceReference(service).getServiceName()
                        levelNeeded = 0
                        if self.serviceLevel.has_key(service):
                                levelNeeded = self.serviceLevel[service]
                        pinList = self.getPinList()[:levelNeeded + 1]
                        levelNeeded = 0
                        if self.serviceLevel.has_key(service):
                                levelNeeded = self.serviceLevel[service]
                        pinList = self.getPinList()[:levelNeeded + 1]
-                       Notifications.AddNotificationWithCallback(boundFunction(self.servicePinEntered, service), PinInput, tries = self.tries, pinList = pinList, service = ServiceReference(service).getServiceName(), title = _("this service is protected by a parental control pin"), windowTitle = _("Parental control"))
+                       Notifications.AddNotificationWithCallback(boundFunction(self.servicePinEntered, service), PinInput, triesEntry = config.ParentalControl.retries.servicepin, pinList = pinList, service = ServiceReference(service).getServiceName(), title = _("this service is protected by a parental control pin"), windowTitle = _("Parental control"))
                        return False
                else:
                        return True
                
        def protectService(self, service):
                        return False
                else:
                        return True
                
        def protectService(self, service):
-               print "protect"
-               print "config.ParentalControl.type.value:", config.ParentalControl.type.value
+               #print "protect"
+               #print "config.ParentalControl.type.value:", config.ParentalControl.type.value
                if config.ParentalControl.type.value == "whitelist":
                        if service in self.whitelist:
                                self.deleteWhitelistService(service)
                else: # blacklist
                        if service not in self.blacklist:
                                self.addBlacklistService(service)
                if config.ParentalControl.type.value == "whitelist":
                        if service in self.whitelist:
                                self.deleteWhitelistService(service)
                else: # blacklist
                        if service not in self.blacklist:
                                self.addBlacklistService(service)
-               print "whitelist:", self.whitelist
-               print "blacklist:", self.blacklist
+               #print "whitelist:", self.whitelist
+               #print "blacklist:", self.blacklist
 
                                
        def unProtectService(self, service):
 
                                
        def unProtectService(self, service):
-               print "unprotect"
-               print "config.ParentalControl.type.value:", config.ParentalControl.type.value
+               #print "unprotect"
+               #print "config.ParentalControl.type.value:", config.ParentalControl.type.value
                if config.ParentalControl.type.value == "whitelist":
                        if service not in self.whitelist:
                                self.addWhitelistService(service)
                else: # blacklist
                        if service in self.blacklist:
                                self.deleteBlacklistService(service)
                if config.ParentalControl.type.value == "whitelist":
                        if service not in self.whitelist:
                                self.addWhitelistService(service)
                else: # blacklist
                        if service in self.blacklist:
                                self.deleteBlacklistService(service)
-               print "whitelist:", self.whitelist
-               print "blacklist:", self.blacklist
+               #print "whitelist:", self.whitelist
+               #print "blacklist:", self.blacklist
 
        def getProtectionLevel(self, service):
                if (config.ParentalControl.type.value == "whitelist" and service not in self.whitelist) or (config.ParentalControl.type.value == "blacklist" and service in self.blacklist):
 
        def getProtectionLevel(self, service):
                if (config.ParentalControl.type.value == "whitelist" and service not in self.whitelist) or (config.ParentalControl.type.value == "blacklist" and service in self.blacklist):
@@ -126,15 +133,13 @@ class ParentalControl:
 #              
 #              print "pin entered for service", service, "and pin was", pin
                #if pin is not None and int(pin) in pinList:
 #              
 #              print "pin entered for service", service, "and pin was", pin
                #if pin is not None and int(pin) in pinList:
-               if result[0] is not None and result[0]:
-                       print "pin ok, playing service"
-                       self.tries = 3
+               if result is not None and result:
+                       #print "pin ok, playing service"
                        self.callback(ref = ServiceReference(service).ref)
                else:
                        self.callback(ref = ServiceReference(service).ref)
                else:
-                       self.tries = result[1]
-                       if result[0] is not None:
+                       if result is not None:
                                Notifications.AddNotification(MessageBox,  _("The pin code you entered is wrong."), MessageBox.TYPE_ERROR)
                                Notifications.AddNotification(MessageBox,  _("The pin code you entered is wrong."), MessageBox.TYPE_ERROR)
-                       print "wrong pin entered"
+                       #print "wrong pin entered"
                        
        def saveWhitelist(self):
                file = open(resolveFilename(SCOPE_CONFIG, "whitelist"), 'w')
                        
        def saveWhitelist(self):
                file = open(resolveFilename(SCOPE_CONFIG, "whitelist"), 'w')