ServiceName converter now can handle iPlayableService's and
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 2 Aug 2007 14:12:41 +0000 (14:12 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 2 Aug 2007 14:12:41 +0000 (14:12 +0000)
ServiceReference's

lib/python/Components/Converter/ServiceName.py

index fcabe42727e7e6ca7c4a8c0a078b1f3cf21effc4..97b81f609c1a231b594e78bf17e49241dded38f7 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 from Components.Converter.Converter import Converter
 # -*- coding: utf-8 -*-
 from Components.Converter.Converter import Converter
-from enigma import iServiceInformation, iPlayableService
+from enigma import iServiceInformation, iPlayableService, iPlayableServicePtr
 from Components.Element import cached
 
 class ServiceName(Converter, object):
 from Components.Element import cached
 
 class ServiceName(Converter, object):
@@ -17,26 +17,31 @@ class ServiceName(Converter, object):
                else:
                        self.type = self.NAME
 
                else:
                        self.type = self.NAME
 
-       def getServiceInfoValue(self, info, what):
-               v = info.getInfo(what)
-               if v != -2:
+       def getServiceInfoValue(self, info, what, ref=None):
+               v = ref and info.getInfo(ref, what) or info.getInfo(what)
+               if v != iServiceInformation.resIsString:
                        return "N/A"
                        return "N/A"
-               return info.getInfoString(what)
+               return ref and info.getInfoString(ref, what) or info.getInfoString(what)
 
        @cached
        def getText(self):
                service = self.source.service
 
        @cached
        def getText(self):
                service = self.source.service
-               info = service and service.info()
+               if isinstance(service, iPlayableServicePtr):
+                       info = service and service.info()
+                       ref = None
+               else: # reference
+                       info = service and self.source.info
+                       ref = service
                if info is None:
                        return ""
                if info is None:
                        return ""
-               
                if self.type == self.NAME:
                if self.type == self.NAME:
-                       return info.getName().replace('\xc2\x86', '').replace('\xc2\x87', '')
+                       name = ref and info.getName(ref) or info.getName()
+                       return name.replace('\xc2\x86', '').replace('\xc2\x87', '')
                elif self.type == self.PROVIDER:
                elif self.type == self.PROVIDER:
-                       return self.getServiceInfoValue(info, iServiceInformation.sProvider)
+                       return self.getServiceInfoValue(info, iServiceInformation.sProvider, ref)
                elif self.type == self.REFERENCE:
                elif self.type == self.REFERENCE:
-                       return self.getServiceInfoValue(info, iServiceInformation.sServiceref)
-               
+                       return self.getServiceInfoValue(info, iServiceInformation.sServiceref, ref)
+
        text = property(getText)
 
        def changed(self, what):
        text = property(getText)
 
        def changed(self, what):