subservice quickzap fixes
[enigma2.git] / lib / python / Screens / SubservicesQuickzap.py
index 5d3d9779a6bbe8891c57c8e3cfaac629db5b3c8b..07e35e36d21c2aa25868388011b8fa191ad60eab 100644 (file)
@@ -6,6 +6,8 @@ from Screens.ChoiceBox import ChoiceBox
 from Screens.MessageBox import MessageBox
 from InfoBarGenerics import InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarTimeshift, InfoBarSeek, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport
 
+from enigma import eTimer
+
 class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, Screen):
        def __init__(self, session, subservices):
                Screen.__init__(self, session)
@@ -19,9 +21,11 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info
                
                self.updateSubservices()
                self.currentlyPlayingSubservice = 0
-               
-               self.onLayoutFinish.append(self.playSubservice)
-                               
+
+               self.timer = eTimer()
+               self.timer.timeout.get().append(self.playSubservice)
+               self.onLayoutFinish.append(self.onLayoutFinished)
+
                self["actions"] = NumberActionMap( [ "InfobarSubserviceQuickzapActions", "NumberActions", "DirectionActions", "ColorActions" ], 
                        {
                                "up": self.showSelection,
@@ -42,8 +46,9 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info
                                "0": self.keyNumberGlobal
                        }, -1)
 
-       
-               
+       def onLayoutFinished(self):
+               self.timer.start(0,True)
+
        def updateSubservices(self):
                self.service = self.session.nav.getCurrentService()
                self.subservices = self.service and self.service.subServices()
@@ -51,18 +56,22 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info
        
        def nextSubservice(self):
                self.updateSubservices()
-               if self.currentlyPlayingSubservice == self.n - 1:
-                       self.playSubservice(0)
-               else:
-                       self.playSubservice(self.currentlyPlayingSubservice + 1)
+               if self.n:
+                       if self.currentlyPlayingSubservice >= self.n - 1:
+                               self.playSubservice(0)
+                       else:
+                               self.playSubservice(self.currentlyPlayingSubservice + 1)
        
        def previousSubservice(self):
                self.updateSubservices()
-               if self.currentlyPlayingSubservice == 0:
-                       self.playSubservice(self.n - 1)
-               else:
-                       self.playSubservice(self.currentlyPlayingSubservice - 1)
-       
+               if self.n:
+                       if self.currentlyPlayingSubservice > self.n:
+                               self.currentlyPlayingSubservice = self.n
+                       if self.currentlyPlayingSubservice == 0:
+                               self.playSubservice(self.n - 1)
+                       else:
+                               self.playSubservice(self.currentlyPlayingSubservice - 1)
+
        def getSubserviceIndex(self, service):
                self.updateSubservices()
                for x in range(self.n):