def buildMovieListEntry(self, serviceref, info, begin, len):
if serviceref.flags & eServiceReference.mustDescent:
return None
+ width = self.entry_width
if len <= 0: #recalc len when not already done
cur_idx = self.l.getCurrentSelectionIndex()
res = [ None ]
- res.append(MultiContentEntryText(pos=(0, 0), size=(420, 30), font = 0, flags = RT_HALIGN_LEFT, text = info.getName(serviceref)))
+ res.append(MultiContentEntryText(pos=(0, 0), size=(width-140, 30), font = 0, flags = RT_HALIGN_LEFT, text = info.getName(serviceref)))
service = ServiceReference(info.getInfoString(serviceref, iServiceInformation.sServiceref))
if service is not None:
- res.append(MultiContentEntryText(pos=(420, 0), size=(140, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
+ res.append(MultiContentEntryText(pos=(width-140, 0), size=(140, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
description = info.getInfoString(serviceref, iServiceInformation.sDescription)
t = FuzzyTime(begin)
begin_string = t[0] + ", " + t[1]
- res.append(MultiContentEntryText(pos=(0, 30), size=(560, 20), font=1, flags=RT_HALIGN_LEFT, text=description))
- res.append(MultiContentEntryText(pos=(0, 50), size=(270, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
- res.append(MultiContentEntryText(pos=(290, 50), size=(270, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
+ res.append(MultiContentEntryText(pos=(0, 30), size=(width, 20), font=1, flags=RT_HALIGN_LEFT, text=description))
+ res.append(MultiContentEntryText(pos=(0, 50), size=(width-270, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
+ res.append(MultiContentEntryText(pos=(width, 50), size=(270, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
return res
def postWidgetCreate(self, instance):
instance.setContent(self.l)
-
+ self.entry_width = self.l.getItemSize().width()
+
def reload(self, root = None, filter_tags = None):
if root is not None:
self.load(root, filter_tags)
else:
self.load(self.root, filter_tags)
self.l.setList(self.list)
+ self.entry_width = self.l.getItemSize().width()
def removeService(self, service):
for l in self.list[:]:
if l[0] == service:
self.list.remove(l)
self.l.setList(self.list)
+ self.entry_width = self.l.getItemSize().width()
def __len__(self):
return len(self.list)
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)))))
- 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,)))))
+ 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))
- if not processed:
- if timer.state == TimerEntry.StateWaiting:
- state = _("waiting")
- elif timer.state == TimerEntry.StatePrepared:
- state = _("about to start")
- elif timer.state == TimerEntry.StateRunning:
+ 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:
- state = _("zapped")
+ res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 400, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, repeatedtext + ((" %s "+ _("(ZAP)")) % (FuzzyTime(timer.begin)[1]))))
else:
- state = _("recording...")
+ 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:
- state = _("<unknown>")
- else:
- state = _("done!")
-
- res.append((eListboxPythonMultiContent.TYPE_TEXT, 320, 50, 240, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
+ 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)))))
+ 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 timer.disabled:
- png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "redx.png"))
- res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 490, 5, 40, 40, png))
-
- return res
+ 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...")
+ else:
+ state = _("<unknown>")
+ else:
+ state = _("done!")
+
+ res.append((eListboxPythonMultiContent.TYPE_TEXT, width-240, 50, 240, 20, 1, RT_HALIGN_RIGHT|RT_VALIGN_CENTER, state))
+
+ if timer.disabled:
+ png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "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
from Components.Sources.FrontendStatus import FrontendStatus
from Components.Sources.Boolean import Boolean
from Components.Sources.Clock import Clock
-from Components.TimerList import TimerEntryComponent
from Components.config import config, ConfigBoolean, ConfigClock
from EpgSelection import EPGSelection
from Plugins.Plugin import PluginDescriptor
if not x in self.session.nav.RecordTimer.timer_list:
self.recording.remove(x)
elif x.dontSave and x.isRunning():
- list.append(TimerEntryComponent(x, False))
+ list.append((x, False))
if answer[1] == "changeduration":
if len(self.recording) == 1:
from Components.ActionMap import ActionMap
from Components.Button import Button
from Components.MenuList import MenuList
-from Components.TimerList import TimerList, TimerEntryComponent
+from Components.TimerList import TimerList
from Components.TimerSanityCheck import TimerSanityCheck
from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT
from Screen import Screen
def toggleDisabledState(self):
cur=self["timerlist"].getCurrent()
if cur:
- t = cur[0]
+ t = cur
if t.disabled:
t.enable()
def updateState(self):
if len(self.list) > 0:
- if self["timerlist"].getCurrent()[0].disabled:
+ if self["timerlist"].getCurrent().disabled:
self["key_yellow"].setText(_("Enable"))
else:
self["key_yellow"].setText(_("Disable"))
del self.list[:]
for timer in self.session.nav.RecordTimer.timer_list:
- self.list.append(TimerEntryComponent(timer, processed=False))
+ self.list.append((timer, False))
for timer in self.session.nav.RecordTimer.processed_timers:
- self.list.append(TimerEntryComponent(timer, processed=True))
+ self.list.append((timer, True))
self.list.sort(cmp = lambda x, y: x[0].begin < y[0].begin)
def showLog(self):
cur=self["timerlist"].getCurrent()
if cur:
- self.session.openWithCallback(self.finishedEdit, TimerLog, cur[0])
+ self.session.openWithCallback(self.finishedEdit, TimerLog, cur)
def openEdit(self):
cur=self["timerlist"].getCurrent()
if cur:
- self.session.openWithCallback(self.finishedEdit, TimerEntry, cur[0])
+ self.session.openWithCallback(self.finishedEdit, TimerEntry, cur)
def cleanupQuestion(self):
self.session.openWithCallback(self.cleanupTimer, MessageBox, _("Really delete done timers?"))
list = self["timerlist"]
cur = list.getCurrent()
if cur:
- timer = cur[0]
+ timer = cur
timer.afterEvent = AFTEREVENT.NONE
self.session.nav.RecordTimer.removeEntry(timer)
self.refill()
def onStateChange(self, entry):
self.refill()
-
+
class TimerSanityConflict(Screen):
def __init__(self, session, timer):
Screen.__init__(self, session)
}, -1)
def getTimerList(self, timer):
- return [TimerEntryComponent(timer, processed=False)]
+ return [(timer, False)]
def editTimer1(self):
- self.session.openWithCallback(self.finishedEdit, TimerEntry, self["timer1"].getCurrent()[0])
+ self.session.openWithCallback(self.finishedEdit, TimerEntry, self["timer1"].getCurrent())
def disableTimer1(self):
self.timer[0].disabled = True
def up(self):
self["list"].instance.moveSelection(self["list"].instance.moveUp)
- self["timer2"].l.setList(self.getTimerList(self["list"].getCurrent()[1]))
+ self["timer2"].l.setList(self.getTimerList(self["list"].getCurrent()))
def down(self):
self["list"].instance.moveSelection(self["list"].instance.moveDown)
- self["timer2"].l.setList(self.getTimerList(self["list"].getCurrent()[1]))
-
-
\ No newline at end of file
+ self["timer2"].l.setList(self.getTimerList(self["list"].getCurrent()))