aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-02-13 17:03:18 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-02-13 17:03:18 +0000
commit24dab815808d6be2758f3e63f93b7c171190059e (patch)
treeb12cb49c163b7cce59accf6e5c4ec8cdfa9f7c7d /lib/python
parent05626c8692bb0775f993ee23494926b21c266eac (diff)
downloadenigma2-24dab815808d6be2758f3e63f93b7c171190059e.tar.gz
enigma2-24dab815808d6be2758f3e63f93b7c171190059e.zip
display remaining time for next event
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Components/EventInfo.py18
-rw-r--r--lib/python/Components/PerServiceDisplay.py18
-rw-r--r--lib/python/Screens/InfoBarGenerics.py2
3 files changed, 28 insertions, 10 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
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py
index 1a8f88bb..f05c4eae 100644
--- a/lib/python/Screens/InfoBarGenerics.py
+++ b/lib/python/Screens/InfoBarGenerics.py
@@ -456,7 +456,7 @@ class InfoBarEvent:
self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
- self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
+ self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Remaining)
self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
self["Now_ProgressBar"] = EventInfoProgress(self.session.nav, EventInfo.Now)