summaryrefslogtreecommitdiffstats
path: root/src/widget
diff options
context:
space:
mode:
authorbe_ <be.0@gmx.com>2017-03-28 13:59:59 -0500
committerbe_ <be.0@gmx.com>2017-03-28 13:59:59 -0500
commit977acee8a987805a250c0043bd767f9573c5f053 (patch)
treeaf085f433ee4fae65d147fd706ade8ff7fd88605 /src/widget
parent03557a7a6d2a6717389035fa97a08dd7744d101f (diff)
DlgCoverArtFullSize revamp
* let DlgCoverArtFullSize have a border * set DlgCoverArtFullSize window title to "Album Artist - Album (Year)" (or Album instead of Album Artist if there is no Album Artist) * let DlgCoverArtFullSize be resized either by dragging the window border or using a mouse scroll wheel * update DlgCoverArtFullSize when cover art is changed * update DlgCoverArtFullSize when track is reloaded * show WCoverArtMenu on right click of DlgCoverArtFullSize * show WCoverArtMenu on right click of WSpinny when the track does not have cover art set * update WSpinny tooltip * don't hide DlgCoverArtFullSize when moving mouse off of WCoverArtLabel
Diffstat (limited to 'src/widget')
-rw-r--r--src/widget/wcoverart.cpp18
-rw-r--r--src/widget/wcoverart.h4
-rw-r--r--src/widget/wcoverartlabel.cpp11
-rw-r--r--src/widget/wcoverartlabel.h4
-rw-r--r--src/widget/wspinny.cpp55
-rw-r--r--src/widget/wspinny.h9
6 files changed, 83 insertions, 18 deletions
diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp
index 68fc9093aa..a14e9efeab 100644
--- a/src/widget/wcoverart.cpp
+++ b/src/widget/wcoverart.cpp
@@ -17,14 +17,16 @@
WCoverArt::WCoverArt(QWidget* parent,
UserSettingsPointer pConfig,
- const QString& group)
+ const QString& group,
+ BaseTrackPlayer* pPlayer)
: QWidget(parent),
WBaseWidget(this),
m_group(group),
m_pConfig(pConfig),
m_bEnable(true),
m_pMenu(new WCoverArtMenu(this)),
- m_pDlgFullSize(new DlgCoverArtFullSize()) {
+ m_pPlayer(pPlayer),
+ m_pDlgFullSize(new DlgCoverArtFullSize(parent, pPlayer)) {
// Accept drops if we have a group to load tracks into.
setAcceptDrops(!m_group.isEmpty());
@@ -39,6 +41,16 @@ WCoverArt::WCoverArt(QWidget* parent,
this, SLOT(slotCoverInfoSelected(const CoverInfo&)));
connect(m_pMenu, SIGNAL(reloadCoverArt()),
this, SLOT(slotReloadCoverArt()));
+
+ if (m_pPlayer != nullptr) {
+ connect(m_pPlayer, SIGNAL(newTrackLoaded(TrackPointer)),
+ this, SLOT(slotLoadTrack(TrackPointer)));
+ connect(m_pPlayer, SIGNAL(loadingTrack(TrackPointer, TrackPointer)),
+ this, SLOT(slotLoadingTrack(TrackPointer, TrackPointer)));
+
+ // just in case a track is already loaded
+ slotLoadTrack(m_pPlayer->getLoadedTrack());
+ }
}
WCoverArt::~WCoverArt() {
@@ -223,7 +235,7 @@ void WCoverArt::mousePressEvent(QMouseEvent* event) {
if (m_pDlgFullSize->isVisible()) {
m_pDlgFullSize->close();
} else {
- m_pDlgFullSize->init(m_loadedCover);
+ m_pDlgFullSize->init(m_loadedTrack);
}
}
}
diff --git a/src/widget/wcoverart.h b/src/widget/wcoverart.h
index b69f4dc954..af348d3d26 100644
--- a/src/widget/wcoverart.h
+++ b/src/widget/wcoverart.h
@@ -6,6 +6,7 @@
#include <QMouseEvent>
#include <QWidget>
+#include "mixer/basetrackplayer.h"
#include "preferences/usersettings.h"
#include "track/track.h"
#include "library/coverartcache.h"
@@ -19,7 +20,7 @@ class WCoverArt : public QWidget, public WBaseWidget {
Q_OBJECT
public:
WCoverArt(QWidget* parent, UserSettingsPointer pConfig,
- const QString& group);
+ const QString& group, BaseTrackPlayer* pPlayer);
~WCoverArt() override;
void setup(const QDomNode& node, const SkinContext& context);
@@ -62,6 +63,7 @@ class WCoverArt : public QWidget, public WBaseWidget {
QPixmap m_defaultCover;
QPixmap m_defaultCoverScaled;
CoverInfo m_lastRequestedCover;
+ BaseTrackPlayer* m_pPlayer;
DlgCoverArtFullSize* m_pDlgFullSize;
};
diff --git a/src/widget/wcoverartlabel.cpp b/src/widget/wcoverartlabel.cpp
index 451b4f90b1..0758d7aab2 100644
--- a/src/widget/wcoverartlabel.cpp
+++ b/src/widget/wcoverartlabel.cpp
@@ -10,7 +10,7 @@ static const QSize s_labelDisplaySize = QSize(100, 100);
WCoverArtLabel::WCoverArtLabel(QWidget* parent)
: QLabel(parent),
m_pCoverMenu(new WCoverArtMenu(this)),
- m_pDlgFullSize(new DlgCoverArtFullSize()),
+ m_pDlgFullSize(new DlgCoverArtFullSize(this, nullptr)),
m_defaultCover(CoverArtUtils::defaultCoverLocation()) {
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
setFrameShape(QFrame::Box);
@@ -59,6 +59,10 @@ void WCoverArtLabel::slotCoverMenu(const QPoint& pos) {
m_pCoverMenu->popup(mapToGlobal(pos));
}
+void WCoverArtLabel::loadTrack(TrackPointer pTrack) {
+ m_pLoadedTrack = pTrack;
+}
+
void WCoverArtLabel::mousePressEvent(QMouseEvent* event) {
if (m_pCoverMenu->isVisible()) {
return;
@@ -68,11 +72,8 @@ void WCoverArtLabel::mousePressEvent(QMouseEvent* event) {
if (m_pDlgFullSize->isVisible()) {
m_pDlgFullSize->close();
} else {
- m_pDlgFullSize->init(m_loadedCover);
+ m_pDlgFullSize->init(m_pLoadedTrack);
}
}
}
-void WCoverArtLabel::leaveEvent(QEvent* /*unused*/) {
- m_pDlgFullSize->close();
-}
diff --git a/src/widget/wcoverartlabel.h b/src/widget/wcoverartlabel.h
index c9138f0107..0864a2e9b5 100644
--- a/src/widget/wcoverartlabel.h
+++ b/src/widget/wcoverartlabel.h
@@ -6,6 +6,7 @@
#include <QWidget>
#include <QPixmap>
+#include "track/track.h"
#include "widget/wcoverartmenu.h"
class DlgCoverArtFullSize;
@@ -17,13 +18,13 @@ class WCoverArtLabel : public QLabel {
~WCoverArtLabel() override;
void setCoverArt(const CoverInfo& coverInfo, QPixmap px);
+ void loadTrack(TrackPointer pTrack);
signals:
void coverInfoSelected(const CoverInfo& coverInfo);
void reloadCoverArt();
protected:
- void leaveEvent(QEvent* /*unused*/) override;
void mousePressEvent(QMouseEvent* event) override;
private slots:
@@ -31,6 +32,7 @@ class WCoverArtLabel : public QLabel {
private:
QPixmap m_loadedCover;
+ TrackPointer m_pLoadedTrack;
WCoverArtMenu* m_pCoverMenu;
DlgCoverArtFullSize* m_pDlgFullSize;
QPixmap m_defaultCover;
diff --git a/src/widget/wspinny.cpp b/src/widget/wspinny.cpp
index fc792dcb3f..fd4e938dbd 100644
--- a/src/widget/wspinny.cpp
+++ b/src/widget/wspinny.cpp
@@ -19,7 +19,8 @@
// The SampleBuffers format enables antialiasing.
WSpinny::WSpinny(QWidget* parent, const QString& group,
UserSettingsPointer pConfig,
- VinylControlManager* pVCMan)
+ VinylControlManager* pVCMan,
+ BaseTrackPlayer* pPlayer)
: QGLWidget(QGLFormat(QGL::SampleBuffers), parent, SharedGLContext::getWidget()),
WBaseWidget(this),
m_group(group),
@@ -60,7 +61,9 @@ WSpinny::WSpinny(QWidget* parent, const QString& group,
m_bClampFailedWarning(false),
m_bGhostPlayback(false),
m_bWidgetDirty(false),
- m_pDlgCoverArt(new DlgCoverArtFullSize()) {
+ m_pPlayer(pPlayer),
+ m_pDlgCoverArt(new DlgCoverArtFullSize(parent, pPlayer)),
+ m_pCoverMenu(new WCoverArtMenu(this)) {
#ifdef __VINYLCONTROL__
m_pVCManager = pVCMan;
#endif
@@ -78,6 +81,19 @@ WSpinny::WSpinny(QWidget* parent, const QString& group,
const CoverInfo&, QPixmap, bool)));
}
+ if (m_pPlayer != nullptr) {
+ connect(m_pPlayer, SIGNAL(newTrackLoaded(TrackPointer)),
+ this, SLOT(slotLoadTrack(TrackPointer)));
+ connect(m_pPlayer, SIGNAL(loadingTrack(TrackPointer, TrackPointer)),
+ this, SLOT(slotLoadingTrack(TrackPointer, TrackPointer)));
+ // just in case a track is already loaded
+ slotLoadTrack(m_pPlayer->getLoadedTrack());
+ }
+
+ connect(m_pCoverMenu, SIGNAL(coverInfoSelected(const CoverInfo&)),
+ this, SLOT(slotCoverInfoSelected(const CoverInfo&)));
+ connect(m_pCoverMenu, SIGNAL(reloadCoverArt()),
+ this, SLOT(slotReloadCoverArt()));
}
WSpinny::~WSpinny() {
@@ -277,6 +293,21 @@ void WSpinny::slotCoverFound(const QObject* pRequestor,
}
}
+void WSpinny::slotCoverInfoSelected(const CoverInfo& coverInfo) {
+ if (m_loadedTrack) {
+ // Will trigger slotTrackCoverArtUpdated().
+ m_loadedTrack->setCoverInfo(coverInfo);
+ }
+}
+
+void WSpinny::slotReloadCoverArt() {
+ if (m_loadedTrack) {
+ CoverArtCache* pCache = CoverArtCache::instance();
+ if (pCache) {
+ pCache->requestGuessCover(m_loadedTrack);
+ }
+ }
+}
void WSpinny::paintEvent(QPaintEvent *e) {
Q_UNUSED(e); //ditch unused param warning
@@ -541,11 +572,20 @@ void WSpinny::mouseMoveEvent(QMouseEvent * e) {
}
void WSpinny::mousePressEvent(QMouseEvent * e) {
+ if (m_loadedTrack == nullptr) {
+ return;
+ }
+
if (m_pDlgCoverArt->isVisible()) {
m_pDlgCoverArt->close();
return;
}
+ if (m_pCoverMenu->isVisible()) {
+ m_pCoverMenu->close();
+ return;
+ }
+
if (e->button() == Qt::LeftButton) {
int y = e->y();
int x = e->x();
@@ -576,8 +616,12 @@ void WSpinny::mousePressEvent(QMouseEvent * e) {
// Trigger a mouse move to immediately line up the vinyl with the cursor
mouseMoveEvent(e);
}
- } else if (m_bShowCover) {
- m_pDlgCoverArt->init(m_loadedCover);
+ } else {
+ if (!m_loadedCover.isNull()) {
+ m_pDlgCoverArt->init(m_loadedTrack);
+ } else if (!m_pDlgCoverArt->isVisible()) {
+ m_pCoverMenu->popup(e->pos());
+ }
}
}
@@ -587,9 +631,6 @@ void WSpinny::mouseReleaseEvent(QMouseEvent * e)
QApplication::restoreOverrideCursor();
m_pScratchToggle->set(0.0);
m_iFullRotations = 0;
- if (e->button() == Qt::RightButton) {
- m_pSlipEnabled->set(0.0);
- }
}
}
diff --git a/src/widget/wspinny.h b/src/widget/wspinny.h
index 4ee2dcb44d..d7b91ab138 100644
--- a/src/widget/wspinny.h
+++ b/src/widget/wspinny.h
@@ -8,11 +8,13 @@
#include <QEvent>
#include "library/dlgcoverartfullsize.h"
+#include "mixer/basetrackplayer.h"
#include "preferences/usersettings.h"
#include "skin/skincontext.h"
#include "track/track.h"
#include "vinylcontrol/vinylsignalquality.h"
#include "widget/wbasewidget.h"
+#include "widget/wcoverartmenu.h"
#include "widget/wwidget.h"
class ControlProxy;
@@ -24,7 +26,8 @@ class WSpinny : public QGLWidget, public WBaseWidget, public VinylSignalQualityL
public:
WSpinny(QWidget* parent, const QString& group,
UserSettingsPointer pConfig,
- VinylControlManager* pVCMan);
+ VinylControlManager* pVCMan,
+ BaseTrackPlayer* pPlayer);
~WSpinny() override;
void onVinylSignalQualityUpdate(const VinylSignalQualityReport& report) override;
@@ -45,6 +48,8 @@ class WSpinny : public QGLWidget, public WBaseWidget, public VinylSignalQualityL
void maybeUpdate();
void slotCoverFound(const QObject* pRequestor,
const CoverInfo& info, QPixmap pixmap, bool fromCache);
+ void slotCoverInfoSelected(const CoverInfo& coverInfo);
+ void slotReloadCoverArt();
void slotTrackCoverArtUpdated();
@@ -121,7 +126,9 @@ class WSpinny : public QGLWidget, public WBaseWidget, public VinylSignalQualityL
bool m_bGhostPlayback;
bool m_bWidgetDirty;
+ BaseTrackPlayer* m_pPlayer;
DlgCoverArtFullSize* m_pDlgCoverArt;
+ WCoverArtMenu* m_pCoverMenu;
};
#endif //_WSPINNY_H