diff options
author | Max Linke <kain88@mixxx.org> | 2014-09-12 18:58:30 +0200 |
---|---|---|
committer | Max Linke <kain88@mixxx.org> | 2014-09-12 18:58:30 +0200 |
commit | 37fc8aaf1e7dda094d7a693685b9aed09aa89f1b (patch) | |
tree | 2775d03f0e4fd2e5008b9d40ba914585fafc644c | |
parent | 07f3573f506dc9c4a72d4d8c5514c6af384fb2df (diff) |
use CoverInfo in every class that uses Covers
This makes it easy now to send additional things around by just updating
the CoverInfo struct.
-rw-r--r-- | src/dlgtrackinfo.cpp | 15 | ||||
-rw-r--r-- | src/dlgtrackinfo.h | 3 | ||||
-rw-r--r-- | src/library/library.cpp | 4 | ||||
-rw-r--r-- | src/library/library.h | 5 | ||||
-rw-r--r-- | src/skin/legacyskinparser.cpp | 4 | ||||
-rw-r--r-- | src/widget/wcoverart.cpp | 31 | ||||
-rw-r--r-- | src/widget/wcoverart.h | 8 | ||||
-rw-r--r-- | src/widget/wcoverartmenu.cpp | 48 | ||||
-rw-r--r-- | src/widget/wcoverartmenu.h | 8 | ||||
-rw-r--r-- | src/widget/wlibrarytableview.h | 4 | ||||
-rw-r--r-- | src/widget/wtracktableview.cpp | 24 |
11 files changed, 63 insertions, 91 deletions
diff --git a/src/dlgtrackinfo.cpp b/src/dlgtrackinfo.cpp index acdd125479..e49995986b 100644 --- a/src/dlgtrackinfo.cpp +++ b/src/dlgtrackinfo.cpp @@ -199,7 +199,9 @@ void DlgTrackInfo::loadTrack(TrackPointer pTrack, pixmap = CoverArtCache::instance()->getDefaultCoverArt(); } setCoverArt(pixmap); - m_loadedCover = qMakePair(coverLocation, md5); + m_loadedCover.trackId = pTrack->getId(); + m_loadedCover.coverLocation = coverLocation; + m_loadedCover.md5Hash = md5; m_firstCoverLoc = coverLocation; } @@ -233,8 +235,8 @@ QPixmap DlgTrackInfo::scaledCoverArt(QPixmap original) { void DlgTrackInfo::slotCoverLocationUpdated(const QString& newLoc, const QString& oldLoc, QPixmap px) { - if (isVisible() && m_loadedCover.first == oldLoc) { - m_loadedCover.first = newLoc; + if (isVisible() && m_loadedCover.coverLocation == oldLoc) { + m_loadedCover.coverLocation = newLoc; px = scaledCoverArt(px); coverArt->setPixmap(px); update(); @@ -247,7 +249,6 @@ void DlgTrackInfo::slotCoverMenu(const QPoint& pos) { } m_pCoverMenu->show(coverArt->mapToGlobal(pos), m_loadedCover, - m_pLoadedTrack->getId(), m_pLoadedTrack); } @@ -406,7 +407,7 @@ void DlgTrackInfo::saveTrack() { } bool res = CoverArtCache::instance()->changeCoverArt(m_pLoadedTrack->getId(), - m_loadedCover.first); + m_loadedCover.coverLocation); if (!res) { QMessageBox::warning(this, tr("Change Cover Art"), @@ -420,7 +421,7 @@ void DlgTrackInfo::unloadTrack(bool save) { if (save) { saveTrack(); - } else if (m_firstCoverLoc != m_loadedCover.first){ // revert cover art + } else if (m_firstCoverLoc != m_loadedCover.coverLocation){ // revert cover art CoverArtCache::instance()->changeCoverArt(m_pLoadedTrack->getId(), m_firstCoverLoc); } @@ -428,7 +429,7 @@ void DlgTrackInfo::unloadTrack(bool save) { clear(); disconnect(this, SLOT(updateTrackMetadata())); m_pLoadedTrack.clear(); - m_loadedCover = qMakePair(QString(), QString()); + m_loadedCover = CoverInfo(); m_firstCoverLoc.clear(); } diff --git a/src/dlgtrackinfo.h b/src/dlgtrackinfo.h index 5271cdde99..e00de893ef 100644 --- a/src/dlgtrackinfo.h +++ b/src/dlgtrackinfo.h @@ -11,6 +11,7 @@ #include "dlgtagfetcher.h" #include "util/types.h" #include "widget/wcoverartmenu.h" +#include "library/coverartcache.h" const int kFilterLength = 5; @@ -80,7 +81,7 @@ class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo { DlgTagFetcher& m_DlgTagFetcher; WCoverArtMenu* m_pCoverMenu; - QPair<QString, QString> m_loadedCover; + CoverInfo m_loadedCover; // Useful to handle cases when the user cancel the changes. // In this case DlgTrackInfo must revert the cover diff --git a/src/library/library.cpp b/src/library/library.cpp index f55688e76f..84568eb336 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -153,8 +153,8 @@ void Library::bindWidget(WLibrary* pLibraryWidget, connect(this, SIGNAL(switchToView(const QString&)), pLibraryWidget, SLOT(switchToView(const QString&))); - connect(pTrackTableView, SIGNAL(loadCoverArt(const QString&, const QString&, int, bool)), - this, SIGNAL(loadCoverArt(const QString&, const QString&, int, bool))); + connect(pTrackTableView, SIGNAL(loadCoverArt(CoverInfo, bool)), + this, SIGNAL(loadCoverArt(CoverInfo, bool))); m_pLibraryControl->bindWidget(pLibraryWidget, pKeyboard); diff --git a/src/library/library.h b/src/library/library.h index 249dfae2e7..0dbf013cfe 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -15,6 +15,7 @@ #include "trackinfoobject.h" #include "recording/recordingmanager.h" #include "analysisfeature.h" +#include "library/coverartcache.h" class TrackModel; class TrackCollection; @@ -87,9 +88,7 @@ public: void searchStarting(); // emit this signal to enable/disable the cover art widget void enableCoverArtDisplay(bool); - void loadCoverArt(const QString& coverLocation, - const QString& md5Hash, - int trackId, bool cachedOnly); + void loadCoverArt(CoverInfo info, bool cachedOnly); private: ConfigObject<ConfigValue>* m_pConfig; diff --git a/src/skin/legacyskinparser.cpp b/src/skin/legacyskinparser.cpp index 7ff2e6931d..0d8cb29b25 100644 --- a/src/skin/legacyskinparser.cpp +++ b/src/skin/legacyskinparser.cpp @@ -973,8 +973,8 @@ QWidget* LegacySkinParser::parseCoverArt(QDomElement node) { pCoverArt, SLOT(slotResetWidget())); connect(m_pLibrary, SIGNAL(enableCoverArtDisplay(bool)), pCoverArt, SLOT(slotEnableWidget(bool))); - connect(m_pLibrary, SIGNAL(loadCoverArt(const QString&, const QString&, int, bool)), - pCoverArt, SLOT(slotLoadCoverArt(const QString&, const QString&, int, bool))); + connect(m_pLibrary, SIGNAL(loadCoverArt(CoverInfo, bool)), + pCoverArt, SLOT(slotLoadCoverArt(CoverInfo, bool))); return pCoverArt; } diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp index 67dbc1c42a..7512673c80 100644 --- a/src/widget/wcoverart.cpp +++ b/src/widget/wcoverart.cpp @@ -19,7 +19,6 @@ WCoverArt::WCoverArt(QWidget* parent, m_bCoverIsVisible(false), m_pMenu(new WCoverArtMenu(this)), m_loadedCover(CoverArtCache::instance()->getDefaultCoverArt()), - m_lastRequestedTrackId(-1), m_trackDAO(pTrackCollection->getTrackDAO()) { // load icon to hide cover m_iconHide = QPixmap(":/images/library/ic_library_cover_hide.png"); @@ -52,7 +51,7 @@ void WCoverArt::slotCoverLocationUpdated(const QString& newLoc, QPixmap px) { Q_UNUSED(oldLoc); Q_UNUSED(px); - bool res = CoverArtCache::instance()->changeCoverArt(m_lastRequestedTrackId, + bool res = CoverArtCache::instance()->changeCoverArt(m_lastRequestedCover.trackId, newLoc); if (!res) { QMessageBox::warning(this, tr("Change Cover Art"), @@ -91,8 +90,7 @@ void WCoverArt::slotEnableWidget(bool enable) { } void WCoverArt::slotResetWidget() { - m_lastRequestedTrackId = -1; - m_lastRequestedCover = qMakePair(QString(), QString()); + m_lastRequestedCover = CoverInfo(); m_bCoverIsVisible = false; m_bCoverIsHovered = false; m_loadedCover = CoverArtCache::instance()->getDefaultCoverArt(); @@ -105,26 +103,18 @@ void WCoverArt::slotPixmapFound(int trackId, QPixmap pixmap) { if (!m_bEnableWidget) { return; } - if (m_lastRequestedTrackId == trackId) { + if (m_lastRequestedCover.trackId == trackId) { m_loadedCover = scaledCoverArt(pixmap); update(); } } -void WCoverArt::slotLoadCoverArt(const QString& coverLocation, - const QString& md5Hash, - int trackId, bool cachedOnly) { +void WCoverArt::slotLoadCoverArt(CoverInfo info, bool cachedOnly) { if (!m_bEnableWidget || !m_bCoverIsVisible) { return; } - m_lastRequestedTrackId = trackId; - m_lastRequestedCover = qMakePair(coverLocation, md5Hash); - CoverInfo info; - info.trackId = trackId; - info.coverLocation = coverLocation; - info.md5Hash = md5Hash; - + m_lastRequestedCover = info; CoverArtCache::instance()->requestPixmap(info, QSize(0,0), cachedOnly); } @@ -165,9 +155,7 @@ void WCoverArt::resizeEvent(QResizeEvent*) { if (m_bCoverIsVisible) { setMinimumSize(0, parentWidget()->height() / 3); - slotLoadCoverArt(m_lastRequestedCover.first, - m_lastRequestedCover.second, - m_lastRequestedTrackId, true); + slotLoadCoverArt(m_lastRequestedCover, true); } else { m_loadedCover = CoverArtCache::instance()->getDefaultCoverArt(); setMinimumSize(0, 20); @@ -192,11 +180,8 @@ void WCoverArt::mousePressEvent(QMouseEvent* event) { m_bCoverIsVisible = false; resize(sizeHint()); } else if (event->button() == Qt::RightButton) { // show context-menu - TrackPointer pTrack = m_trackDAO.getTrack(m_lastRequestedTrackId); - m_pMenu->show(event->globalPos(), - m_lastRequestedCover, - m_lastRequestedTrackId, - pTrack); + TrackPointer pTrack = m_trackDAO.getTrack(m_lastRequestedCover.trackId); + m_pMenu->show(event->globalPos(), m_lastRequestedCover, pTrack); } } diff --git a/src/widget/wcoverart.h b/src/widget/wcoverart.h index adff94be04..84b0f2dfe8 100644 --- a/src/widget/wcoverart.h +++ b/src/widget/wcoverart.h @@ -11,6 +11,7 @@ #include "library/trackcollection.h" #include "widget/wbasewidget.h" #include "widget/wcoverartmenu.h" +#include "library/coverartcache.h" class WCoverArt : public QWidget, public WBaseWidget { Q_OBJECT @@ -23,9 +24,7 @@ class WCoverArt : public QWidget, public WBaseWidget { public slots: void slotResetWidget(); void slotEnableWidget(bool); - void slotLoadCoverArt(const QString& coverLocation, - const QString& md5Hash, - int trackId, bool cachedOnly); + void slotLoadCoverArt(CoverInfo info, bool cachedOnly); private slots: void slotPixmapFound(int trackId, QPixmap pixmap); @@ -54,9 +53,8 @@ class WCoverArt : public QWidget, public WBaseWidget { QPixmap m_iconHide; QPixmap m_iconShow; - int m_lastRequestedTrackId; TrackDAO& m_trackDAO; - QPair<QString, QString> m_lastRequestedCover; + CoverInfo m_lastRequestedCover; }; #endif // WCOVERART_H diff --git a/src/widget/wcoverartmenu.cpp b/src/widget/wcoverartmenu.cpp index 2464bb968b..2ee4460990 100644 --- a/src/widget/wcoverartmenu.cpp +++ b/src/widget/wcoverartmenu.cpp @@ -8,8 +8,7 @@ #include "library/dao/coverartdao.h" WCoverArtMenu::WCoverArtMenu(QWidget *parent) - : QMenu(parent), - m_iTrackId(-1) { + : QMenu(parent) { createActions(); addActions(); } @@ -46,40 +45,35 @@ void WCoverArtMenu::addActions() { addAction(m_pReload); } -void WCoverArtMenu::show(QPoint pos, QPair<QString, QString> cover, - int trackId, TrackPointer pTrack) { - m_iTrackId = trackId; - m_sCoverLocation = cover.first; - m_sMd5 = cover.second; - m_pTrack = pTrack; - - if (trackId < 1) { +void WCoverArtMenu::show(QPoint pos, CoverInfo info, TrackPointer pTrack) { + if (info.trackId < 1) { return; } - + m_coverInfo = info; + m_pTrack = pTrack; popup(pos); } void WCoverArtMenu::slotChange() { - if (m_iTrackId < 1 || !m_pTrack) { + if (m_coverInfo.trackId < 1 || !m_pTrack) { return; } // get initial directory (trackdir or coverdir) QString initialDir; QString trackPath = m_pTrack->getDirectory(); - if (m_sCoverLocation.isEmpty() || - m_sCoverLocation == CoverArtCache::instance() - ->getDefaultCoverLocation()) { + if (m_coverInfo.coverLocation.isEmpty() || + m_coverInfo.coverLocation == CoverArtCache::instance() + ->getDefaultCoverLocation()) { initialDir = trackPath; } else { - initialDir = m_sCoverLocation; + initialDir = m_coverInfo.coverLocation; } // open file dialog QString selectedCover = QFileDialog::getOpenFileName( - this, tr("Change Cover Art"), initialDir, - tr("Image Files (*.png *.jpg *.jpeg *.bmp)")); + this, tr("Change Cover Art"), initialDir, + tr("Image Files (*.png *.jpg *.jpeg *.bmp)")); if (selectedCover.isEmpty()) { return; @@ -88,10 +82,10 @@ void WCoverArtMenu::slotChange() { // if the cover comes from an external dir, // we copy it to the track directory. QString newCover; - QFileInfo coverInfo(selectedCover); - QString coverPath = coverInfo.absolutePath(); + QFileInfo FileInfo(selectedCover); + QString coverPath = FileInfo.absolutePath(); if (trackPath != coverPath) { - QString ext = coverInfo.suffix(); + QString ext = FileInfo.suffix(); QStringList filepaths; filepaths << trackPath % "/cover." % ext << trackPath % "/album." % ext @@ -116,15 +110,15 @@ void WCoverArtMenu::slotChange() { } QPixmap px(newCover); - emit(coverLocationUpdated(newCover, m_sCoverLocation, px)); + emit(coverLocationUpdated(newCover, m_coverInfo.coverLocation, px)); } void WCoverArtMenu::slotReload() { - if (m_iTrackId < 1) { + if (m_coverInfo.trackId < 1) { return; } CoverArtDAO::CoverArtInfo info; - info.trackId = m_iTrackId; + info.trackId = m_pTrack->getId(); info.album = m_pTrack->getAlbum(); info.trackDirectory = m_pTrack->getDirectory(); info.trackLocation = m_pTrack->getLocation(); @@ -133,14 +127,14 @@ void WCoverArtMenu::slotReload() { CoverArtCache::instance()->searchImage(info, QSize(0,0), false); QPixmap px; px.convertFromImage(res.img); - emit(coverLocationUpdated(res.coverLocation, m_sCoverLocation, px)); + emit(coverLocationUpdated(res.coverLocation, m_coverInfo.coverLocation, px)); } void WCoverArtMenu::slotUnset() { - if (m_iTrackId < 1) { + if (m_coverInfo.trackId < 1) { return; } QString newLoc = CoverArtCache::instance()->getDefaultCoverLocation(); QPixmap px = CoverArtCache::instance()->getDefaultCoverArt(); - emit(coverLocationUpdated(newLoc, m_sCoverLocation, px)); + emit(coverLocationUpdated(newLoc, m_coverInfo.coverLocation, px)); } diff --git a/src/widget/wcoverartmenu.h b/src/widget/wcoverartmenu.h index bf3f7e6f1d..f1ad5bc2f4 100644 --- a/src/widget/wcoverartmenu.h +++ b/src/widget/wcoverartmenu.h @@ -6,6 +6,7 @@ #include <QWidget> #include "trackinfoobject.h" +#include "library/coverartcache.h" class WCoverArtMenu : public QMenu { Q_OBJECT @@ -19,8 +20,7 @@ class WCoverArtMenu : public QMenu { WCoverArtMenu(QWidget *parent = 0); virtual ~WCoverArtMenu(); - void show(QPoint pos, QPair<QString, QString> cover, - int trackId, TrackPointer pTrack); + void show(QPoint pos, CoverInfo info, TrackPointer pTrack); signals: void coverLocationUpdated(const QString& newLocation, @@ -40,10 +40,8 @@ class WCoverArtMenu : public QMenu { QAction* m_pReload; QAction* m_pUnset; - int m_iTrackId; TrackPointer m_pTrack; - QString m_sCoverLocation; - QString m_sMd5; + CoverInfo m_coverInfo; }; #endif // WCOVERARTMENU_H diff --git a/src/widget/wlibrarytableview.h b/src/widget/wlibrarytableview.h index 7f6da1f9b5..1eef425014 100644 --- a/src/widget/wlibrarytableview.h +++ b/src/widget/wlibrarytableview.h @@ -10,6 +10,7 @@ #include "configobject.h" #include "library/libraryview.h" #include "trackinfoobject.h" +#include "library/coverartcache.h" class WLibraryTableView : public QTableView, public virtual LibraryView { @@ -26,8 +27,7 @@ class WLibraryTableView : public QTableView, public virtual LibraryView { void loadTrack(TrackPointer pTrack); void loadTrackToPlayer(TrackPointer pTrack, QString group, bool play = false); - void loadCoverArt(const QString& coverLocation, const QString&, - int trackId, bool cachedOnly); + void loadCoverArt(CoverInfo info, bool cachedOnly); void onlyCachedCoverArt(bool); void scrollValueChanged(int); diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index fd17d73eff..8390206146 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -190,23 +190,19 @@ void WTrackTableView::emitLoadCoverArt(bool cachedOnly) { return; } - QString coverLocation; - QString md5Hash; - int trackId = 0; const QModelIndexList indices = selectionModel()->selectedRows(); - if (indices.size() > 0) { - QModelIndex idx = indices.last(); - if (idx.isValid()) { - TrackModel* trackModel = getTrackModel(); - if (trackModel) { - md5Hash = idx.sibling(idx.row(), m_iMd5Column).data().toString(); - trackId = trackModel->getTrackId(idx); - coverLocation = idx.sibling(idx.row(), - m_iCoverLocationColumn).data().toString(); - } + if (indices.size() > 0 && indices.last().isValid()) { + TrackModel* trackModel = getTrackModel(); + if (trackModel) { + QModelIndex idx = indices.last(); + CoverInfo info; + info.md5Hash = idx.sibling(idx.row(), m_iMd5Column).data().toString(); + info.trackId = trackModel->getTrackId(idx); + info.coverLocation = idx.sibling( + idx.row(), m_iCoverLocationColumn).data().toString(); + emit(loadCoverArt(info, cachedOnly)); } } - emit(loadCoverArt(coverLocation, md5Hash, trackId, cachedOnly)); } // slot |