Move the qml/* files to the src folder. Now it is the main version
[mussorgsky] / src / coverModel.py
diff --git a/src/coverModel.py b/src/coverModel.py
new file mode 100644 (file)
index 0000000..9e15909
--- /dev/null
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+import os
+import sys
+from PySide import QtCore
+from PySide import QtGui
+from PySide import QtDeclarative
+
+from coverItem import CoverItem
+from albumItem import AlbumItem
+
+class CoversModel (QtCore.QAbstractListModel):
+    COLUMNS = ('cover', )
+
+    def __init__ (self, albumItem):
+        QtCore.QAbstractListModel.__init__ (self)
+        self.albumItem = albumItem
+
+        self.startOffset = 2
+        self._alternatives = [
+             CoverItem (self.albumItem.album_art, initialImage=True),
+             CoverItem ("images/blank_record.png", deleteAction = True),
+             CoverItem (None),
+             CoverItem (None),
+             CoverItem (None),
+             CoverItem (None)
+            ]
+
+        self.setRoleNames (dict(enumerate(CoversModel.COLUMNS)))
+
+    def rowCount (self, parent=QtCore.QModelIndex()):
+        return len (self._alternatives)
+
+    def data (self, index, role):
+        if index.isValid () and role == CoversModel.COLUMNS.index ('cover'):
+            return self._alternatives[index.row ()]
+        return None
+
+    def updateData (self, row, url):
+        position = row + self.startOffset
+        assert position >= 0 and position < len (self._alternatives)
+        self._alternatives[position].url = url
+
+    def getData (self, row):
+        assert row >= 0 and row < len (self._alternatives)
+        return self._alternatives[row]
+
+    def cleanCache (self):
+        """
+        The model contains the urls of the downloaded alternatives.
+        This method removes those files. The selected image should have already been copied 
+         to its final location.
+        """
+        for i in range (self.startOffset, len (self._alternatives)):
+            # This url can be None if the image didn't finish downloading
+            if self._alternatives[i].url and os.path.exists (self._alternatives[i].url):
+                os.remove (self._alternatives[i].url)