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 | |
| 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')
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 45 | ||||
| -rw-r--r-- | lib/python/Screens/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/python/Screens/SubservicesQuickzap.py | 117 | ||||
| -rw-r--r-- | lib/python/Screens/__init__.py | 2 |
4 files changed, 148 insertions, 18 deletions
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 754b673a..9562d0b7 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -692,7 +692,7 @@ class InfoBarSeek: print "unpause" if self.seekstate == self.SEEK_STATE_PLAY: return 0 - self.setSeekState(self.SEEK_STATE_PLAY); + self.setSeekState(self.SEEK_STATE_PLAY) def doSeek(self, seektime): print "doseek", seektime @@ -1022,8 +1022,9 @@ class InfoBarTimeshift: from Screens.PiPSetup import PiPSetup class InfoBarExtensions: - def __init__(self): + def __init__(self, useServicePath = True): self.session.pipshown = False + self.useServicePath = useServicePath self["InstantExtensionsActions"] = HelpableActionMap(self, "InfobarExtensions", { @@ -1060,7 +1061,8 @@ class InfoBarExtensions: newservice = self.session.nav.getCurrentlyPlayingServiceReference() if self.session.pip.playService(newservice): self.session.pipshown = True - self.session.pip.servicePath = self.servicelist.getCurrentServicePath() + if self.useServicePath: + self.session.pip.servicePath = self.servicelist.getCurrentServicePath() else: self.session.pipshown = False del self.session.pip @@ -1070,16 +1072,17 @@ class InfoBarExtensions: self.session.pipshown = False elif answer[1] == self.PIPSWAP: swapservice = self.session.nav.getCurrentlyPlayingServiceReference() - if self.session.pip.servicePath: - servicepath = self.servicelist.getCurrentServicePath() - ref=servicepath[len(servicepath)-1] - pipref=self.session.pip.getCurrentService() - self.session.pip.playService(swapservice) - self.servicelist.setCurrentServicePath(self.session.pip.servicePath) - if pipref.toString() != ref.toString(): # is a subservice ? - self.session.nav.stopService() # stop portal - self.session.nav.playService(pipref) # start subservice - self.session.pip.servicePath=servicepath + if self.useServicePath: + if self.session.pip.servicePath: + servicepath = self.servicelist.getCurrentServicePath() + ref=servicepath[len(servicepath)-1] + pipref=self.session.pip.getCurrentService() + self.session.pip.playService(swapservice) + self.servicelist.setCurrentServicePath(self.session.pip.servicePath) + if pipref.toString() != ref.toString(): # is a subservice ? + self.session.nav.stopService() # stop portal + self.session.nav.playService(pipref) # start subservice + self.session.pip.servicePath=servicepath elif answer[1] == self.MOVEPIP: self.session.open(PiPSetup, pip = self.session.pip) elif answer[1] == self.ENABLE_SUBTITLE: @@ -1284,6 +1287,7 @@ class InfoBarAudioSelection: self.audioChannel.selectChannel(mode[1]) del self.audioChannel + class InfoBarSubserviceSelection: def __init__(self): self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions", @@ -1350,12 +1354,21 @@ class InfoBarSubserviceSelection: selection = x tlist.append((i.getName(), i)) - self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection) + tlist = [(_("Quickzap"), "quickzap", service.subServices()), ("--", "")] + tlist + + keys = ["red", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n + + self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection + 2, keys = keys) def subserviceSelected(self, service): if not service is None: - self["SubserviceQuickzapAction"].setEnabled(True) - self.session.nav.playService(service[1]) + if isinstance(service[1], str): + if service[1] == "quickzap": + from Screens.SubservicesQuickzap import SubservicesQuickzap + self.session.open(SubservicesQuickzap, service[2]) + else: + self["SubserviceQuickzapAction"].setEnabled(True) + self.session.nav.playService(service[1]) class InfoBarAdditionalInfo: def __init__(self): diff --git a/lib/python/Screens/Makefile.am b/lib/python/Screens/Makefile.am index 817987ed..2e998db7 100644 --- a/lib/python/Screens/Makefile.am +++ b/lib/python/Screens/Makefile.am @@ -11,5 +11,5 @@ install_PYTHON = \ TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py PVRState.py \ Console.py InputBox.py ChoiceBox.py SimpleSummary.py ImageWizard.py \ MediaPlayer.py TimerSelection.py PictureInPicture.py TimeDateInput.py \ - SubtitleDisplay.py + SubtitleDisplay.py SubservicesQuickzap.py 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 diff --git a/lib/python/Screens/__init__.py b/lib/python/Screens/__init__.py index 55830ea6..3cb12226 100644 --- a/lib/python/Screens/__init__.py +++ b/lib/python/Screens/__init__.py @@ -6,4 +6,4 @@ __all__ = ["ChannelSelection", "ClockDisplay", "ConfigMenu", "EpgSelection", "EventView", "Standby", "ServiceInfo", "InfoBarGenerics", "HelpMenu", "Wizard", "PiPSetup", "PVRState", "Console", "InputBox", "ChoiceBox", "SimpleSummary", - "TimerSelection" ] + "TimerSelection", "SubservicesQuickzap" ] |
