add a radiomode background picture (mvi file.. changable in
[enigma2.git] / lib / python / Components / Converter / ServiceInfo.py
index 413aa19110d81295a43852a6b0f5f8063faa1227..e2d3fc52fe52070e51e20a8c8856c92ad0dd1f8d 100644 (file)
@@ -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
@@ -8,8 +9,8 @@ class ServiceInfo(Converter, object):
        IS_WIDESCREEN = 3
        SUBSERVICES_AVAILABLE = 4
 
-       def __init__(self, type, *args, **kwargs):
-               Converter.__init__(self)
+       def __init__(self, type):
+               Converter.__init__(self, type)
                self.type = {
                                "HasTelext": self.HAS_TELETEXT,
                                "IsMultichannel": self.IS_MULTICHANNEL,
@@ -19,19 +20,21 @@ class ServiceInfo(Converter, object):
                        }[type]
 
                self.interesting_events = {
-                               self.HAS_TELETEXT: [iPlayableService.evEnd, iPlayableService.evUpdatedInfo],
-                               self.IS_MULTICHANNEL: [iPlayableService.evUpdatedInfo, iPlayableService.evEnd],
-                               self.IS_CRYPTED: [iPlayableService.evUpdatedInfo, iPlayableService.evEnd],
-                               self.IS_WIDESCREEN: [iPlayableService.evUpdatedEventInfo, iPlayableService.evEnd],
-                               self.SUBSERVICES_AVAILABLE: [iPlayableService.evUpdatedEventInfo, iPlayableService.evEnd]
+                               self.HAS_TELETEXT: [iPlayableService.evUpdatedInfo],
+                               self.IS_MULTICHANNEL: [iPlayableService.evUpdatedInfo],
+                               self.IS_CRYPTED: [iPlayableService.evUpdatedInfo],
+                               self.IS_WIDESCREEN: [iPlayableService.evVideoSizeChanged],
+                               self.SUBSERVICES_AVAILABLE: [iPlayableService.evUpdatedEventInfo]
                        }[self.type]
 
+       @cached
        def getServiceInfoValue(self, info, what):
                v = info.getInfo(what)
                if v != -2:
                        return "N/A"
                return info.getInfoString(what)
 
+       @cached
        def getBoolean(self):
                service = self.source.service
                info = service and service.info()
@@ -61,3 +64,7 @@ class ServiceInfo(Converter, object):
                        return subservices and subservices.getNumberOfSubservices() > 0
 
        boolean = property(getBoolean)
+
+       def changed(self, what):
+               if what[0] != self.CHANGED_SPECIFIC or what[1] in self.interesting_events:
+                       Converter.changed(self, what)