From: Andreas Monzner Date: Tue, 31 Jul 2007 10:16:08 +0000 (+0000) Subject: take care of scrollbar size when build movielist and timerlist entries X-Git-Tag: 2.6.0~2004 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/6db060dce242cd1990ae82f518ffa0beaee74d06?hp=866bf4c43f79a42337ac654dfa35df7b95c8e2d5 take care of scrollbar size when build movielist and timerlist entries i dont understand how it could work ever --- diff --git a/lib/python/Components/MovieList.py b/lib/python/Components/MovieList.py index d43b5106..993e2eeb 100644 --- a/lib/python/Components/MovieList.py +++ b/lib/python/Components/MovieList.py @@ -25,6 +25,7 @@ class MovieList(GUIComponent): 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() @@ -39,10 +40,10 @@ class MovieList(GUIComponent): 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) @@ -51,9 +52,9 @@ class MovieList(GUIComponent): 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 @@ -75,19 +76,22 @@ class MovieList(GUIComponent): 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) diff --git a/lib/python/Components/TimerList.py b/lib/python/Components/TimerList.py index e31a0f4a..53442f50 100644 --- a/lib/python/Components/TimerList.py +++ b/lib/python/Components/TimerList.py @@ -8,72 +8,73 @@ from enigma import eListboxPythonMultiContent, eListbox, gFont, loadPNG, \ from timer import TimerEntry from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE +class TimerList(HTMLComponent, GUIComponent, object): # # | | # | | # -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 = _("") - 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 = _("") + 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 diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 0c0916f6..85b1d80f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -14,7 +14,6 @@ from Components.Sources.EventInfo import EventInfo 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 @@ -1359,7 +1358,7 @@ class InfoBarInstantRecord: 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: diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index 6240c676..3497fcbe 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -1,7 +1,7 @@ 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 @@ -63,7 +63,7 @@ class TimerEditList(Screen): def toggleDisabledState(self): cur=self["timerlist"].getCurrent() if cur: - t = cur[0] + t = cur if t.disabled: t.enable() @@ -97,7 +97,7 @@ class TimerEditList(Screen): 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")) @@ -107,21 +107,21 @@ class TimerEditList(Screen): 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?")) @@ -140,7 +140,7 @@ class TimerEditList(Screen): 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() @@ -209,7 +209,7 @@ class TimerEditList(Screen): def onStateChange(self, entry): self.refill() - + class TimerSanityConflict(Screen): def __init__(self, session, timer): Screen.__init__(self, session) @@ -252,10 +252,10 @@ class TimerSanityConflict(Screen): }, -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 @@ -266,10 +266,8 @@ class TimerSanityConflict(Screen): 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()))