fix fillSimilarList
[enigma2.git] / lib / python / Components / TimerList.py
1 from HTMLComponent import HTMLComponent
2 from GUIComponent import GUIComponent
3
4 from Tools.FuzzyDate import FuzzyTime
5
6 from enigma import eListboxPythonMultiContent, eListbox, gFont, loadPNG, \
7         RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_VALIGN_CENTER
8 from timer import TimerEntry
9 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
10
11 #
12 #  | <Service>     <Name of the Timer>  |
13 #  | <start, end>              <state>  |
14 #
15 def TimerEntryComponent(timer, processed):
16         res = [ timer ]
17         
18         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 560, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.service_ref.getServiceName()))
19         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 30, 560, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.name))
20         
21         repeatedtext = ""
22         days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ]
23         if timer.repeated:
24                 flags = timer.repeated
25                 count = 0
26                 for x in range(0, 7):
27                                 if (flags & 1 == 1):
28                                         if (count != 0):
29                                                 repeatedtext += ", "
30                                         repeatedtext += days[x]
31                                         count += 1
32                                 flags = flags >> 1
33                 if timer.justplay:
34                         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s "+ _("(ZAP)")) % (FuzzyTime(timer.begin)[1]))))
35                 else:
36                         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))))
37         else:
38                 if timer.justplay:
39                         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + (("%s, %s " + _("(ZAP)")) % (FuzzyTime(timer.begin)))))
40                 else:
41                         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,)))))
42
43         if not processed:
44                 if timer.state == TimerEntry.StateWaiting:
45                         state = _("waiting")
46                 elif timer.state == TimerEntry.StatePrepared:
47                         state = _("about to start")
48                 elif timer.state == TimerEntry.StateRunning:
49                         if timer.justplay:
50                                 state = _("zapped")
51                         else:
52                                 state = _("recording...")
53                 else:
54                         state = _("<unknown>")
55         else:
56                 state = _("done!")
57         
58         res.append((eListboxPythonMultiContent.TYPE_TEXT, 320, 50, 240, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
59
60         if timer.disabled:
61                 png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "redx.png"))
62                 res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 490, 5, 40, 40, png))
63         
64         return res
65
66 class TimerList(HTMLComponent, GUIComponent, object):
67         def __init__(self, list):
68                 GUIComponent.__init__(self)
69                 self.l = eListboxPythonMultiContent()
70                 self.l.setList(list)
71                 self.l.setFont(0, gFont("Regular", 20))
72                 self.l.setFont(1, gFont("Regular", 18))
73                 self.l.setItemHeight(70)
74         
75         def getCurrent(self):
76                 return self.l.getCurrentSelection()
77         
78         GUI_WIDGET = eListbox
79         
80         def postWidgetCreate(self, instance):
81                 instance.setContent(self.l)
82
83         def moveToIndex(self, index):
84                 self.instance.moveSelectionTo(index)
85
86         def getCurrentIndex(self):
87                 return self.instance.getCurrentIndex()
88
89         currentIndex = property(moveToIndex, getCurrentIndex)
90         currentSelection = property(getCurrent)
91
92         def moveDown(self):
93                 self.instance.moveSelection(self.instance.moveDown)
94
95         def invalidate(self):
96                 self.l.invalidate()