QML: Move the logic to save and reset to the coverItem
authorIvan Frade <ivan.frade@nokia.com>
Thu, 7 Apr 2011 07:45:22 +0000 (10:45 +0300)
committerIvan Frade <ivan.frade@nokia.com>
Thu, 7 Apr 2011 07:45:22 +0000 (10:45 +0300)
src/qml/controller.py
src/qml/coverItem.py
src/qml/coverModel.py

index 6c5bee9..8390e27 100644 (file)
@@ -61,7 +61,7 @@ class MussorgskyController (QtCore.QObject):
         self.download = DownloadThread (model, album)
         self.download.start ()
 
-    @QtCore.Slot (str, QtCore.QObject)
+    @QtCore.Slot (QtCore.QObject, QtCore.QObject)
     def coverSelected (self, coverObject, albumObject):
         """
         The user has clicked in one cover!
@@ -70,9 +70,8 @@ class MussorgskyController (QtCore.QObject):
         filename = getCoverArtFileName (albumObject.title)
         thumbnail = getCoverArtThumbFileName (albumObject.title)
 
-        os.rename (cover.url, filename)
-        os.rename (cover.thumb, thumbnail)
-
+        coverObject.save (filename, thumbnail)
+        
         albumObject.album_art = thumbnail
         albumObject.album_art_changed.emit ()
 
index 36e291a..c73e4de 100644 (file)
@@ -8,10 +8,11 @@ from PySide import QtDeclarative
 
 class CoverItem (QtCore.QObject):
 
-    def __init__ (self, url, thumb):
+    def __init__ (self, initial_image):
         QtCore.QObject.__init__(self)
-        self._url = url
-        self._thumb = thumb
+        self._initial_image = initial_image
+        self._url = initial_image
+        self._thumb = None
         
     def _url (self):
         return self._url
@@ -26,6 +27,25 @@ class CoverItem (QtCore.QObject):
     def _setThumb (self, thumb):
         self._thumb = thumb
 
+    def reset (self):
+        cached_image = self._url
+        if os.path.exists (cached_image):
+            os.remove (cached_image)
+            
+        cached_thumb = self._thumb
+        if os.path.exists (cached_thumb):
+            os.remove (cached_thumb)
+
+        self.url = self._initial_image
+        self.url_changed.emit ()
+
+    def save (self, cover, thumbnail):
+        assert not self.url == self._initial_image
+        os.rename (self.url, cover)
+        os.rename (self.thumb, thumbnail)
+
+
+
     url_changed = QtCore.Signal ()
 
     url = QtCore.Property (unicode, _url, _setUrl, notify=url_changed)
index e60600f..25b9af3 100644 (file)
@@ -14,10 +14,10 @@ class CoversModel (QtCore.QAbstractListModel):
     def __init__ (self):
         QtCore.QAbstractListModel.__init__ (self)
         self._alternatives = [
-             CoverItem ("images/button-red.png", None),
-             CoverItem ("images/button-blue.png", None),
-             CoverItem ("images/button-red.png", None),
-             CoverItem ("images/button-blue.png", None)
+             CoverItem ("images/button-red.png"),
+             CoverItem ("images/button-blue.png"),
+             CoverItem ("images/button-red.png"),
+             CoverItem ("images/button-blue.png")
             ]
         self.setRoleNames (dict(enumerate(CoversModel.COLUMNS)))
 
@@ -31,19 +31,10 @@ class CoversModel (QtCore.QAbstractListModel):
 
     def updateData (self, row, url, thumb):
         assert row >= 0 and row < len (self._alternatives)
-        print "Replacing", self._alternatives[row].url, "with", url, "in row", row
         self._alternatives[row].url = url
         self._alternatives[row].thumb = thumb
 
     def resetAlternatives (self):
-        for row in range (0, len (self._alternatives)):
-            print "Removing cached images:"
-            print "  ", self._alternatives[row].url
-            print "  ", self._alternatives[row].thumb
-            os.remove (self._alternatives[row].url)
-            os.remove (self._alternatives[row].thumb)
-            if (row % 2) == 0:
-                self.updateData(row, "images/button-red.png", None)
-            else:
-                self.updateData(row, "images/button-blue.png", None)
-        print "Ok"
+        print "Resseting alternatives"
+        for cover in self._alternatives:
+            cover.reset ()