From aa14114f1c17459de0aa31a0268224c4b959e2a8 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Sun, 18 Jun 2006 22:40:10 +0000 Subject: [PATCH] more flexible way of adding new playlist types add .e2 as playlist type for the internal e2 playlist --- lib/python/Screens/MediaPlayer.py | 35 ++++++++++++++++++------------- lib/service/servicefs.cpp | 2 ++ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/lib/python/Screens/MediaPlayer.py b/lib/python/Screens/MediaPlayer.py index f042a5c3..43658c8f 100644 --- a/lib/python/Screens/MediaPlayer.py +++ b/lib/python/Screens/MediaPlayer.py @@ -27,7 +27,12 @@ class MediaPlayer(Screen, InfoBarSeek): self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() self.session.nav.stopService() - self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "^.*\.(mp3|ogg|ts|wav|wave|m3u|pls)", useServiceRef = True) + self.playlistparsers = {} + self.addPlaylistParser(PlaylistIOM3U, "m3u") + self.addPlaylistParser(PlaylistIOPLS, "pls") + self.addPlaylistParser(PlaylistIOInternal, "e2") + + self.filelist = FileList(resolveFilename(SCOPE_MEDIA), matchingPattern = "^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2)", useServiceRef = True) self["filelist"] = self.filelist self.playlist = PlayList() @@ -327,21 +332,23 @@ class MediaPlayer(Screen, InfoBarSeek): if len(self.playlist) == 1: self.changeEntry(0) + def addPlaylistParser(self, parser, extension): + self.playlistparsers[extension] = parser + def playlistCallback(self, answer): if answer is not None: - extension = answer[1][1].getPath()[-3:] - if extension == "m3u": - playlist = PlaylistIOM3U() - elif extension == "pls": - playlist = PlaylistIOPLS() - if answer[1][0] == self.REPLACEPLAYLIST: - self.stopEntry() - self.playlist.clear() - self.switchToFileList() - if answer[1][0] == self.REPLACEPLAYLIST or answer[1][0] == self.ADDPLAYLIST: - list = playlist.open(answer[1][1].getPath()) - for x in list: - self.playlist.addFile(x.ref) + extension = answer[1][1].getPath()[answer[1][1].getPath().rfind('.') + 1:] + print "extension:", extension + if self.playlistparsers.has_key(extension): + playlist = self.playlistparsers[extension]() + if answer[1][0] == self.REPLACEPLAYLIST: + self.stopEntry() + self.playlist.clear() + self.switchToFileList() + if answer[1][0] == self.REPLACEPLAYLIST or answer[1][0] == self.ADDPLAYLIST: + list = playlist.open(answer[1][1].getPath()) + for x in list: + self.playlist.addFile(x.ref) def nextEntry(self): diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp index 708825f6..4c1e5bd5 100644 --- a/lib/service/servicefs.cpp +++ b/lib/service/servicefs.cpp @@ -145,6 +145,8 @@ RESULT eServiceFS::getContent(std::list &list, bool sorted) type = 4097; else if (extension == ".wav" || extension == ".wave") type = 4097; + else if (extension == ".m3u" || extension == ".pls" || extension == ".e2") + type = 4098; if (type != -1) { -- 2.30.2