add possibility to use ValueRange as ValueEqual Converter
[enigma2.git] / lib / python / Components / Converter / ClockToText.py
index 085ebc1a3a8dc9db95fa0c2063ad150281813838..109f91259b9db071cf1d0fcf25608d50a851bd29 100644 (file)
@@ -1,23 +1,35 @@
-from Components.Converter.Converter import Converter
-from time import localtime
+from Converter import Converter
+from time import localtime, strftime
+from Components.Element import cached
 
 class ClockToText(Converter, object):
        DEFAULT = 0
        WITH_SECONDS = 1
        IN_MINUTES = 2
 
 class ClockToText(Converter, object):
        DEFAULT = 0
        WITH_SECONDS = 1
        IN_MINUTES = 2
+       DATE = 3
+       FORMAT = 4
+       AS_LENGTH = 5
        
        # add: date, date as string, weekday, ... 
        # (whatever you need!)
        
        
        # add: date, date as string, weekday, ... 
        # (whatever you need!)
        
-       def __init__(self, type, *args, **kwargs):
-               Converter.__init__(self)
+       def __init__(self, type):
+               Converter.__init__(self, type)
                if type == "WithSeconds":
                        self.type = self.WITH_SECONDS
                elif type == "InMinutes":
                        self.type = self.IN_MINUTES
                if type == "WithSeconds":
                        self.type = self.WITH_SECONDS
                elif type == "InMinutes":
                        self.type = self.IN_MINUTES
+               elif type == "Date":
+                       self.type = self.DATE
+               elif type == "AsLength":
+                       self.type = self.AS_LENGTH
+               elif str(type).find("Format") != -1:
+                       self.type = self.FORMAT
+                       self.fmt_string = type[7:]
                else:
                        self.type = self.DEFAULT
 
                else:
                        self.type = self.DEFAULT
 
+       @cached
        def getText(self):
                time = self.source.time
                if time is None:
        def getText(self):
                time = self.source.time
                if time is None:
@@ -26,6 +38,8 @@ class ClockToText(Converter, object):
                # handle durations
                if self.type == self.IN_MINUTES:
                        return "%d min" % (time / 60)
                # handle durations
                if self.type == self.IN_MINUTES:
                        return "%d min" % (time / 60)
+               elif self.type == self.AS_LENGTH:
+                       return "%d:%02d" % (time / 60, time % 60)
                
                t = localtime(time)
                
                
                t = localtime(time)
                
@@ -33,6 +47,16 @@ class ClockToText(Converter, object):
                        return "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec)
                elif self.type == self.DEFAULT:
                        return "%02d:%02d" % (t.tm_hour, t.tm_min)
                        return "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec)
                elif self.type == self.DEFAULT:
                        return "%02d:%02d" % (t.tm_hour, t.tm_min)
+               elif self.type == self.DATE:
+                       return strftime("%A %B %d, %Y", t)
+               elif self.type == self.FORMAT:
+                       spos = self.fmt_string.find('%')
+                       if spos > 0:
+                               s1 = self.fmt_string[:spos]
+                               s2 = strftime(self.fmt_string[spos:], t)
+                               return str(s1+s2)
+                       else:
+                               return strftime(self.fmt_string, t)
                else:
                        return "???"
 
                else:
                        return "???"