Free text search to look for better album art
[mussorgsky] / src / controller.py
index db4f296..3815d43 100644 (file)
@@ -45,13 +45,30 @@ class MassiveDownloadsThread (QtCore.QThread):
 
     def run (self):
         print "Download one cover per-album in a thread"
-        import time
-        time.sleep (4)
         for albumItem in self.albumModel.get_albums ():
             if albumItem.require_download:
                 self.downloader.get_album_art (albumItem)
             
 
+class FreeSearchThread (QtCore.QThread):
+
+    def __init__ (self, model, search_str):
+        QtCore.QThread.__init__ (self)
+        self.downloader = MussorgskyAlbumArt ()
+        self.model = model
+        self.search_str = search_str
+
+    def run (self):
+        print "Free search thread:", self.search_str
+        MAX_OPTIONS = 4
+        counter = 0
+        for img in self.downloader.get_alternatives_free_text (self.search_str):
+            if counter >= MAX_OPTIONS:
+                break
+
+            self.model.updateData (counter, img)
+            counter += 1
+
 class MussorgskyController (QtCore.QObject):
 
     def __init__ (self, rootContext):
@@ -91,20 +108,35 @@ class MussorgskyController (QtCore.QObject):
         m = CoversModel (albumItem)
         print m.rowCount ()
         self.ctx.setContextProperty ("coversModel", m)
+        if self.download:
+            self.download.quit ()
         self.download = DownloadThread (m, albumItem)
         self.download.start ()
 
+
+    @QtCore.Slot (QtCore.QObject, str)
+    def get_options_for_text (self, coversModel, search_str):
+        if self.download:
+            print "Finishing the previous work"
+            self.download.quit ()
+        coversModel.reset ()
+        self.download = FreeSearchThread (coversModel, search_str)
+        self.download.start ()
+
+
+
     @QtCore.Slot (QtCore.QObject, int)
     def save_option_for (self, coversModel, index):
         print "Saving option", index
         coverItem = coversModel.getData (index)
-        coverItem.save (coversModel.albumItem.get_aa ().get_media_art_path ())
-        # Update the main model. Is this enough?
-        if not coverItem.initialImage and not coverItem.deleteAction:
-            coversModel.albumItem.album_art = None
-            coversModel.albumItem.album_art = coversModel.albumItem.get_aa().get_media_art_path ()
+
+        if coverItem.initialImage:
+            # Same image as before, nothing to do
+            pass
         elif coverItem.deleteAction:
-            coversModel.albumItem.resetAlbumArt ()
+            coversModel.albumItem.unset_image ()
+        else:
+            coversModel.albumItem.set_image (coverItem.url)
 
         coversModel.cleanCache ()
 
@@ -113,6 +145,7 @@ class MussorgskyController (QtCore.QObject):
     def stop_pending_jobs (self):
         if self.download :
             self.download.quit ()
+            self.download = None
 
     def get_all_albums (self):
         """