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!
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 ()
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
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)
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)))
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 ()