88 lines
3.0 KiB
Diff
88 lines
3.0 KiB
Diff
|
From b56a1ac307c2183052334926114cb71da41f3956 Mon Sep 17 00:00:00 2001
|
||
|
From: Sambhav Kothari <sambhavs.email@gmail.com>
|
||
|
Date: Sun, 22 Jan 2017 18:49:00 +0530
|
||
|
Subject: [PATCH 1/9] Introduce new cover-art thumbnail class
|
||
|
|
||
|
---
|
||
|
picard/ui/coverartbox.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 64 insertions(+)
|
||
|
|
||
|
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
|
||
|
index fc515877..a2ca057f 100644
|
||
|
--- a/picard/ui/coverartbox.py
|
||
|
+++ b/picard/ui/coverartbox.py
|
||
|
@@ -67,6 +67,70 @@ class ActiveLabel(QtGui.QLabel):
|
||
|
if accepted:
|
||
|
event.acceptProposedAction()
|
||
|
|
||
|
+class CoverArtThumbnail(ActiveLabel):
|
||
|
+
|
||
|
+ def __init__(self, active=False, drops=False, *args, **kwargs):
|
||
|
+ super(CoverArtThumbnail, self).__init__(active, drops, *args, **kwargs)
|
||
|
+ self.data = None
|
||
|
+ self.shadow = QtGui.QPixmap(":/images/CoverArtShadow.png")
|
||
|
+ self.release = None
|
||
|
+ self.setPixmap(self.shadow)
|
||
|
+ self.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
|
||
|
+ self.clicked.connect(self.open_release_page)
|
||
|
+ self.imageDropped.connect(self.fetch_remote_image)
|
||
|
+
|
||
|
+ def show(self):
|
||
|
+ self.set_data(self.data, True)
|
||
|
+
|
||
|
+ def set_data(self, data, force=False, pixmap=None):
|
||
|
+ if not force and self.data == data:
|
||
|
+ return
|
||
|
+
|
||
|
+ self.data = data
|
||
|
+ if not force and self.parent().isHidden():
|
||
|
+ return
|
||
|
+
|
||
|
+ cover = self.shadow
|
||
|
+ if self.data:
|
||
|
+ if pixmap is None:
|
||
|
+ pixmap = QtGui.QPixmap()
|
||
|
+ pixmap.loadFromData(self.data.data)
|
||
|
+ if not pixmap.isNull():
|
||
|
+ offx, offy, w, h = (1, 1, 121, 121)
|
||
|
+ cover = QtGui.QPixmap(self.shadow)
|
||
|
+ pixmap = pixmap.scaled(w, h, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||
|
+ painter = QtGui.QPainter(cover)
|
||
|
+ bgcolor = QtGui.QColor.fromRgb(0, 0, 0, 128)
|
||
|
+ painter.fillRect(QtCore.QRectF(offx, offy, w, h), bgcolor)
|
||
|
+ x = offx + (w - pixmap.width()) / 2
|
||
|
+ y = offy + (h - pixmap.height()) / 2
|
||
|
+ painter.drawPixmap(x, y, pixmap)
|
||
|
+ painter.end()
|
||
|
+ self.setPixmap(cover)
|
||
|
+
|
||
|
+ def set_metadata(self, metadata):
|
||
|
+ data = None
|
||
|
+ if metadata and metadata.images:
|
||
|
+ for image in metadata.images:
|
||
|
+ if image.is_front_image():
|
||
|
+ data = image
|
||
|
+ break
|
||
|
+ else:
|
||
|
+ # There's no front image, choose the first one available
|
||
|
+ data = metadata.images[0]
|
||
|
+ self.set_data(data)
|
||
|
+ release = None
|
||
|
+ if metadata:
|
||
|
+ release = metadata.get("musicbrainz_albumid", None)
|
||
|
+ if release:
|
||
|
+ self.setActive(True)
|
||
|
+ self.setToolTip(_(u"View release on MusicBrainz"))
|
||
|
+ else:
|
||
|
+ self.setActive(False)
|
||
|
+ self.setToolTip("")
|
||
|
+ self.release = release
|
||
|
+
|
||
|
+
|
||
|
|
||
|
class CoverArtBox(QtGui.QGroupBox):
|
||
|
|
||
|
--
|
||
|
2.11.0
|
||
|
|