fix inverted setting (meaning was inverted too)
[enigma2.git] / lib / python / Components / TimerList.py
index 18c5cb134a250c5973944130ce7366afc23538df..d79187d185723bd4166ec84369ef1ca3281c6eb7 100644 (file)
@@ -2,9 +2,10 @@ from HTMLComponent import *
 from GUIComponent import *
 
 from Tools.FuzzyDate import FuzzyTime
+import time
 
 from enigma import eListboxPythonMultiContent, eListbox, gFont
-
+from timer import TimerEntry
 
 RT_HALIGN_LEFT = 0
 RT_HALIGN_RIGHT = 1
@@ -20,18 +21,44 @@ RT_WRAP = 32
 
 #
 #  | <Service>     <Name of the Timer>  |
-#  | <start>                     <end>  |
+#  | <start, end>              <state>  |
 #
-def TimerEntry(timer, processed):
+def TimerEntryComponent(timer, processed):
        res = [ timer ]
        
-       res.append((0, 0, 400, 30, 0, RT_HALIGN_LEFT, timer.service_ref.getServiceName()))
-       res.append((0, 30, 200, 20, 1, RT_HALIGN_LEFT, "%s, %s" % FuzzyTime(timer.begin)))
+       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 560, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.service_ref.getServiceName()))
+       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 30, 560, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.name))
        
-       if processed:
-               res.append((200, 30, 200, 20, 1, RT_HALIGN_RIGHT, FuzzyTime(timer.end)[1]))
+       repeatedtext = ""
+       days = [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]
+       if not timer.repeated:
+               flags = timer.repeated
+               count = 0
+               for x in range(0, 7):
+                               if (flags & 1 == 1):
+                                       if (count != 0):
+                                               repeatedtext += ", "
+                                       repeatedtext += days[x]
+                                       count += 1
+                               flags = flags >> 1
+               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 300, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (" %s ... %s" % (FuzzyTime(timer.begin)[1], FuzzyTime(timer.end)[1]))))
+       else:
+               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 300, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ("%s, %s ... %s" % (FuzzyTime(timer.begin) + FuzzyTime(timer.end)[1:]))))
+
+       if not processed:
+               if timer.state == TimerEntry.StateWaiting:
+                       state = "waiting"
+               elif timer.state == TimerEntry.StatePrepared:
+                       state = "about to start"
+               elif timer.state == TimerEntry.StateRunning:
+                       state = "recording..."
+               else:
+                       state = "<unknown>"
        else:
-               res.append((200, 30, 200, 20, 1, RT_HALIGN_RIGHT, "done"))
+               state = "done!"
+       
+       res.append((eListboxPythonMultiContent.TYPE_TEXT, 320, 50, 240, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
+       
        return res
 
 class TimerList(HTMLComponent, GUIComponent):
@@ -39,8 +66,8 @@ class TimerList(HTMLComponent, GUIComponent):
                GUIComponent.__init__(self)
                self.l = eListboxPythonMultiContent()
                self.l.setList(list)
-               self.l.setFont(0, gFont("Arial", 20))
-               self.l.setFont(1, gFont("Arial", 18))
+               self.l.setFont(0, gFont("Regular", 20))
+               self.l.setFont(1, gFont("Regular", 18))
        
        def getCurrent(self):
                return self.l.getCurrentSelection()
@@ -48,10 +75,12 @@ class TimerList(HTMLComponent, GUIComponent):
        def GUIcreate(self, parent):
                self.instance = eListbox(parent)
                self.instance.setContent(self.l)
-               self.instance.setItemHeight(50)
+               self.instance.setItemHeight(70)
        
        def GUIdelete(self):
                self.instance.setContent(None)
                self.instance = None
 
+       def invalidate(self):
+               self.l.invalidate()