summaryrefslogtreecommitdiffstats
path: root/src/widget
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2014-10-27 23:12:51 -0400
committerRJ Ryan <rryan@mixxx.org>2014-10-27 23:12:51 -0400
commit8e11ac56af316f28d99ee65b86bafad637a7559c (patch)
tree3f9358b6b51d36958caa7d8d2f16aee795dd37ca /src/widget
parentfb7570ed35c65257f7acdf1a523bf07a19ce099c (diff)
Add coverArtUpdated signal to TrackInfoObject.
Listen to the signal in WCoverArt.
Diffstat (limited to 'src/widget')
-rw-r--r--src/widget/wcoverart.cpp43
-rw-r--r--src/widget/wcoverart.h1
2 files changed, 29 insertions, 15 deletions
diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp
index 521f381b2c..b7e4b3ec7a 100644
--- a/src/widget/wcoverart.cpp
+++ b/src/widget/wcoverart.cpp
@@ -76,12 +76,10 @@ void WCoverArt::setup(QDomNode node, const SkinContext& context) {
}
void WCoverArt::slotCoverArtSelected(const CoverArt& art) {
- if (m_loadedTrack.isNull()) {
- return;
+ if (m_loadedTrack) {
+ // Will trigger slotTrackCoverArtUpdated().
+ m_loadedTrack->setCoverArt(art);
}
- m_loadedTrack->setCoverArt(art);
- // TODO(rryan): listen to TIO signal instead
- slotLoadTrack(m_loadedTrack);
}
void WCoverArt::slotEnable(bool enable) {
@@ -96,6 +94,10 @@ void WCoverArt::slotEnable(bool enable) {
}
void WCoverArt::slotReset() {
+ if (m_loadedTrack) {
+ disconnect(m_loadedTrack.data(), SIGNAL(coverArtUpdated()),
+ this, SLOT(slotTrackCoverArtUpdated()));
+ }
m_loadedTrack = TrackPointer();
m_lastRequestedCover = CoverInfo();
m_loadedCover = QPixmap();
@@ -114,26 +116,37 @@ void WCoverArt::slotPixmapFound(int trackId, QPixmap pixmap) {
}
}
+void WCoverArt::slotTrackCoverArtUpdated() {
+ if (m_loadedTrack) {
+ m_lastRequestedCover = m_loadedTrack->getCoverInfo();
+ m_lastRequestedCover.trackId = m_loadedTrack->getId();
+ m_lastRequestedCover.trackLocation = m_loadedTrack->getLocation();
+ CoverArtCache* pCache = CoverArtCache::instance();
+ if (pCache != NULL) {
+ pCache->requestCover(m_lastRequestedCover);
+ }
+ }
+}
+
void WCoverArt::slotLoadTrack(TrackPointer pTrack) {
+ if (m_loadedTrack) {
+ disconnect(m_loadedTrack.data(), SIGNAL(coverArtUpdated()),
+ this, SLOT(slotTrackCoverArtUpdated()));
+ }
m_lastRequestedCover = CoverInfo();
m_loadedCover = QPixmap();
m_loadedCoverScaled = QPixmap();
m_loadedTrack = pTrack;
+ if (m_loadedTrack) {
+ connect(m_loadedTrack.data(), SIGNAL(coverArtUpdated()),
+ this, SLOT(slotTrackCoverArtUpdated()));
+ }
if (!m_bEnable) {
return;
}
- if (m_loadedTrack) {
- m_lastRequestedCover = m_loadedTrack->getCoverInfo();
- m_lastRequestedCover.trackId = m_loadedTrack->getId();
- m_lastRequestedCover.trackLocation = m_loadedTrack->getLocation();
-
- CoverArtCache* pCache = CoverArtCache::instance();
- if (pCache != NULL) {
- pCache->requestCover(m_lastRequestedCover);
- }
- }
+ slotTrackCoverArtUpdated();
}
QPixmap WCoverArt::scaledCoverArt(const QPixmap& normal) {
diff --git a/src/widget/wcoverart.h b/src/widget/wcoverart.h
index d071b3ee1b..fcd27f725c 100644
--- a/src/widget/wcoverart.h
+++ b/src/widget/wcoverart.h
@@ -34,6 +34,7 @@ class WCoverArt : public QWidget, public WBaseWidget {
private slots:
void slotPixmapFound(int trackId, QPixmap pixmap);
void slotCoverArtSelected(const CoverArt& art);
+ void slotTrackCoverArtUpdated();
protected:
void paintEvent(QPaintEvent*);