some further fixes
[vuplus_dvbapp-plugin] / webinterface / src / WebComponents / Sources / MP.py
index 86817a8..a0100d4 100644 (file)
@@ -1,6 +1,5 @@
-from enigma import eServiceReference, iServiceInformation, eServiceCenter
+from enigma import eServiceReference
 from Components.Sources.Source import Source
-from ServiceReference import ServiceReference
 from Components.FileList import FileList
 from os import path as os_path
 
@@ -29,24 +28,32 @@ class MP(Source):
                        self.result = self.writePlaylist(cmd)
 
        def tryOpenMP(self):
-               # See is the Link is still active
-               if self.session.mediaplayer is not None:
+               # check if there is an active link
+               if hasattr(self.session, "mediaplayer"):
+                       mp = self.session.mediaplayer
                        try:
-                               test = len(self.session.mediaplayer.playlist)
-                               return True
-                       except:
+                               len(mp.playlist)
+                       except Exception, e:
                                pass
+                       else:
+                               return True
 
-               # Link inactive, instantiate new MP
+               # check if we actually have the mp installed
                try:
                        from Plugins.Extensions.MediaPlayer.plugin import MediaPlayer, MyPlayList
+               # nope, bail out
+               except ImportError, ie:
+                       return False
+               else:
+                       # mp installed, see if it's running
+                       if isinstance(self.session.current_dialog, MediaPlayer):
+                               self.session.mediaplayer = self.session.current_dialog
+                               return True
+
+                       # start new mp
                        self.session.mediaplayer = self.session.open(MediaPlayer)
-                       self.session.mediaplayer.playlist = MyPlayList()
                        return True
 
-               # No MP installed
-               except ImportError, ie:
-                       return False
 
        def getFileList(self, param):
                print "getFileList:", param
@@ -62,8 +69,6 @@ class MP(Source):
                        else:
                                return (("empty", "True", "playlist"),)
 
-               returnList = []
-
                matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)" #MediaPlayer-Match
                useServiceRef = False
                if param["types"] == "audio":
@@ -77,19 +82,19 @@ class MP(Source):
                else:
                        matchingPattern = param["types"]
 
-               filelist = FileList(param["path"], showDirectories=True, showFiles=True, matchingPattern=matchingPattern, useServiceRef=useServiceRef, isTop=False)
+               path = param["path"]
+               if path == "undefined":
+                       path = None
+               elif path is not None and not os_path.exists(path):
+                       # TODO: returning something is better than just dying but is this return sane?
+                       return ((None, True, path),)
+
+               filelist = FileList(path, showDirectories=True, showFiles=True, matchingPattern=matchingPattern, useServiceRef=useServiceRef, isTop=False)
                list = filelist.getFileList()
-               for x in list:
-                       if useServiceRef == True:
-                               if x[0][1] == False: #isDir
-                                       returnList.append((x[0][0].toString(), x[0][1], param["path"]))
-                               else:
-                                       returnList.append((x[0][0], x[0][1], param["path"]))
-                       else:
-                               if x[0][1] == False: #isDir
-                                       returnList.append((param["path"] + x[0][0], x[0][1], param["path"]))
-                               else:
-                                       returnList.append((x[0][0], x[0][1], param["path"]))
+               if useServiceRef is True:
+                       returnList = [ (x[0][0].toString(), x[0][1], path) if x[0][1] is False else (x[0][0], x[0][1], path) for x in list ]
+               else:
+                       returnList = [ (param["path"] + x[0][0], x[0][1], path) if x[0][1] is False else (x[0][0], x[0][1], path) for x in list ]
 
                return returnList
 
@@ -99,36 +104,21 @@ class MP(Source):
                if not self.tryOpenMP():
                        return
 
+               # TODO: what's the root for?
                root = param["root"]
                file = param["file"]
 
+               if not file:
+                       return
+
                mp = self.session.mediaplayer
                ref = eServiceReference(file)
-
-               mp.switchToPlayList()
-
-               if len(mp.playlist) == 1:
-                               mp.changeEntry(0)
+               if not ref.valid():
+                       ref = eServiceReference(4097, 0, file)
 
                mp.playlist.addFile(ref)
-
-               #mp.playServiceRefEntry(ref)
-               sRefList = mp.playlist.getServiceRefList()
-               Len = len(sRefList)
-               print "len len(mp.playlist.getServiceRefList()): ", len(mp.playlist.getServiceRefList())
-               if Len:
-                       lastEntry = Len - 1
-                       currref = sRefList[lastEntry]
-                       if self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference():
-                               self.session.nav.playService(sRefList[lastEntry])
-                               info = eServiceCenter.getInstance().info(currref)
-                               description = info and info.getInfoString(currref, iServiceInformation.sDescription) or ""
-                               mp["title"].setText(description)
-                       mp.unPauseService()
-                       #mp.playEntry(len(self.playlist.getServiceRefList()))
-
+               mp.playServiceRefEntry(ref)
                mp.playlist.updateList()
-               mp.infoTimerFire()
 
        def writePlaylist(self, param):
                print "writePlaylist: ", param