X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/be98c731e6b92060760fb0c5e8567dcf747235e5..5e942862b2017443ec34831f649f890f8215a534:/lib/python/Plugins/Extensions/MediaPlayer/plugin.py diff --git a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py index 2c9097fb..fa7f1643 100644 --- a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py @@ -33,10 +33,11 @@ class MyPlayList(PlayList): class MediaPixmap(Pixmap): def applySkin(self, desktop): self.default_pixmap = None - for (attrib, value) in self.skinAttributes: - if attrib == "pixmap": - self.default_pixmap = value - break + if self.skinAttributes is not None: + for (attrib, value) in self.skinAttributes: + if attrib == "pixmap": + self.default_pixmap = value + break if self.default_pixmap is None: self.default_pixmap = resolveFilename(SCOPE_SKIN_IMAGE, "no_coverArt.png") return Pixmap.applySkin(self, desktop) @@ -106,11 +107,11 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions", { - "play": (self.playEntry, _("play entry")), + "play": (self.xplayEntry, _("play entry")), "pause": (self.pauseEntry, _("pause")), "stop": (self.stopEntry, _("stop entry")), - "previous": (self.previousEntry, _("play previous playlist entry")), - "next": (self.nextEntry, _("play next playlist entry")), + "previous": (self.previousMarkOrEntry, _("play from previous mark or playlist entry")), + "next": (self.nextMarkOrEntry, _("play from next mark or playlist entry")), "menu": (self.showMenu, _("menu")), "skipListbegin": (self.skip_listbegin, _("jump to listbegin")), "skipListend": (self.skip_listend, _("jump to listend")), @@ -145,24 +146,16 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup InfoBarSeek.__init__(self, actionmap = "MediaPlayerSeekActions") - self.__event_tracker = ServiceEventTracker(screen=self, eventmap= - { - #iPlayableService.evStart: self.__serviceStarted, - #iPlayableService.evSeekableStatusChanged: InfoBarSeek.__seekableStatusChanged, - - iPlayableService.evEOF: self.__evEOF, - }) - self.onClose.append(self.delMPTimer) self.onClose.append(self.__onClose) self.righttimer = False self.rightKeyTimer = eTimer() - self.rightKeyTimer.timeout.get().append(self.rightTimerFire) + self.rightKeyTimer.callback.append(self.rightTimerFire) self.lefttimer = False self.leftKeyTimer = eTimer() - self.leftKeyTimer.timeout.get().append(self.leftTimerFire) + self.leftKeyTimer.callback.append(self.leftTimerFire) self.currList = "filelist" @@ -195,8 +188,11 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup def checkSkipShowHideLock(self): self.updatedSeekState() - def __evEOF(self): - self.nextEntry() + def doEofInternal(self, playing): + if playing: + self.nextEntry() + else: + self.show() def __onClose(self): self.session.nav.playService(self.oldService) @@ -569,10 +565,19 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup if next < len(self.playlist): self.changeEntry(next) - def previousEntry(self): - next = self.playlist.getCurrentIndex() - 1 - if next >= 0: - self.changeEntry(next) + def nextMarkOrEntry(self): + if not self.jumpPreviousNextMark(lambda x: x): + next = self.playlist.getCurrentIndex() + 1 + if next < len(self.playlist): + self.changeEntry(next) + else: + self.doSeek(-1) + + def previousMarkOrEntry(self): + if not self.jumpPreviousNextMark(lambda x: -x-5*90000, start=True): + next = self.playlist.getCurrentIndex() - 1 + if next >= 0: + self.changeEntry(next) def deleteEntry(self): self.playlist.deleteFile(self.playlist.getSelectionIndex()) @@ -590,7 +595,24 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup if serviceRefList[count] == serviceref: self.changeEntry(count) break - + + def xplayEntry(self): + if self.currList == "playlist": + self.playEntry() + else: + self.stopEntry() + self.playlist.clear() + sel = self.filelist.getSelection() + if sel: + if sel[1]: # can descent + # add directory to playlist + self.copyDirectory(sel[0]) + else: + # add files to playlist + self.copyDirectory(os_path.dirname(sel[0].getPath()) + "/", recursive = False) + if len(self.playlist) > 0: + self.changeEntry(0) + def playEntry(self): if len(self.playlist.getServiceRefList()): needsInfoUpdate = False @@ -657,21 +679,9 @@ class MediaPlayer(Screen, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSup 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_16X, - self.SEEK_STATE_FF_32X, - self.SEEK_STATE_FF_48X, - self.SEEK_STATE_FF_64X, - self.SEEK_STATE_FF_128X): + elif self.isStateForward(self.seekstate): self.playlist.forwardFile() - elif self.seekstate in ( self.SEEK_STATE_BACK_8X, - self.SEEK_STATE_BACK_16X, - self.SEEK_STATE_BACK_32X, - self.SEEK_STATE_BACK_48X, - self.SEEK_STATE_BACK_64X, - self.SEEK_STATE_BACK_128X): + elif self.isStateBackward(self.seekstate): self.playlist.rewindFile() def pauseEntry(self):