QML: Click on album shows the alternatives and saves them
[mussorgsky] / src / qml / 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
10
11 class CoversModel (QtCore.QAbstractListModel):
12     COLUMNS = ('cover', )
13
14     def __init__ (self):
15         QtCore.QAbstractListModel.__init__ (self)
16         self._alternatives = [
17              CoverItem ("images/button-red.png", None),
18              CoverItem ("images/button-blue.png", None),
19              CoverItem ("images/button-red.png", None),
20              CoverItem ("images/button-blue.png", None)
21             ]
22         self.setRoleNames (dict(enumerate(CoversModel.COLUMNS)))
23
24     def rowCount (self, parent=QtCore.QModelIndex()):
25         return len (self._alternatives)
26
27     def data (self, index, role):
28         if index.isValid () and role == CoversModel.COLUMNS.index ('cover'):
29             return self._alternatives[index.row ()]
30         return None
31
32     def updateData (self, row, url, thumb):
33         assert row >= 0 and row < len (self._alternatives)
34         print "Replacing", self._alternatives[row].url, "with", url, "in row", row
35         self._alternatives[row].url = url
36         self._alternatives[row].thumb = thumb
37
38     def resetAlternatives (self):
39         for row in range (0, len (self._alternatives)):
40             print "Removing cached images:"
41             print "  ", self._alternatives[row].url
42             print "  ", self._alternatives[row].thumb
43             os.remove (self._alternatives[row].url)
44             os.remove (self._alternatives[row].thumb)
45             if (row % 2) == 0:
46                 self.updateData(row, "images/button-red.png", None)
47             else:
48                 self.updateData(row, "images/button-blue.png", None)
49         print "Ok"