X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1557c715e461d5a7deb04bb008c6497441351bbe..5e0d91a196bfe872d04d676e5f6c2d5940786be0:/lib/python/Components/Converter/ServiceInfo.py diff --git a/lib/python/Components/Converter/ServiceInfo.py b/lib/python/Components/Converter/ServiceInfo.py index e1351c56..71180254 100644 --- a/lib/python/Components/Converter/ServiceInfo.py +++ b/lib/python/Components/Converter/ServiceInfo.py @@ -1,5 +1,6 @@ from Components.Converter.Converter import Converter from enigma import iServiceInformation, iPlayableService +from Components.Element import cached class ServiceInfo(Converter, object): HAS_TELETEXT = 0 @@ -7,6 +8,8 @@ class ServiceInfo(Converter, object): IS_CRYPTED = 2 IS_WIDESCREEN = 3 SUBSERVICES_AVAILABLE = 4 + XRES = 5 + YRES = 6 def __init__(self, type): Converter.__init__(self, type) @@ -16,28 +19,30 @@ class ServiceInfo(Converter, object): "IsCrypted": self.IS_CRYPTED, "IsWidescreen": self.IS_WIDESCREEN, "SubservicesAvailable": self.SUBSERVICES_AVAILABLE, + "VideoWidth": self.XRES, + "VideoHeight": self.YRES, }[type] self.interesting_events = { self.HAS_TELETEXT: [iPlayableService.evUpdatedInfo], self.IS_MULTICHANNEL: [iPlayableService.evUpdatedInfo], self.IS_CRYPTED: [iPlayableService.evUpdatedInfo], - self.IS_WIDESCREEN: [iPlayableService.evUpdatedEventInfo], - self.SUBSERVICES_AVAILABLE: [iPlayableService.evUpdatedEventInfo] + self.IS_WIDESCREEN: [iPlayableService.evVideoSizeChanged], + self.SUBSERVICES_AVAILABLE: [iPlayableService.evUpdatedEventInfo], + self.XRES: [iPlayableService.evVideoSizeChanged], + self.YRES: [iPlayableService.evVideoSizeChanged], }[self.type] - def getServiceInfoValue(self, info, what): + def getServiceInfoString(self, info, what): v = info.getInfo(what) - if v != -2: + if v == -1: return "N/A" - return info.getInfoString(what) + if v == -2: + return info.getInfoString(what) + return "%d" % v + @cached def getBoolean(self): - if self.cache is None: - self.cache = self.__getBoolean() - return self.cache - - def __getBoolean(self): service = self.source.service info = service and service.info() if not info: @@ -66,6 +71,37 @@ class ServiceInfo(Converter, object): return subservices and subservices.getNumberOfSubservices() > 0 boolean = property(getBoolean) + + @cached + def getText(self): + service = self.source.service + info = service and service.info() + if not info: + return "" + + if self.type == self.XRES: + return self.getServiceInfoString(info, iServiceInformation.sVideoWidth) + if self.type == self.YRES: + return self.getServiceInfoString(info, iServiceInformation.sVideoHeight) + return "" + + text = property(getText) + + @cached + def getValue(self): + service = self.source.service + info = service and service.info() + if not info: + return -1 + + if self.type == self.XRES: + return info.getInfo(iServiceInformation.sVideoWidth) + if self.type == self.YRES: + return info.getInfo(iServiceInformation.sVideoHeight) + + return -1 + + value = property(getValue) def changed(self, what): if what[0] != self.CHANGED_SPECIFIC or what[1] in self.interesting_events: