more flexible way of adding new playlist types
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sun, 18 Jun 2006 22:40:10 +0000 (22:40 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sun, 18 Jun 2006 22:40:10 +0000 (22:40 +0000)
add .e2 as playlist type for the internal e2 playlist

lib/python/Screens/MediaPlayer.py
lib/service/servicefs.cpp

index f042a5c3eb3a1a6dd42c396099c2f04e27fd1b71..43658c8f8b1ff647b6782f87d326c7795b7cc84b 100644 (file)
@@ -27,7 +27,12 @@ class MediaPlayer(Screen, InfoBarSeek):
                self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
                self.session.nav.stopService()
 
                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()
                self["filelist"] = self.filelist
 
                self.playlist = PlayList()
@@ -327,21 +332,23 @@ class MediaPlayer(Screen, InfoBarSeek):
                        if len(self.playlist) == 1:
                                self.changeEntry(0)
 
                        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:
        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):
                                
 
        def nextEntry(self):
index 708825f6a702d2c7b8d1667bd61bf78d60644462..4c1e5bd558c7c47e7cf836e9f91f5f418dd20b99 100644 (file)
@@ -145,6 +145,8 @@ RESULT eServiceFS::getContent(std::list<eServiceReference> &list, bool sorted)
                                type = 4097;
                        else if (extension == ".wav" || extension == ".wave")
                                type = 4097;
                                type = 4097;
                        else if (extension == ".wav" || extension == ".wave")
                                type = 4097;
+                       else if (extension == ".m3u" || extension == ".pls" || extension == ".e2")
+                               type = 4098;
                        
                        if (type != -1)
                        {
                        
                        if (type != -1)
                        {