summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dlgtrackinfo.cpp15
-rw-r--r--src/dlgtrackinfo.h3
-rw-r--r--src/library/library.cpp4
-rw-r--r--src/library/library.h5
-rw-r--r--src/skin/legacyskinparser.cpp4
-rw-r--r--src/widget/wcoverart.cpp31
-rw-r--r--src/widget/wcoverart.h8
-rw-r--r--src/widget/wcoverartmenu.cpp48
-rw-r--r--src/widget/wcoverartmenu.h8
-rw-r--r--src/widget/wlibrarytableview.h4
-rw-r--r--src/widget/wtracktableview.cpp24
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