X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3530bb8d4ccc94937745f920314a3f35577d7175..af653d092027ac6b091e57153c054a26aa41f326:/lib/python/Screens/MediaPlayer.py diff --git a/lib/python/Screens/MediaPlayer.py b/lib/python/Screens/MediaPlayer.py index fe1e0a8f..b03bc9bb 100644 --- a/lib/python/Screens/MediaPlayer.py +++ b/lib/python/Screens/MediaPlayer.py @@ -46,8 +46,17 @@ class MediaPlayer(Screen, InfoBarSeek): self["genre"] = Label("") #self["text"] = Input("1234", maxSize=True, type=Input.NUMBER) - - self["actions"] = NumberActionMap(["OkCancelActions", "DirectionActions", "NumberActions", "MediaPlayerSeekActions"], + + class MoviePlayerActionMap(NumberActionMap): + def __init__(self, player, contexts = [ ], actions = { }, prio=0): + NumberActionMap.__init__(self, contexts, actions, prio) + self.player = player + + def action(self, contexts, action): + self.player.show() + return NumberActionMap.action(self, contexts, action) + + self["actions"] = MoviePlayerActionMap(self, ["OkCancelActions", "DirectionActions", "NumberActions", "MediaPlayerSeekActions"], { "ok": self.ok, "cancel": self.exit, @@ -89,9 +98,9 @@ class MediaPlayer(Screen, InfoBarSeek): self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { -# iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged, -# iPlayableService.evStart: self.__serviceStarted, - + #iPlayableService.evStart: self.__serviceStarted, + #iPlayableService.evSeekableStatusChanged: InfoBarSeek.__seekableStatusChanged, + iPlayableService.evEOF: self.__evEOF, # iPlayableService.evSOF: self.__evSOF, }) @@ -124,7 +133,7 @@ class MediaPlayer(Screen, InfoBarSeek): def __evEOF(self): self.nextEntry() - + def __onClose(self): self.session.nav.playService(self.oldService) @@ -253,6 +262,7 @@ class MediaPlayer(Screen, InfoBarSeek): menu.append((_("switch to filelist"), "filelist")) menu.append((_("delete"), "delete")) menu.append((_("clear playlist"), "clear")) + menu.append((_("hide player"), "hide")); self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu) def menuCallback(self, choice): @@ -268,12 +278,16 @@ class MediaPlayer(Screen, InfoBarSeek): elif choice[1] == "filelist": self.switchToFileList() elif choice[1] == "delete": + if self.playlist.getSelectionIndex() == self.playlist.getCurrentIndex(): + self.stopEntry() self.deleteEntry() elif choice[1] == "clear": self.stopEntry() self.playlist.clear() self.switchToFileList() - + elif choice[1] == "hide": + self.hide() + def copyDirectory(self, directory): filelist = FileList(directory, useServiceRef = True, isTop = True) @@ -311,15 +325,15 @@ class MediaPlayer(Screen, InfoBarSeek): self.playEntry() def playEntry(self): - currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()] - if 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() - - + if len(self.playlist.getServiceRefList()): + currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()] + if 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 and info.getInfoString(currref, iServiceInformation.sDescription) or "" + self["title"].setText(description) + self.unPauseService() + def updatedSeekState(self): if self.seekstate == self.SEEK_STATE_PAUSE: self.playlist.pauseFile() @@ -344,5 +358,10 @@ class MediaPlayer(Screen, InfoBarSeek): def stopEntry(self): self.playlist.stopFile() self.session.nav.playService(None) + self.updateMusicInformation(clear=True) + + def unPauseService(self): + self.setSeekState(self.SEEK_STATE_PLAY) +