X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/bf5a085bb50970bb6d1e4e6b4a8b4dbce33a7ba3..7f088b2e0ec5051c3b9b9a1942198f0be28f315b:/lib/python/Screens/SubservicesQuickzap.py diff --git a/lib/python/Screens/SubservicesQuickzap.py b/lib/python/Screens/SubservicesQuickzap.py index fcedc64f..24af517d 100644 --- a/lib/python/Screens/SubservicesQuickzap.py +++ b/lib/python/Screens/SubservicesQuickzap.py @@ -4,14 +4,15 @@ 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, InfoBarAudioSelection +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, InfoBarServiceName, 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, InfoBarServiceName, 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() @@ -23,7 +24,7 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info self.currentlyPlayingSubservice = 0 self.timer = eTimer() - self.timer.timeout.get().append(self.playSubservice) + self.timer.callback.append(self.playSubservice) self.onLayoutFinish.append(self.onLayoutFinished) self["actions"] = NumberActionMap( [ "InfobarSubserviceQuickzapActions", "NumberActions", "DirectionActions", "ColorActions" ], @@ -45,6 +46,11 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info "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) @@ -74,24 +80,27 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info 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) @@ -109,7 +118,6 @@ class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, Info def quit(self, answer): if answer: - self.session.nav.playService(self.restoreService) self.close() def playSubservice(self, number = 0): @@ -118,7 +126,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()