diff options
author | RJ Ryan <rryan@mixxx.org> | 2014-10-27 23:12:51 -0400 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2014-10-27 23:12:51 -0400 |
commit | 8e11ac56af316f28d99ee65b86bafad637a7559c (patch) | |
tree | 3f9358b6b51d36958caa7d8d2f16aee795dd37ca /src/widget | |
parent | fb7570ed35c65257f7acdf1a523bf07a19ce099c (diff) |
Add coverArtUpdated signal to TrackInfoObject.
Listen to the signal in WCoverArt.
Diffstat (limited to 'src/widget')
-rw-r--r-- | src/widget/wcoverart.cpp | 43 | ||||
-rw-r--r-- | src/widget/wcoverart.h | 1 |
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*); |