From e41bc43a71848704ead6e9595924fe3542435f5d Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Wed, 18 Jan 2006 02:07:58 +0000 Subject: [PATCH] use progressbar in InfoBar to display the progress of the "now" event --- data/skin.xml | 1 + lib/python/Components/EventInfo.py | 35 +++++++++++++++++----- lib/python/Components/PerServiceDisplay.py | 21 ++++++++++++- lib/python/Screens/InfoBarGenerics.py | 2 ++ 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/data/skin.xml b/data/skin.xml index 6b05295b..7963cc9b 100644 --- a/data/skin.xml +++ b/data/skin.xml @@ -177,6 +177,7 @@ + diff --git a/lib/python/Components/EventInfo.py b/lib/python/Components/EventInfo.py index f295281a..ce13ba85 100644 --- a/lib/python/Components/EventInfo.py +++ b/lib/python/Components/EventInfo.py @@ -1,6 +1,6 @@ from PerServiceDisplay import * from time import strftime -from time import localtime +from time import localtime, time from enigma import iServiceInformationPtr, eServiceEventPtr @@ -31,15 +31,36 @@ class EventInfo(PerServiceDisplay): if info is not None: ev = info.getEvent(self.now_or_next & 1) if ev is not None: - if (self.Now_Duration <= self.now_or_next <= self.Next_Duration): - self.setText("%d min" % (ev.getDuration() / 60)) - if (self.Now_StartTime <= self.now_or_next <= self.Next_StartTime): - self.setText(strftime("%H:%M", localtime(ev.getBeginTime()))) - if (self.Now <= self.now_or_next <= self.Next): - self.setText(ev.getEventName()) + self.update(ev) + + + def update(self, ev): + if (self.Now_Duration <= self.now_or_next <= self.Next_Duration): + self.setText("%d min" % (ev.getDuration() / 60)) + if (self.Now_StartTime <= self.now_or_next <= self.Next_StartTime): + self.setText(strftime("%H:%M", localtime(ev.getBeginTime()))) + if (self.Now <= self.now_or_next <= self.Next): + self.setText(ev.getEventName()) def stopEvent(self): self.setText( #(_("waiting for event data..."), "", "--:--", "--:--", "--:--", "--:--")[self.now_or_next]); ("", "", "--:--", "--:--", "--:--", "--:--")[self.now_or_next]); + +class EventInfoProgress(PerServiceDisplayProgress, EventInfo): + def __init__(self, navcore, now_or_next): + self.now_or_next = now_or_next + PerServiceDisplayProgress.__init__(self, navcore, + { + pNavigation.evUpdatedEventInfo: self.ourEvent, + pNavigation.evStopService: self.stopEvent + }) + + def update(self, ev): + self.g.setRange(0, ev.getDuration()) + progress = int(time() - ev.getBeginTime()) + + self.setValue(progress) + + \ No newline at end of file diff --git a/lib/python/Components/PerServiceDisplay.py b/lib/python/Components/PerServiceDisplay.py index eab1e086..01e5cc82 100644 --- a/lib/python/Components/PerServiceDisplay.py +++ b/lib/python/Components/PerServiceDisplay.py @@ -1,8 +1,9 @@ from GUIComponent import * from VariableText import * +from VariableValue import * from enigma import pNavigation -from enigma import eLabel +from enigma import eLabel, eSlider class PerServiceDisplay(GUIComponent, VariableText): """Mixin for building components which display something which changes on navigation events, for example "service name" """ @@ -28,3 +29,21 @@ class PerServiceDisplay(GUIComponent, VariableText): g = eLabel(parent) return g + +class PerServiceDisplayProgress(GUIComponent, VariableValue, PerServiceDisplay): + def __init__(self, navcore, eventmap): + GUIComponent.__init__(self) + VariableValue.__init__(self) + self.eventmap = eventmap + self.navcore = navcore + self.navcore.event.append(self.event) + + # start with stopped state, so simulate that + self.event(pNavigation.evStopService) + + + def createWidget(self, parent): + # by default, we use a label to display our data. + self.g = eSlider(parent) + return self.g + \ No newline at end of file diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 4640de05..3e7146c5 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -454,6 +454,8 @@ class InfoBarEvent: self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration) self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration) + self["Now_ProgressBar"] = EventInfoProgress(self.session.nav, EventInfo.Now) + class InfoBarServiceName: def __init__(self): self["ServiceName"] = ServiceName(self.session.nav) -- 2.30.2