add missing 16X seek forward,
[enigma2.git] / lib / python / Screens / MediaPlayer.py
index fe1e0a8fd857dbece1c25f3618187df5031b8b89..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,348 +0,0 @@
-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.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
-               self.session.nav.stopService()
-               
-               self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "^.*\.(mp3|ogg|ts|wav|wave)", 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["text"] = Input("1234", maxSize=True, type=Input.NUMBER)
-                
-               self["actions"] = NumberActionMap(["OkCancelActions", "DirectionActions", "NumberActions", "MediaPlayerSeekActions"],
-               {
-                       "ok": self.ok,
-                       "cancel": self.exit,
-                       
-                       "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.__event_tracker = ServiceEventTracker(screen=self, eventmap=
-                       {
-#                              iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged,
-#                              iPlayableService.evStart: self.__serviceStarted,
-                               
-                               iPlayableService.evEOF: self.__evEOF,
-#                              iPlayableService.evSOF: self.__evSOF,
-                       })
-
-               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.infoTimer = eTimer()
-               self.infoTimer.timeout.get().append(self.infoTimerFire)
-               self.infoTimer.start(500)
-               
-               self.currList = "filelist"
-               
-       def doNothing(self):
-               pass
-       
-       def exit(self):
-               self.close()
-       
-       def checkSkipShowHideLock(self):
-               self.updatedSeekState()
-       
-       def __evEOF(self):
-               self.nextEntry()
-               
-       def __onClose(self):
-               self.session.nav.playService(self.oldService)
-       
-       def delMPTimer(self):
-               del self.rightKeyTimer
-               del self.leftKeyTimer
-               del self.infoTimer
-               
-       def infoTimerFire(self):
-               currPlay = self.session.nav.getCurrentService()
-               if currPlay is not None:
-                       self.updateMusicInformation( artist = currPlay.info().getInfoString(iServiceInformation.sArtist),
-                                                                                title = currPlay.info().getInfoString(iServiceInformation.sTitle),
-                                                                                album = currPlay.info().getInfoString(iServiceInformation.sAlbum),
-                                                                                genre = currPlay.info().getInfoString(iServiceInformation.sGenre),
-                                                                                clear = True)
-               else:
-                       self.updateMusicInformation()
-       
-       def updateMusicInformation(self, artist = "", title = "", album = "", year = "", genre = "", clear = False):
-               self.updateSingleMusicInformation("artist", artist, clear)
-               self.updateSingleMusicInformation("title", title, clear)
-               self.updateSingleMusicInformation("album", album, clear)
-               self.updateSingleMusicInformation("year", year, clear)
-               self.updateSingleMusicInformation("genre", genre, clear)
-
-       def updateSingleMusicInformation(self, name, info, clear):
-               if info != "" or clear:
-                       if self[name].getText() != info:
-                               self[name].setText(info)
-
-       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()
-               if len(self.playlist) == 1:
-                       self.changeEntry(0)
-
-       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 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)
-
-