aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens
diff options
context:
space:
mode:
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>2006-08-05 17:33:32 +0000
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>2006-08-05 17:33:32 +0000
commit7ef9c069ca947922cf36b711f81c1450f409bc80 (patch)
tree408309854ea40d496330a16e74e835ea99c89e80 /lib/python/Screens
parent2b5484730b35688c8adf4cf5c580e5746704d674 (diff)
downloadenigma2-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')
-rw-r--r--lib/python/Screens/InfoBarGenerics.py45
-rw-r--r--lib/python/Screens/Makefile.am2
-rw-r--r--lib/python/Screens/SubservicesQuickzap.py117
-rw-r--r--lib/python/Screens/__init__.py2
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" ]