add missing import
[enigma2.git] / lib / python / Components / TimerList.py
index e31a0f4a46664c1a199dcc62a0cc32aa519f3dcd..f84743749e79ef2167b42a35688d70eec65b20fa 100644 (file)
@@ -3,77 +3,84 @@ from GUIComponent import GUIComponent
 
 from Tools.FuzzyDate import FuzzyTime
 
-from enigma import eListboxPythonMultiContent, eListbox, gFont, loadPNG, \
+from enigma import eListboxPythonMultiContent, eListbox, gFont, \
        RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_VALIGN_CENTER
+from Tools.LoadPixmap import LoadPixmap
 from timer import TimerEntry
 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
 
+class TimerList(HTMLComponent, GUIComponent, object):
 #
 #  | <Service>     <Name of the Timer>  |
 #  | <start, end>              <state>  |
 #
-def TimerEntryComponent(timer, processed):
-       res = [ timer ]
-       
-       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))
-       
-       repeatedtext = ""
-       days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ]
-       if 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
-               if timer.justplay:
-                       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s "+ _("(ZAP)")) % (FuzzyTime(timer.begin)[1]))))
-               else:
-                       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s ... %s (%d " + _("mins") + ")") % (FuzzyTime(timer.begin)[1], FuzzyTime(timer.end)[1], (timer.end - timer.begin) / 60))))
-       else:
-               if timer.justplay:
-                       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (("%s, %s " + _("(ZAP)")) % (FuzzyTime(timer.begin)))))
+       def buildTimerEntry(self, timer, processed):
+               width = self.l.getItemSize().width()
+               res = [ None ]
+               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, width, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.service_ref.getServiceName()))
+               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 30, width, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.name))
+
+               repeatedtext = ""
+               days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ]
+               if 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
+                       if timer.justplay:
+                               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, width-150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s "+ _("(ZAP)")) % (FuzzyTime(timer.begin)[1]))))
+                       else:
+                               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, width-150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s ... %s (%d " + _("mins") + ")") % (FuzzyTime(timer.begin)[1], FuzzyTime(timer.end)[1], (timer.end - timer.begin) / 60))))
                else:
-                       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (("%s, %s ... %s (%d " + _("mins") + ")") % (FuzzyTime(timer.begin) + FuzzyTime(timer.end)[1:] + ((timer.end - timer.begin) / 60,)))))
-
-       if not processed:
-               if timer.state == TimerEntry.StateWaiting:
-                       state = _("waiting")
-               elif timer.state == TimerEntry.StatePrepared:
-                       state = _("about to start")
-               elif timer.state == TimerEntry.StateRunning:
                        if timer.justplay:
-                               state = _("zapped")
+                               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, width-150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (("%s, %s " + _("(ZAP)")) % (FuzzyTime(timer.begin)))))
+                       else:
+                               res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, width-150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (("%s, %s ... %s (%d " + _("mins") + ")") % (FuzzyTime(timer.begin) + FuzzyTime(timer.end)[1:] + ((timer.end - timer.begin) / 60,)))))
+
+               if not processed:
+                       if timer.state == TimerEntry.StateWaiting:
+                               state = _("waiting")
+                       elif timer.state == TimerEntry.StatePrepared:
+                               state = _("about to start")
+                       elif timer.state == TimerEntry.StateRunning:
+                               if timer.justplay:
+                                       state = _("zapped")
+                               else:
+                                       state = _("recording...")
+                       elif timer.state == TimerEntry.StateEnded:
+                               state = _("done!")
                        else:
-                               state = _("recording...")
+                               state = _("<unknown>")
                else:
-                       state = _("<unknown>")
-       else:
-               state = _("done!")
-       
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 320, 50, 240, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
+                       state = _("done!")
 
-       if timer.disabled:
-               png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "redx.png"))
-               res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 490, 5, 40, 40, png))
-       
-       return res
+               if timer.disabled:
+                       state = _("disabled")
+
+               res.append((eListboxPythonMultiContent.TYPE_TEXT, width-150, 50, 150, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
+
+               if timer.disabled:
+                       png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/redx.png"))
+                       res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 490, 5, 40, 40, png))
+               return res
 
-class TimerList(HTMLComponent, GUIComponent, object):
        def __init__(self, list):
                GUIComponent.__init__(self)
                self.l = eListboxPythonMultiContent()
-               self.l.setList(list)
+               self.l.setBuildFunc(self.buildTimerEntry)
                self.l.setFont(0, gFont("Regular", 20))
                self.l.setFont(1, gFont("Regular", 18))
                self.l.setItemHeight(70)
+               self.l.setList(list)
        
        def getCurrent(self):
-               return self.l.getCurrentSelection()
+               cur = self.l.getCurrentSelection()
+               return cur and cur[0]
        
        GUI_WIDGET = eListbox
        
@@ -94,3 +101,7 @@ class TimerList(HTMLComponent, GUIComponent, object):
 
        def invalidate(self):
                self.l.invalidate()
+
+       def entryRemoved(self, idx):
+               self.l.entryRemoved(idx)
+