diff options
Diffstat (limited to 'lib/python/Components')
| -rw-r--r-- | lib/python/Components/EventInfo.py | 18 | ||||
| -rw-r--r-- | lib/python/Components/PerServiceDisplay.py | 18 |
2 files changed, 27 insertions, 9 deletions
diff --git a/lib/python/Components/EventInfo.py b/lib/python/Components/EventInfo.py index de16a173..69487b5f 100644 --- a/lib/python/Components/EventInfo.py +++ b/lib/python/Components/EventInfo.py @@ -11,6 +11,7 @@ class EventInfo(PerServiceDisplay): Next_Duration = 3 Now_StartTime = 4 Next_StartTime = 5 + Now_Remaining = 6 def __init__(self, navcore, now_or_next): # listen to evUpdatedEventInfo and evEnd @@ -21,6 +22,9 @@ class EventInfo(PerServiceDisplay): iPlayableService.evUpdatedEventInfo: self.ourEvent, iPlayableService.evEnd: self.stopEvent }) + + if now_or_next in [self.Now_Remaining]: + self.enablePolling() def ourEvent(self): info = iServiceInformationPtr() @@ -33,20 +37,22 @@ class EventInfo(PerServiceDisplay): if ev is not None: self.update(ev) - def update(self, ev): - if (self.Now_Duration <= self.now_or_next <= self.Next_Duration): + if self.now_or_next == self.Now_Remaining and ev.getBeginTime() <= time() <= (ev.getBeginTime() + ev.getDuration()): + self.setText("+%d min" % ((ev.getBeginTime() + ev.getDuration() - time()) / 60)) + elif self.now_or_next in [self.Now_Duration, self.Next_Duration, self.Now_Remaining]: self.setText("%d min" % (ev.getDuration() / 60)) - if (self.Now_StartTime <= self.now_or_next <= self.Next_StartTime): + elif self.now_or_next in [self.Now_StartTime, self.Next_StartTime]: self.setText(strftime("%H:%M", localtime(ev.getBeginTime()))) - if (self.Now <= self.now_or_next <= self.Next): + elif self.now_or_next in [self.Now, self.Next]: self.setText(ev.getEventName()) def stopEvent(self): self.setText( - #(_("waiting for event data..."), "", "--:--", "--:--", "--:--", "--:--")[self.now_or_next]); - ("", "", "--:--", "--:--", "--:--", "--:--")[self.now_or_next]); + ("", "", "", "", "--:--", "--:--", "")[self.now_or_next]); + def poll(self): + self.ourEvent() class EventInfoProgress(PerServiceDisplayProgress, EventInfo): def __init__(self, navcore, now_or_next): diff --git a/lib/python/Components/PerServiceDisplay.py b/lib/python/Components/PerServiceDisplay.py index fe501052..23f6ecce 100644 --- a/lib/python/Components/PerServiceDisplay.py +++ b/lib/python/Components/PerServiceDisplay.py @@ -3,7 +3,7 @@ from VariableText import * from VariableValue import * from enigma import iPlayableService -from enigma import eLabel, eSlider +from enigma import eLabel, eSlider, eTimer class PerServiceDisplay(GUIComponent, VariableText): """Mixin for building components which display something which changes on navigation events, for example "service name" """ @@ -14,7 +14,9 @@ class PerServiceDisplay(GUIComponent, VariableText): self.eventmap = eventmap self.navcore = navcore self.navcore.event.append(self.event) - + self.poll_timer = eTimer() + self.poll_timer.timeout.get().append(self.poll) + # start with stopped state, so simulate that self.event(iPlayableService.evEnd) @@ -29,6 +31,17 @@ class PerServiceDisplay(GUIComponent, VariableText): g = eLabel(parent) return g + def enablePolling(self, interval=60000): + if interval: + self.poll_timer.start(interval) + else: + self.poll_timer.stop() + + def disablePolling(self): + self.enablePolling(interval=0) + + def poll(self): + pass class PerServiceDisplayProgress(GUIComponent, VariableValue, PerServiceDisplay): def __init__(self, navcore, eventmap): @@ -46,4 +59,3 @@ class PerServiceDisplayProgress(GUIComponent, VariableValue, PerServiceDisplay): # by default, we use a label to display our data. self.g = eSlider(parent) return self.g -
\ No newline at end of file |
