diff options
Diffstat (limited to 'lib/python/Screens')
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 2 | ||||
| -rw-r--r-- | lib/python/Screens/LanguageSelection.py | 24 | ||||
| -rw-r--r-- | lib/python/Screens/Makefile.am | 3 | ||||
| -rw-r--r-- | lib/python/Screens/MediaPlayer.py | 316 | ||||
| -rw-r--r-- | lib/python/Screens/StartWizard.py | 5 | ||||
| -rw-r--r-- | lib/python/Screens/TimerEntry.py | 21 |
6 files changed, 355 insertions, 16 deletions
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 8006520f..58321ac6 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -668,7 +668,7 @@ class InfoBarSeek: self.checkSkipShowHideLock() return True - + def pauseService(self): if self.seekstate == self.SEEK_STATE_PAUSE: print "pause, but in fact unpause" diff --git a/lib/python/Screens/LanguageSelection.py b/lib/python/Screens/LanguageSelection.py index 6b18121f..1d2fd787 100644 --- a/lib/python/Screens/LanguageSelection.py +++ b/lib/python/Screens/LanguageSelection.py @@ -27,26 +27,34 @@ class LanguageSelection(Screen): }, -1) def selectActiveLanguage(self): - self["list"].instance.moveSelectionTo(language.activeLanguage) + activeLanguage = language.getActiveLanguage() + pos = 0 + for x in self.list: + if x[0] == activeLanguage: + self["list"].instance.moveSelectionTo(pos) + break + pos += 1 def save(self): self.run() self.close() def run(self): - language.activateLanguage(self["list"].l.getCurrentSelectionIndex()) - config.osd.language.value = self["list"].l.getCurrentSelectionIndex() + language.activateLanguage(self["list"].l.getCurrentSelection()[0]) + config.osd.language.value = self["list"].l.getCurrentSelection()[0] config.osd.language.save() + config.misc.languageselected.value = 0 + config.misc.languageselected.save() self.setTitle(_("Language selection")) def updateList(self): self.list = [] - if len(language.lang) == 0: # no language available => display only english - self.list.append(LanguageEntryComponent("en", _("English"))) + if len(language.getLanguageList()) == 0: # no language available => display only english + self.list.append(LanguageEntryComponent("en", _("English"), "en_EN")) else: - for x in language.lang: - self.list.append(LanguageEntryComponent(x[3].lower(), _(x[0]))) - + for x in language.getLanguageList(): + self.list.append(LanguageEntryComponent(file = x[1][3].lower(), name = _(x[1][0]), index = x[0])) + self.list.sort(key=lambda x: x[1][7]) self["list"].l.setList(self.list) def up(self): diff --git a/lib/python/Screens/Makefile.am b/lib/python/Screens/Makefile.am index 7a30e88a..ea314e24 100644 --- a/lib/python/Screens/Makefile.am +++ b/lib/python/Screens/Makefile.am @@ -9,4 +9,5 @@ install_PYTHON = \ AudioSelection.py InfoBarGenerics.py HelpMenu.py Wizard.py __init__.py \ Dish.py SubserviceSelection.py LanguageSelection.py StartWizard.py \ TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py PVRState.py \ - Console.py InputBox.py ChoiceBox.py SimpleSummary.py ImageWizard.py + Console.py InputBox.py ChoiceBox.py SimpleSummary.py ImageWizard.py \ + MediaPlayer.py diff --git a/lib/python/Screens/MediaPlayer.py b/lib/python/Screens/MediaPlayer.py new file mode 100644 index 00000000..95ff16aa --- /dev/null +++ b/lib/python/Screens/MediaPlayer.py @@ -0,0 +1,316 @@ +from enigma import eTimer, iPlayableService, eServiceCenter, iServiceInformation, eSize +from Screens.Screen import Screen +from Screens.MessageBox import MessageBox +from Components.ActionMap import NumberActionMap +from Components.Label import Label +from Components.Input import Input +from Components.GUIComponent import * +from Components.Pixmap import Pixmap +from Components.Label import Label +from Components.FileList import FileEntryComponent, FileList +from Components.MediaPlayer import PlayList, PlaylistEntryComponent +from Plugins.Plugin import PluginDescriptor +from Tools.Directories import resolveFilename, SCOPE_MEDIA +from Components.ServicePosition import ServicePositionGauge +from Screens.ChoiceBox import ChoiceBox +from Components.ServiceEventTracker import ServiceEventTracker +from Screens.InfoBarGenerics import InfoBarSeek + +import os + +class MediaPlayer(Screen, InfoBarSeek): + def __init__(self, session, args = None): + Screen.__init__(self, session) + self.session.nav.stopService() + + self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "^.*\.(mp3|ogg|ts|avi)", useServiceRef = True) + self["filelist"] = self.filelist + + self.playlist = PlayList() + self["playlist"] = self.playlist + + self["PositionGauge"] = ServicePositionGauge(self.session.nav) + + self["currenttext"] = Label("") + + self["artisttext"] = Label(_("Artist:")) + self["artist"] = Label("") + self["titletext"] = Label(_("Title:")) + self["title"] = Label("") + self["albumtext"] = Label(_("Album:")) + self["album"] = Label("") + self["yeartext"] = Label(_("Year:")) + self["year"] = Label("") + self["genretext"] = Label(_("Genre:")) + self["genre"] = Label("") + + self.__event_tracker = ServiceEventTracker(screen=self, eventmap= + { +# iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged, +# iPlayableService.evStart: self.__serviceStarted, + + iPlayableService.evEOF: self.__evEOF, +# iPlayableService.evSOF: self.__evSOF, + }) + + + #self["text"] = Input("1234", maxSize=True, type=Input.NUMBER) + + self["actions"] = NumberActionMap(["OkCancelActions", "DirectionActions", "NumberActions", "MediaPlayerSeekActions"], + { + "ok": self.ok, + "cancel": self.close, + + "right": self.rightDown, + "rightRepeated": self.doNothing, + "rightUp": self.rightUp, + "left": self.leftDown, + "leftRepeated": self.doNothing, + "leftUp": self.leftUp, + + "up": self.up, + "upRepeated": self.up, + "down": self.down, + "downRepeated": self.down, + + "play": self.playEntry, + "pause": self.pauseEntry, + "stop": self.stopEntry, + + "previous": self.previousEntry, + "next": self.nextEntry, + + "menu": self.showMenu, + + "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 + }, -2) + + InfoBarSeek.__init__(self) + + self.onClose.append(self.delMPTimer) + self.onClose.append(self.__onClose) + + self.righttimer = False + self.rightKeyTimer = eTimer() + self.rightKeyTimer.timeout.get().append(self.rightTimerFire) + + self.lefttimer = False + self.leftKeyTimer = eTimer() + self.leftKeyTimer.timeout.get().append(self.leftTimerFire) + + self.currList = "filelist" + + def doNothing(self): + pass + + def checkSkipShowHideLock(self): + self.updatedSeekState() + + def __evEOF(self): + self.nextEntry() + + def __onClose(self): + self.session.nav.playService(None) + + def delMPTimer(self): + del self.rightKeyTimer + del self.leftKeyTimer + + + def fwdTimerFire(self): + self.fwdKeyTimer.stop() + self.fwdtimer = False + self.nextEntry() + + def rwdTimerFire(self): + self.rwdKeyTimer.stop() + self.rwdtimer = False + self.previousEntry() + + def leftDown(self): + self.lefttimer = True + self.leftKeyTimer.start(1000) + + def rightDown(self): + self.righttimer = True + self.rightKeyTimer.start(1000) + + def leftUp(self): + if self.lefttimer: + self.leftKeyTimer.stop() + self.lefttimer = False + self[self.currList].pageUp() + + def rightUp(self): + if self.righttimer: + self.rightKeyTimer.stop() + self.righttimer = False + self[self.currList].pageDown() + + def leftTimerFire(self): + self.leftKeyTimer.stop() + self.lefttimer = False + self.switchToFileList() + + def rightTimerFire(self): + self.rightKeyTimer.stop() + self.righttimer = False + self.switchToPlayList() + + def switchToFileList(self): + self.currList = "filelist" + self.filelist.selectionEnabled(1) + self.playlist.selectionEnabled(0) + self.updateCurrentInfo() + + def switchToPlayList(self): + if len(self.playlist) != 0: + self.currList = "playlist" + self.filelist.selectionEnabled(0) + self.playlist.selectionEnabled(1) + self.updateCurrentInfo() + + def up(self): + self[self.currList].up() + self.updateCurrentInfo() + + def down(self): + self[self.currList].down() + self.updateCurrentInfo() + + def updateCurrentInfo(self): + text = "" + if self.currList == "filelist": + if not self.filelist.canDescent(): + text = self.filelist.getServiceRef().getPath() + if self.currList == "playlist": + text = self.playlist.getSelection().getPath() + + self["currenttext"].setText(os.path.basename(text)) + + def ok(self): + if self.currList == "filelist": + if self.filelist.canDescent(): + self.filelist.descent() + self.updateCurrentInfo() + else: + self.copyFile() + if self.currList == "playlist": + selection = self["playlist"].getSelection() + self.changeEntry(self.playlist.getSelectionIndex()) + + def keyNumberGlobal(self, number): + pass + + def showMenu(self): + menu = [] + if self.currList == "filelist": + menu.append((_("switch to playlist"), "playlist")) + if self.filelist.canDescent(): + menu.append((_("add directory to playlist"), "copydir")) + else: + menu.append((_("add file to playlist"), "copy")) + else: + menu.append((_("switch to filelist"), "filelist")) + menu.append((_("delete"), "delete")) + menu.append((_("clear playlist"), "clear")) + self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu) + + def menuCallback(self, choice): + if choice is None: + return + + if choice[1] == "copydir": + self.copyDirectory(self.filelist.getSelection()[0]) + elif choice[1] == "copy": + self.copyFile() + elif choice[1] == "playlist": + self.switchToPlayList() + elif choice[1] == "filelist": + self.switchToFileList() + elif choice[1] == "delete": + self.deleteEntry() + elif choice[1] == "clear": + self.stopEntry() + self.playlist.clear() + self.switchToFileList() + + def copyDirectory(self, directory): + filelist = FileList(directory, useServiceRef = True, isTop = True) + + for x in filelist.getFileList(): + if x[0][1] == True: #isDir + self.copyDirectory(x[0][0]) + else: + self.playlist.addFile(x[0][0]) + self.playlist.updateList() + + def copyFile(self): + self.playlist.addFile(self.filelist.getServiceRef()) + self.playlist.updateList() + + def nextEntry(self): + next = self.playlist.getCurrentIndex() + 1 + if next < len(self.playlist): + self.changeEntry(next) + + def previousEntry(self): + next = self.playlist.getCurrentIndex() - 1 + if next >= 0: + self.changeEntry(next) + + def deleteEntry(self): + self.playlist.deleteFile(self.playlist.getSelectionIndex()) + self.playlist.updateList() + if len(self.playlist) == 0: + self.switchToFileList() + + def changeEntry(self, index): + self.playlist.setCurrentPlaying(index) + self.playEntry() + + def playEntry(self): + currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()] + if currref is None or self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference(): + self.session.nav.playService(self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]) + info = eServiceCenter.getInstance().info(currref) + description = info.getInfoString(currref, iServiceInformation.sDescription) + self["title"].setText(description) + self.unPauseService() + + + def updatedSeekState(self): + if self.seekstate == self.SEEK_STATE_PAUSE: + self.playlist.pauseFile() + elif self.seekstate == self.SEEK_STATE_PLAY: + self.playlist.playFile() + elif self.seekstate in ( self.SEEK_STATE_FF_2X, + self.SEEK_STATE_FF_4X, + self.SEEK_STATE_FF_8X, + self.SEEK_STATE_FF_32X, + self.SEEK_STATE_FF_64X, + self.SEEK_STATE_FF_128X): + self.playlist.forwardFile() + elif self.seekstate in ( self.SEEK_STATE_BACK_16X, + self.SEEK_STATE_BACK_32X, + self.SEEK_STATE_BACK_64X, + self.SEEK_STATE_BACK_128X,): + self.playlist.rewindFile() + + def pauseEntry(self): + self.pauseService() + + def stopEntry(self): + self.playlist.stopFile() + self.session.nav.playService(None) + + diff --git a/lib/python/Screens/StartWizard.py b/lib/python/Screens/StartWizard.py index 8f356edc..8fc4ecdf 100644 --- a/lib/python/Screens/StartWizard.py +++ b/lib/python/Screens/StartWizard.py @@ -6,6 +6,7 @@ from Components.config import configElementBoolean, config, configfile from LanguageSelection import LanguageSelection config.misc.firstrun = configElementBoolean("config.misc.firstrun", 1); +config.misc.languageselected = configElementBoolean("config.misc.languageselected", 1); class StartWizard(Wizard): skin = """ @@ -33,9 +34,9 @@ class StartWizard(Wizard): self["arrowup2"] = MovingPixmap() def markDone(self): - config.misc.firstrun.value = 0; + config.misc.firstrun.value = 0 config.misc.firstrun.save() configfile.save() -wizardManager.registerWizard(LanguageSelection, config.misc.firstrun.value) +wizardManager.registerWizard(LanguageSelection, config.misc.languageselected.value) wizardManager.registerWizard(StartWizard, config.misc.firstrun.value) diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index 3aa56800..7e2e55c8 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -54,6 +54,11 @@ class TimerEntry(Screen): def createConfig(self): config.timerentry = ConfigSubsection() + if (self.timer.justplay): + justplay = 0 + else: + justplay = 1 + # calculate default values day = [] weekday = 0 @@ -87,6 +92,7 @@ class TimerEntry(Screen): weekday = (int(strftime("%w", time.localtime(self.timer.begin))) - 1) % 7 day[weekday] = 0 + config.timerentry.justplay = configElement_nonSave("config.timerentry.justplay", configSelection, justplay, (("zap", _("zap")), ("record", _("record")))) config.timerentry.type = configElement_nonSave("config.timerentry.type", configSelection, type, (_("once"), _("repeated"))) config.timerentry.name = configElement_nonSave("config.timerentry.name", configText, self.timer.name, (configText.extendableSize, self.keyRightCallback)) config.timerentry.description = configElement_nonSave("config.timerentry.description", configText, self.timer.description, (configText.extendableSize, self.keyRightCallback)) @@ -139,7 +145,9 @@ class TimerEntry(Screen): self.list = [] self.list.append(getConfigListEntry(_("Name"), config.timerentry.name)) self.list.append(getConfigListEntry(_("Description"), config.timerentry.description)) - self.timerTypeEntry = getConfigListEntry(_("Timer Type"), config.timerentry.type) + self.timerJustplayEntry = getConfigListEntry(_("Timer Type"), config.timerentry.justplay) + self.list.append(self.timerJustplayEntry) + self.timerTypeEntry = getConfigListEntry(_("Repeat Type"), config.timerentry.type) self.list.append(self.timerTypeEntry) if (config.timerentry.type.value == 0): # once @@ -172,10 +180,12 @@ class TimerEntry(Screen): else: self.list.append(getConfigListEntry(_("StartTime"), config.timerentry.starttime)) if (config.timerentry.type.value == 0): # once - self.list.append(getConfigListEntry(_("End"), config.timerentry.enddate)) - self.list.append(getConfigListEntry(" ", config.timerentry.endtime)) + if currentConfigSelectionElement(config.timerentry.justplay) != "zap": + self.list.append(getConfigListEntry(_("End"), config.timerentry.enddate)) + self.list.append(getConfigListEntry(" ", config.timerentry.endtime)) else: - self.list.append(getConfigListEntry(_("EndTime"), config.timerentry.endtime)) + if currentConfigSelectionElement(config.timerentry.justplay) != "zap": + self.list.append(getConfigListEntry(_("EndTime"), config.timerentry.endtime)) self.channelEntry = getConfigListEntry(_("Channel"), config.timerentry.service) self.list.append(self.channelEntry) @@ -187,6 +197,8 @@ class TimerEntry(Screen): print "newConfig", self["config"].getCurrent() if self["config"].getCurrent() == self.timerTypeEntry: self.createSetup("config") + if self["config"].getCurrent() == self.timerJustplayEntry: + self.createSetup("config") if self["config"].getCurrent() == self.frequencyEntry: self.createSetup("config") @@ -242,6 +254,7 @@ class TimerEntry(Screen): def keyGo(self): self.timer.name = config.timerentry.name.value self.timer.description = config.timerentry.description.value + self.timer.justplay = (currentConfigSelectionElement(config.timerentry.justplay) == "zap") self.timer.resetRepeated() if (config.timerentry.type.value == 0): # once |
