aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>2006-06-18 22:40:10 +0000
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>2006-06-18 22:40:10 +0000
commitaa14114f1c17459de0aa31a0268224c4b959e2a8 (patch)
treeef5d698fde9d60a9541d3ed696009c9202146f3a /lib
parentef4faf6f9fc8840b36b5f25206fd0722d5e36e85 (diff)
downloadenigma2-aa14114f1c17459de0aa31a0268224c4b959e2a8.tar.gz
enigma2-aa14114f1c17459de0aa31a0268224c4b959e2a8.zip
more flexible way of adding new playlist types
add .e2 as playlist type for the internal e2 playlist
Diffstat (limited to 'lib')
-rw-r--r--lib/python/Screens/MediaPlayer.py35
-rw-r--r--lib/service/servicefs.cpp2
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<eServiceReference> &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)
{