Move the qml/* files to the src folder. Now it is the main version
[mussorgsky] / src / coverModel.py
1 # -*- coding: utf-8 -*-
2 import os
3 import sys
4 from PySide import QtCore
5 from PySide import QtGui
6 from PySide import QtDeclarative
7
8 from coverItem import CoverItem
9 from albumItem import AlbumItem
10
11 class CoversModel (QtCore.QAbstractListModel):
12     COLUMNS = ('cover', )
13
14     def __init__ (self, albumItem):
15         QtCore.QAbstractListModel.__init__ (self)
16         self.albumItem = albumItem
17
18         self.startOffset = 2
19         self._alternatives = [
20              CoverItem (self.albumItem.album_art, initialImage=True),
21              CoverItem ("images/blank_record.png", deleteAction = True),
22              CoverItem (None),
23              CoverItem (None),
24              CoverItem (None),
25              CoverItem (None)
26             ]
27
28         self.setRoleNames (dict(enumerate(CoversModel.COLUMNS)))
29
30     def rowCount (self, parent=QtCore.QModelIndex()):
31         return len (self._alternatives)
32
33     def data (self, index, role):
34         if index.isValid () and role == CoversModel.COLUMNS.index ('cover'):
35             return self._alternatives[index.row ()]
36         return None
37
38     def updateData (self, row, url):
39         position = row + self.startOffset
40         assert position >= 0 and position < len (self._alternatives)
41         self._alternatives[position].url = url
42
43     def getData (self, row):
44         assert row >= 0 and row < len (self._alternatives)
45         return self._alternatives[row]
46
47     def cleanCache (self):
48         """
49         The model contains the urls of the downloaded alternatives.
50         This method removes those files. The selected image should have already been copied 
51          to its final location.
52         """
53         for i in range (self.startOffset, len (self._alternatives)):
54             # This url can be None if the image didn't finish downloading
55             if self._alternatives[i].url and os.path.exists (self._alternatives[i].url):
56                 os.remove (self._alternatives[i].url)