Add some parental control improvements (made by Tode)
[enigma2.git] / lib / python / Screens / SubservicesQuickzap.py
index 3a2ab8a0a9b477fc54d5a61b58737f717c841e28..3bcc3c4641d571f6370141f84db2cdc623b3de16 100644 (file)
@@ -5,13 +5,21 @@ from Components.Label import Label
 from Screens.ChoiceBox import ChoiceBox
 from Screens.MessageBox import MessageBox
 from InfoBarGenerics import InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarTimeshift, InfoBarSeek, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, InfoBarAudioSelection
+from Components.ServiceEventTracker import InfoBarBase
 
 from enigma import eTimer
 
-class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, InfoBarAudioSelection, Screen):
+class SubservicesQuickzap(InfoBarBase, InfoBarShowHide, InfoBarMenu, \
+               InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, \
+               InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, \
+               InfoBarAudioSelection, Screen):
+
        def __init__(self, session, subservices):
                Screen.__init__(self, session)
-               for x in [InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport, InfoBarExtensions, InfoBarAudioSelection]:
+               for x in InfoBarBase, InfoBarShowHide, InfoBarMenu, \
+                               InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, \
+                               InfoBarTimeshiftState, InfoBarSubtitleSupport, \
+                               InfoBarExtensions, InfoBarAudioSelection:
                        x.__init__(self)
 
                self.restoreService = self.session.nav.getCurrentlyPlayingServiceReference()
@@ -45,6 +53,11 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, In
                                "9": self.keyNumberGlobal,
                                "0": self.keyNumberGlobal
                        }, 0)
+               
+               self.onClose.append(self.__onClose)
+
+       def __onClose(self):
+               self.session.nav.playService(self.restoreService, False)
 
        def onLayoutFinished(self):
                self.timer.start(0,True)
@@ -91,12 +104,15 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, In
        def showSelection(self):
                self.updateSubservices()
                tlist = []
-               if self.n is not None:
-                       for x in range(self.n):
-                               i = self.subservices.getSubservice(x)
-                               tlist.append((i.getName(), x))
+               n = self.n or 0
+               if n:
+                       idx = 0
+                       while idx < n:
+                               i = self.subservices.getSubservice(idx)
+                               tlist.append((i.getName(), idx))
+                               idx += 1
 
-               keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * self.n
+               keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n
                self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = self.currentlyPlayingSubservice, keys = keys)
        
        def subserviceSelected(self, service):
@@ -112,7 +128,6 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, In
        
        def quit(self, answer):
                if answer:
-                       self.session.nav.playService(self.restoreService, False)
                        self.close()
                
        def playSubservice(self, number = 0):