X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/90e5883ba2ab4147b8a62b545fd8d862c6058314..3ec9c0fb7a5fc5d1f5b1f86283861f9c0067e2a1:/lib/python/Components/Converter/ServicePosition.py diff --git a/lib/python/Components/Converter/ServicePosition.py b/lib/python/Components/Converter/ServicePosition.py index 87169333..94d71222 100644 --- a/lib/python/Components/Converter/ServicePosition.py +++ b/lib/python/Components/Converter/ServicePosition.py @@ -1,6 +1,7 @@ from Converter import Converter from Poll import Poll from enigma import iPlayableService +from Components.Element import cached class ServicePosition(Converter, Poll, object): TYPE_LENGTH = 0, @@ -8,9 +9,9 @@ class ServicePosition(Converter, Poll, object): TYPE_REMAINING = 2, TYPE_GAUGE = 3 - def __init__(self, type, *args, **kwargs): + def __init__(self, type): Poll.__init__(self) - Converter.__init__(self) + Converter.__init__(self, type) if type == "Length": self.type = self.TYPE_LENGTH elif type == "Position": @@ -27,6 +28,7 @@ class ServicePosition(Converter, Poll, object): s = self.source.service return s and s.seek() + @cached def getPosition(self): seek = self.getSeek() if seek is None: @@ -36,6 +38,7 @@ class ServicePosition(Converter, Poll, object): return 0 return pos[1] + @cached def getLength(self): seek = self.getSeek() if seek is None: @@ -45,11 +48,13 @@ class ServicePosition(Converter, Poll, object): return 0 return length[1] + @cached def getCutlist(self): service = self.source.service cue = service and service.cueSheet() return cue and cue.getCutList() + @cached def getText(self): seek = self.getSeek() if seek is None: @@ -63,20 +68,27 @@ class ServicePosition(Converter, Poll, object): l = self.length - self.position l /= 90000 - return "%d:%02d" % (l/60, l%60) + + if l > 0: + sign = "" + else: + l = -l + sign = "-" + + return sign + "%d:%02d" % (l/60, l%60) position = property(getPosition) length = property(getLength) cutlist = property(getCutlist) text = property(getText) - def changed(self, *args): - cutlist_refresh = len(args) and args[0] in [iPlayableService.evCuesheetChanged, iPlayableService.evStart, iPlayableService.evEnd] - time_refresh = not len(args) or args[0] in [iPlayableService.evStart, iPlayableService.evEnd] + def changed(self, what): + cutlist_refresh = what[0] != self.CHANGED_SPECIFIC or what[1] in [iPlayableService.evCuesheetChanged] + time_refresh = what[0] == self.CHANGED_POLL or what[0] == self.CHANGED_SPECIFIC and what[1] in [iPlayableService.evCuesheetChanged] if cutlist_refresh: if self.type == self.TYPE_GAUGE: self.downstream_elements.cutlist_changed() if time_refresh: - self.downstream_elements.changed() + self.downstream_elements.changed(what)