diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-08-05 17:33:32 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-08-05 17:33:32 +0000 |
| commit | 7ef9c069ca947922cf36b711f81c1450f409bc80 (patch) | |
| tree | 408309854ea40d496330a16e74e835ea99c89e80 /lib/python/Screens/SubservicesQuickzap.py | |
| parent | 2b5484730b35688c8adf4cf5c580e5746704d674 (diff) | |
| download | enigma2-7ef9c069ca947922cf36b711f81c1450f409bc80.tar.gz enigma2-7ef9c069ca947922cf36b711f81c1450f409bc80.zip | |
adding subservices quickzap (still buggy.. don't use timeshifting or PiP while in subservices quickzap mode as it will eat your cat)
Diffstat (limited to 'lib/python/Screens/SubservicesQuickzap.py')
| -rw-r--r-- | lib/python/Screens/SubservicesQuickzap.py | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/lib/python/Screens/SubservicesQuickzap.py b/lib/python/Screens/SubservicesQuickzap.py new file mode 100644 index 00000000..14b7b3c1 --- /dev/null +++ b/lib/python/Screens/SubservicesQuickzap.py @@ -0,0 +1,117 @@ +from Screens.Screen import Screen +from Components.ActionMap import NumberActionMap +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 + +class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, Screen): + def __init__(self, session, subservices): + Screen.__init__(self, session) + for x in [InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport]: + x.__init__(self) + InfoBarExtensions.__init__(self, useServicePath = False) + + + self.restoreService = self.session.nav.getCurrentlyPlayingServiceReference() + + self["CurrentSubserviceNumber"] = Label("") + self.currentSubserviceNumberLabel = self["CurrentSubserviceNumber"] + + self.updateSubservices() + self.currentlyPlayingSubservice = 0 + + self.onLayoutFinish.append(self.playSubservice) + + self["actions"] = NumberActionMap( [ "InfobarSubserviceQuickzapActions", "NumberActions", "DirectionActions", "ColorActions" ], + { + "up": self.showSelection, + "down": self.showSelection, + "right": self.nextSubservice, + "left": self.previousSubservice, + "green": self.showSelection, + "exit": self.quitQuestion, + "1": self.keyNumberGlobal, + "2": self.keyNumberGlobal, + "3": self.keyNumberGlobal, + "4": self.keyNumberGlobal, + "5": self.keyNumberGlobal, + "6": self.keyNumberGlobal, + "7": self.keyNumberGlobal, + "8": self.keyNumberGlobal, + "9": self.keyNumberGlobal, + "0": self.keyNumberGlobal + }, -1) + + + + def updateSubservices(self): + self.service = self.session.nav.getCurrentService() + self.subservices = self.service and self.service.subServices() + self.n = self.subservices and self.subservices.getNumberOfSubservices() + + def nextSubservice(self): + self.updateSubservices() + 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) + + def getSubserviceIndex(self, service): + self.updateSubservices() + for x in range(self.n): + if service == self.subservices.getSubservice(x): + return self.n + + def keyNumberGlobal(self, number): + print number, "pressed" + self.updateSubservices() + if number == 0: + self.playSubservice(self.lastservice) + elif 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)) + + 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) + + def subserviceSelected(self, service): + print "playing subservice number", service + if service is not None: + self.playSubservice(service[1]) + + def keyOK(self): + pass + + def quitQuestion(self): + self.session.openWithCallback(self.quit, MessageBox, _("Really exit the subservices quickzap?")) + + def quit(self, answer): + if answer: + self.session.nav.playService(self.restoreService) + self.close() + + def playSubservice(self, number = 0): + newservice = self.subservices.getSubservice(number) + if newservice.valid(): + del self.subservices + del self.service + self.lastservice = self.currentlyPlayingSubservice + self.session.nav.playService(newservice) + self.currentlyPlayingSubservice = number + self.currentSubserviceNumberLabel.setText(str(number)) + self.doShow()
\ No newline at end of file |
