X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e131b75fd194db84a37f2395b5ab88093e09192f..2e874fa14264bf37f17ae9b9375e26059e7f35ec:/lib/python/Components/Converter/EventTime.py diff --git a/lib/python/Components/Converter/EventTime.py b/lib/python/Components/Converter/EventTime.py new file mode 100644 index 00000000..3c312a69 --- /dev/null +++ b/lib/python/Components/Converter/EventTime.py @@ -0,0 +1,72 @@ +from Converter import Converter +from Poll import Poll +from time import time + +class EventTime(Poll, Converter, object): + STARTTIME = 0 + ENDTIME = 1 + REMAINING = 2 + PROGRESS = 3 + DURATION = 4 + + def __init__(self, type, *args, **kwargs): + Converter.__init__(self) + Poll.__init__(self) + if type == "EndTime": + self.type = self.ENDTIME + elif type == "Remaining": + self.type = self.REMAINING + self.poll_interval = 60*1000 + self.poll_enabled = True + elif type == "StartTime": + self.type = self.STARTTIME + elif type == "Duration": + self.type = self.DURATION + elif type == "Progress": + self.type = self.PROGRESS + self.poll_interval = 30*1000 + self.poll_enabled = True + else: + raise str("'%s' is not for EventTime converter" % type) + + def getTime(self): + assert self.type != self.PROGRESS + + event = self.source.event + if event is None: + return None + + if self.type == self.STARTTIME: + return event.getBeginTime() + elif self.type == self.ENDTIME: + return event.getBeginTime() + event.getDuration() + elif self.type == self.DURATION: + return event.getDuration() + elif self.type == self.REMAINING: + now = int(time()) + start_time = event.getBeginTime() + duration = event.getDuration() + end_time = start_time + duration + if start_time <= now <= end_time: + return (duration, end_time - now) + else: + return (duration, None) + + def getValue(self): + assert self.type == self.PROGRESS + + event = self.source.event + if event is None: + return None + + now = int(time()) + start_time = event.getBeginTime() + duration = event.getDuration() + if start_time <= now <= (start_time + duration) and duration > 0: + return (now - start_time) * 1000 / duration + else: + return None + + time = property(getTime) + value = property(getValue) + range = 1000