some more work on plugin manager
[enigma2.git] / lib / python / Screens / SubservicesQuickzap.py
index 67e27e2a69dd59ca82cebe1d3a43669fbc765f5c..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 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
 
 
 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)
        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()
                        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)
                                "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)
 
        def onLayoutFinished(self):
                self.timer.start(0,True)
@@ -91,12 +104,15 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, In
        def showSelection(self):
                self.updateSubservices()
                tlist = []
        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):
                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:
        
        def quit(self, answer):
                if answer:
-                       self.session.nav.playService(self.restoreService)
                        self.close()
                
        def playSubservice(self, number = 0):
                        self.close()
                
        def playSubservice(self, number = 0):
@@ -121,7 +136,7 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, In
                        del self.subservices
                        del self.service
                        self.lastservice = self.currentlyPlayingSubservice
                        del self.subservices
                        del self.service
                        self.lastservice = self.currentlyPlayingSubservice
-                       self.session.nav.playService(newservice)
+                       self.session.nav.playService(newservice, False)
                        self.currentlyPlayingSubservice = number
                        self.currentSubserviceNumberLabel.setText(str(number))
                        self.doShow()
                        self.currentlyPlayingSubservice = number
                        self.currentSubserviceNumberLabel.setText(str(number))
                        self.doShow()