X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6bdfaadd65fe35ba568799b0e42c54e5a95e27ed..cd7a034f124ebf050675246f1b3301d1221a3f0f:/lib/python/Screens/SubservicesQuickzap.py diff --git a/lib/python/Screens/SubservicesQuickzap.py b/lib/python/Screens/SubservicesQuickzap.py index 5d3d9779..3a2ab8a0 100644 --- a/lib/python/Screens/SubservicesQuickzap.py +++ b/lib/python/Screens/SubservicesQuickzap.py @@ -4,12 +4,14 @@ from Components.Label import Label from Screens.ChoiceBox import ChoiceBox from Screens.MessageBox import MessageBox -from InfoBarGenerics import InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarTimeshift, InfoBarSeek, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport +from InfoBarGenerics import InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarTimeshift, InfoBarSeek, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, InfoBarAudioSelection -class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, Screen): +from enigma import eTimer + +class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, InfoBarAudioSelection, Screen): def __init__(self, session, subservices): Screen.__init__(self, session) - for x in [InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport, InfoBarExtensions]: + for x in [InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport, InfoBarExtensions, InfoBarAudioSelection]: x.__init__(self) self.restoreService = self.session.nav.getCurrentlyPlayingServiceReference() @@ -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.callback.append(self.playSubservice) + self.onLayoutFinish.append(self.onLayoutFinished) + self["actions"] = NumberActionMap( [ "InfobarSubserviceQuickzapActions", "NumberActions", "DirectionActions", "ColorActions" ], { "up": self.showSelection, @@ -40,10 +44,11 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, "0": self.keyNumberGlobal - }, -1) + }, 0) + + 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,38 +56,45 @@ 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() + if self.n is None: + return -1 for x in range(self.n): if service == self.subservices.getSubservice(x): - return self.n + return x def keyNumberGlobal(self, number): print number, "pressed" self.updateSubservices() if number == 0: self.playSubservice(self.lastservice) - elif number <= self.n - 1: + elif self.n is not None and number <= self.n - 1: self.playSubservice(number) def showSelection(self): self.updateSubservices() tlist = [] - for x in range(self.n): - i = self.subservices.getSubservice(x) - tlist.append((i.getName(), x)) + if self.n is not None: + for x in range(self.n): + i = self.subservices.getSubservice(x) + tlist.append((i.getName(), x)) keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * self.n self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = self.currentlyPlayingSubservice, keys = keys) @@ -100,7 +112,7 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info def quit(self, answer): if answer: - self.session.nav.playService(self.restoreService) + self.session.nav.playService(self.restoreService, False) self.close() def playSubservice(self, number = 0): @@ -109,7 +121,7 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info 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() \ No newline at end of file + self.doShow()