add new config types ConfigSearchText, which uses the new sql NumericalTextInput...
[enigma2.git] / lib / python / Components / config.py
index 4ddcabec3dfd3421a7d10d508d7b042c0d066c01..cfa4318ced098412c9084b3121c61d5c8ef2428e 100755 (executable)
@@ -604,6 +604,34 @@ class ConfigClock(ConfigSequence):
                t = time.localtime(default)
                ConfigSequence.__init__(self, seperator = ":", limits = [(0,23),(0,59)], default = [t.tm_hour, t.tm_min])
 
+       def increment(self):
+               # Check if Minutes maxed out
+               if self._value[1] == 59:
+                       # Check if Hours not maxed out
+                       if self._value[0] < 23:
+                               # Increment Hour, reset Minutes to 0
+                               self._value[0] += 1
+                               self._value[1] = 0
+               else:
+                       # Increment Minutes
+                       self._value[1] += 1
+               # Trigger change
+               self.changed()
+
+       def decrement(self):
+               # Check if Minutes is minimum
+               if self._value[1] == 0:
+                       # Check if Hour is greater than 0
+                       if self._value[0] > 0:
+                               # Decrement Hour, set Minutes to 59
+                               self._value[0] -= 1
+                               self._value[1] = 59
+               else:
+                       # Decrement Minutes
+                       self._value[1] -= 1
+               # Trigger change
+               self.changed()
+
 class ConfigInteger(ConfigSequence):
        def __init__(self, default, limits = (0, 9999999999)):
                ConfigSequence.__init__(self, seperator = ":", limits = [limits], default = default)
@@ -782,12 +810,12 @@ class ConfigText(ConfigElement, NumericalTextInput):
 
        def getValue(self):
                return self.text.encode("utf-8")
-               
+
        def setValue(self, val):
                try:
                        self.text = val.decode("utf-8")
                except UnicodeDecodeError:
-                       self.text = val
+                       self.text = val.decode("utf-8", "ignore")
                        print "Broken UTF8!"
 
        value = property(getValue, setValue)
@@ -898,6 +926,31 @@ class ConfigNumber(ConfigText):
                self.marked_pos = 0
                self.offset = 0
 
+class ConfigSearchText(ConfigText):
+       def __init__(self, default = "", fixed_size = False, visible_width = False):
+               ConfigText.__init__(self, default = default, fixed_size = fixed_size, visible_width = visible_width)
+               NumericalTextInput.__init__(self, nextFunc = self.nextFunc, handleTimeout = False, search = True)
+
+class ConfigDirectory(ConfigText):
+       def __init__(self, default="", visible_width=60):
+               ConfigText.__init__(self, default, fixed_size = True, visible_width = visible_width)
+       def handleKey(self, key):
+               pass
+       def getValue(self):
+               if self.text == "":
+                       return None
+               else:
+                       return ConfigText.getValue(self)
+       def setValue(self, val):
+               if val == None:
+                       val = ""
+               ConfigText.setValue(self, val)
+       def getMulti(self, selected):
+               if self.text == "":
+                       return ("mtext"[1-selected:], _("List of Storage Devices"), range(0))
+               else:
+                       return ConfigText.getMulti(self, selected)
+
 # a slider.
 class ConfigSlider(ConfigElement):
        def __init__(self, default = 0, increment = 1, limits = (0, 100)):