update MediaPlayer to use new async ePicLoad function for cover artwork. currently...
[enigma2.git] / lib / python / Plugins / Extensions / MediaPlayer / plugin.py
index 876e2a485af5bcdb31cebe57c76b2b3227f0142d..981f08cb9a8be088428a4f78c343a00f4204dc22 100644 (file)
@@ -1,6 +1,6 @@
 from os import path as os_path, remove as os_remove, listdir as os_listdir
 from time import strftime
 from os import path as os_path, remove as os_remove, listdir as os_listdir
 from time import strftime
-from enigma import iPlayableService, eTimer, eServiceCenter, iServiceInformation, loadPic
+from enigma import iPlayableService, eTimer, eServiceCenter, iServiceInformation, ePicLoad
 from ServiceReference import ServiceReference
 from Screens.Screen import Screen
 from Screens.HelpMenu import HelpableScreen
 from ServiceReference import ServiceReference
 from Screens.Screen import Screen
 from Screens.HelpMenu import HelpableScreen
@@ -171,6 +171,9 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                self.currList = "filelist"
 
                self.coverArtFileName = ""
                self.currList = "filelist"
 
                self.coverArtFileName = ""
+               self.picload = ePicLoad()
+               self.picload.PictureData.get().append(self.paintCoverArtPixmapCB)
+
                self.isAudioCD = False
                self.AudioCD_albuminfo = {}
                self.cdAudioTrackFiles = []
                self.isAudioCD = False
                self.AudioCD_albuminfo = {}
                self.cdAudioTrackFiles = []
@@ -206,6 +209,7 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                        config.mediaplayer.defaultDir.setValue(self.filelist.getCurrentDirectory())
                        config.mediaplayer.defaultDir.save()
                hotplugNotifier.remove(self.hotplugCB)
                        config.mediaplayer.defaultDir.setValue(self.filelist.getCurrentDirectory())
                        config.mediaplayer.defaultDir.save()
                hotplugNotifier.remove(self.hotplugCB)
+               del self.picload
                self.close()
 
        def checkSkipShowHideLock(self):
                self.close()
 
        def checkSkipShowHideLock(self):
@@ -294,9 +298,15 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                                new_coverArtFileName = path + filename
                if self.coverArtFileName != new_coverArtFileName:
                        self.coverArtFileName = new_coverArtFileName
                                new_coverArtFileName = path + filename
                if self.coverArtFileName != new_coverArtFileName:
                        self.coverArtFileName = new_coverArtFileName
-                       pixmap = loadPic(self.coverArtFileName, 116, 116, AVSwitch().getAspectRatioSetting()/2,1,0,0)
-                       if pixmap is not None:
-                               self["coverArt"].instance.setPixmap(pixmap.__deref__())
+                       sc = AVSwitch().getFramebufferScale()
+                       #0=Width 1=Height 2=Aspect 3=use_cache 4=resize_type 5=Background(#AARRGGBB)
+                       self.picload.setPara((self["coverArt"].instance.size().width(), self["coverArt"].instance.size().height(), sc[0], sc[1], False, 1, "#ff000000"))
+                       self.picload.startDecode(self.coverArtFileName)
+
+       def paintCoverArtPixmapCB(self, picInfo=None):
+               ptr = self.picload.getData()
+               if ptr != None:
+                       self["coverArt"].instance.setPixmap(ptr.__deref__())
 
        def leftDown(self):
                self.lefttimer = True
 
        def leftDown(self):
                self.lefttimer = True
@@ -618,7 +628,8 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                        try:
                                os_remove(self.delname)
                        except OSError,e:
                        try:
                                os_remove(self.delname)
                        except OSError,e:
-                               self.session.open(MessageBox, _("Delete failed!, %s") %e, MessageBox.TYPE_ERROR)
+                               print "delete failed:", e
+                               self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
 
        def clear_playlist(self):
                self.isAudioCD = False
 
        def clear_playlist(self):
                self.isAudioCD = False
@@ -862,17 +873,22 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                self.session.open(Subtitles)
        
        def hotplugCB(self, dev, media_state):
                self.session.open(Subtitles)
        
        def hotplugCB(self, dev, media_state):
-               if dev == harddiskmanager.getCD():      
-                       from Components.Scanner import scanDevice
-                       devpath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
-                       self.cdAudioTrackFiles = []
-                       res = scanDevice(devpath)
-                       list = [ (r.description, r, res[r], self.session) for r in res ]
-                       if list:
-                               (desc, scanner, files, session) = list[0]
-                               for file in files:
-                                       if file.mimetype == "audio/x-cda":
-                                               self.cdAudioTrackFiles.append(file.path)
+               if dev == harddiskmanager.getCD():
+                       if media_state == "1":
+                               from Components.Scanner import scanDevice
+                               devpath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+                               self.cdAudioTrackFiles = []
+                               res = scanDevice(devpath)
+                               list = [ (r.description, r, res[r], self.session) for r in res ]
+                               if list:
+                                       (desc, scanner, files, session) = list[0]
+                                       for file in files:
+                                               if file.mimetype == "audio/x-cda":
+                                                       self.cdAudioTrackFiles.append(file.path)
+                       else:
+                               self.cdAudioTrackFiles = []
+                               if self.isAudioCD:
+                                       self.clear_playlist()
 
 class MediaPlayerLCDScreen(Screen):
        skin = """
 
 class MediaPlayerLCDScreen(Screen):
        skin = """