some cleanups,
[vuplus_dvbapp] / lib / python / Components / Sources / FrontendInfo.py
index 142573c..bcca7c3 100644 (file)
@@ -1,12 +1,27 @@
+from enigma import iPlayableService
 from Source import Source
+from Components.PerServiceDisplay import PerServiceBase
 
-class FrontendInfo(Source):
-       def __init__(self, service_source = None, frontend_source = None):
+class FrontendInfo(Source, PerServiceBase):
+       def __init__(self, service_source = None, frontend_source = None, navcore = None):
+               self.navcore = None
                Source.__init__(self)
+               if navcore:
+                       PerServiceBase.__init__(self, navcore,
+                       {
+                               iPlayableService.evTunedIn: self.updateFrontendData,
+                               iPlayableService.evEnd: self.serviceEnd
+                       })
                self.service_source = service_source
                self.frontend_source = frontend_source
                self.updateFrontendData()
 
+       def serviceEnd(self):
+#              import pdb
+#              pdb.set_trace()
+               self.slot_number = self.frontend_type = None
+               self.changed((self.CHANGED_CLEAR, ))
+
        def updateFrontendData(self):
                data = self.getFrontendData()
                if not data:
@@ -24,8 +39,17 @@ class FrontendInfo(Source):
                                frontend.getFrontendData(dict)
                        return dict
                elif self.service_source:
-                       service = self.service_source()
+                       service = self.navcore and self.service_source()
+                       feinfo = service and service.frontendInfo()
+                       return feinfo and feinfo.getFrontendData()
+               elif self.navcore:
+                       service = self.navcore.getCurrentService()
                        feinfo = service and service.frontendInfo()
                        return feinfo and feinfo.getFrontendData()
                else:
                        return None
+
+       def destroy(self):
+               if not self.frontend_source and not self.service_source:
+                       PerServiceBase.destroy(self)
+               Source.destroy(self)