small fix
[enigma2.git] / lib / python / Components / ParentalControl.py
index 97e9fad55d94a8d50bdf4c38fccf388e3eda669e..4bf18067750170a066e6d3af071a211da2299780 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)
@@ -56,52 +63,51 @@ class ParentalControl:
                        self.serviceLevel.remove(service)
                                
        def isServicePlayable(self, service, callback):
                        self.serviceLevel.remove(service)
                                
        def isServicePlayable(self, service, callback):
-               if not config.ParentalControl.configured.value:
+               if not config.ParentalControl.configured.value or not config.ParentalControl.setuppinactive.value:
                        return True
                        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 config.ParentalControl.type.value == "whitelist":
-                       if service.toCompareString() not in self.whitelist:
+                       if service not in self.whitelist:
                                self.addWhitelistService(service)
                else: # blacklist
                                self.addWhitelistService(service)
                else: # blacklist
-                       if service.toCompareString() in self.blacklist:
+                       if service in self.blacklist:
                                self.deleteBlacklistService(service)
                                self.deleteBlacklistService(service)
-               print "whitelist:", self.whitelist
-               print "blacklist:", self.blacklist
+               #print "whitelist:", self.whitelist
+               #print "blacklist:", self.blacklist
 
 
-       def getProtectionLevel(self, serviceref):
-               service = serviceref.toCompareString()
+       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):
                        if self.serviceLevel.has_key(service):
                                return self.serviceLevel[service]
                if (config.ParentalControl.type.value == "whitelist" and service not in self.whitelist) or (config.ParentalControl.type.value == "blacklist" and service in self.blacklist):
                        if self.serviceLevel.has_key(service):
                                return self.serviceLevel[service]
@@ -127,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')