summaryrefslogtreecommitdiffstats
path: root/src/widget
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2014-10-28 11:26:00 -0400
committerRJ Ryan <rryan@mixxx.org>2014-10-28 11:26:00 -0400
commit29777ea9c19b68801336a85566be68a700985c05 (patch)
treed9676aab1e84d14c227c1bb056d748dc1b068342 /src/widget
parent33509d1e3ff0c1db4109a66b17b906683effcd46 (diff)
parent5ff071f199f4607fbaa7b58fb0de6d8595e9fe9b (diff)
Merge remote-tracking branch 'cardinot/coverArtSupport' into
coverart_test * Update WTrackTableView changes to match new WCoverArtMenu behavior. * Remove DirectoryDAO integration for now. Conflicts: src/library/coverartcache.cpp src/library/coverartcache.h src/widget/wcoverartmenu.cpp src/widget/wcoverartmenu.h
Diffstat (limited to 'src/widget')
-rw-r--r--src/widget/wcoverart.cpp3
-rw-r--r--src/widget/wcoverartlabel.cpp9
-rw-r--r--src/widget/wcoverartmenu.cpp10
-rw-r--r--src/widget/wcoverartmenu.h11
-rw-r--r--src/widget/wlabel.cpp3
-rw-r--r--src/widget/wtracktableview.cpp23
-rw-r--r--src/widget/wtracktableview.h6
7 files changed, 38 insertions, 27 deletions
diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp
index b30b57b079..8a1ef6581a 100644
--- a/src/widget/wcoverart.cpp
+++ b/src/widget/wcoverart.cpp
@@ -196,7 +196,8 @@ void WCoverArt::mousePressEvent(QMouseEvent* event) {
}
if (event->button() == Qt::RightButton && m_loadedTrack) { // show context-menu
- m_pMenu->show(event->globalPos(), m_lastRequestedCover, m_loadedTrack);
+ m_pMenu->setCoverArt(m_loadedTrack, m_lastRequestedCover);
+ m_pMenu->popup(event->globalPos());
} else if (event->button() == Qt::LeftButton) { // init/close fullsize cover
if (m_pDlgFullSize->isVisible()) {
m_pDlgFullSize->close();
diff --git a/src/widget/wcoverartlabel.cpp b/src/widget/wcoverartlabel.cpp
index e5bc937ad6..3325cf7e25 100644
--- a/src/widget/wcoverartlabel.cpp
+++ b/src/widget/wcoverartlabel.cpp
@@ -33,12 +33,7 @@ WCoverArtLabel::~WCoverArtLabel() {
void WCoverArtLabel::setCoverArt(TrackPointer pTrack, const CoverInfo& info, QPixmap px) {
qDebug() << "WCoverArtLabel::setCoverArt" << info << px.size();
-
- // Clear the WCoverArtMenu to release the TrackPointer it holds (we may as
- // well have a WCoverArtMenu::setCoverArt method to match this one but the
- // existing pattern is passing them in through show() so that's what we
- // do)..
- m_pCoverMenu->clear();
+ m_pCoverMenu->setCoverArt(pTrack, info);
m_coverInfo = info;
m_pTrack = pTrack;
@@ -57,7 +52,7 @@ void WCoverArtLabel::setCoverArt(TrackPointer pTrack, const CoverInfo& info, QPi
}
void WCoverArtLabel::slotCoverMenu(const QPoint& pos) {
- m_pCoverMenu->show(mapToGlobal(pos), m_coverInfo, m_pTrack);
+ m_pCoverMenu->popup(mapToGlobal(pos));
}
void WCoverArtLabel::mousePressEvent(QMouseEvent* event) {
diff --git a/src/widget/wcoverartmenu.cpp b/src/widget/wcoverartmenu.cpp
index 8908981df2..5fe19713bd 100644
--- a/src/widget/wcoverartmenu.cpp
+++ b/src/widget/wcoverartmenu.cpp
@@ -32,15 +32,9 @@ void WCoverArtMenu::createActions() {
addAction(m_pReload);
}
-void WCoverArtMenu::clear() {
- m_coverInfo = CoverInfo();
- m_pTrack.clear();
-}
-
-void WCoverArtMenu::show(QPoint pos, CoverInfo info, TrackPointer pTrack) {
- m_coverInfo = info;
+void WCoverArtMenu::setCoverArt(TrackPointer pTrack, const CoverInfo& info) {
m_pTrack = pTrack;
- popup(pos);
+ m_coverInfo = info;
}
void WCoverArtMenu::slotChange() {
diff --git a/src/widget/wcoverartmenu.h b/src/widget/wcoverartmenu.h
index d9356d1c1f..575aa073c2 100644
--- a/src/widget/wcoverartmenu.h
+++ b/src/widget/wcoverartmenu.h
@@ -10,18 +10,17 @@
#include "library/coverart.h"
// This class implements a context-menu with all CoverArt user actions. Callers
-// MUST use the method show(...) to open the menu. do NOT use exec() or
-// popup(). This class does not change the database -- it emits a
-// coverArtSelected signal when the user performs an action. It is up to the
-// parent to decide how to handle the action.
+// must call setCoverArt before calling exec or popup. This class does
+// not change the database -- it emits a coverArtSelected signal when the user
+// performs an action. It is up to the parent to decide how to handle the
+// action.
class WCoverArtMenu : public QMenu {
Q_OBJECT
public:
WCoverArtMenu(QWidget *parent = 0);
virtual ~WCoverArtMenu();
- void show(QPoint pos, CoverInfo info, TrackPointer pTrack);
- void clear();
+ void setCoverArt(TrackPointer pTrack, const CoverInfo& info);
signals:
void coverArtSelected(const CoverArt& art);
diff --git a/src/widget/wlabel.cpp b/src/widget/wlabel.cpp
index b528231766..838a749cd8 100644
--- a/src/widget/wlabel.cpp
+++ b/src/widget/wlabel.cpp
@@ -49,8 +49,7 @@ void WLabel::setup(QDomNode node, const SkinContext& context) {
// Font size
if (context.hasNode(node, "FontSize")) {
- int fontsize = 9;
- fontsize = context.selectString(node, "FontSize").toInt();
+ int fontsize = context.selectString(node, "FontSize").toInt();
setFont( QFont("Helvetica",fontsize,QFont::Normal) );
}
diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp
index 635fccd014..35c65cc5e9 100644
--- a/src/widget/wtracktableview.cpp
+++ b/src/widget/wtracktableview.cpp
@@ -21,6 +21,7 @@
#include "util/time.h"
#include "dlgpreflibrary.h"
#include "waveform/guitick.h"
+#include "widget/wcoverartmenu.h"
WTrackTableView::WTrackTableView(QWidget * parent,
ConfigObject<ConfigValue> * pConfig,
@@ -76,6 +77,11 @@ WTrackTableView::WTrackTableView(QWidget * parent,
m_pCrateMenu->setTitle(tr("Add to Crate"));
m_pBPMMenu = new QMenu(this);
m_pBPMMenu->setTitle(tr("BPM Options"));
+ m_pCoverMenu = new WCoverArtMenu(this);
+ m_pCoverMenu->setTitle(tr("Cover Art"));
+ connect(m_pCoverMenu, SIGNAL(coverArtSelected(const CoverArt&)),
+ this, SLOT(slotCoverArtSelected(const CoverArt&)));
+
// Disable editing
//setEditTriggers(QAbstractItemView::NoEditTriggers);
@@ -655,6 +661,7 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
// Gray out some stuff if multiple songs were selected.
bool oneSongSelected = indices.size() == 1;
+ TrackModel* trackModel = getTrackModel();
m_pMenu->clear();
@@ -785,7 +792,6 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
m_pBPMMenu->addAction(m_pBpmUnlockAction);
m_pBPMMenu->addSeparator();
if (oneSongSelected) {
- TrackModel* trackModel = getTrackModel();
if (trackModel == NULL) {
return;
}
@@ -808,7 +814,6 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
}
} else {
bool anyLocked = false; //true if any of the selected items are locked
- TrackModel* trackModel = getTrackModel();
int column = trackModel->fieldIndex("bpm_lock");
for (int i = 0; i < indices.size() && !anyLocked; ++i) {
int row = indices.at(i).row();
@@ -837,7 +842,6 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
//end of BPM section of menu
if (modelHasCapabilities(TrackModel::TRACKMODELCAPS_CLEAR_BEATS)) {
- TrackModel* trackModel = getTrackModel();
if (trackModel == NULL) {
return;
}
@@ -861,6 +865,13 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
m_pReloadMetadataFromMusicBrainzAct->setEnabled(oneSongSelected);
m_pMenu->addAction(m_pReloadMetadataFromMusicBrainzAct);
}
+
+ m_contextTrack = trackModel->getTrack(indices.at(0));
+ m_pCoverMenu->setCoverArt(m_contextTrack, m_contextTrack->getCoverInfo());
+ // TODO(rryan): support multiple selection. disable for now to indicate we
+ // don't support it.
+ m_pCoverMenu->setEnabled(indices.size() == 1);
+ m_pMenu->addMenu(m_pCoverMenu);
// REMOVE and HIDE should not be at the first menu position to avoid accidental clicks
m_pMenu->addSeparator();
if (modelHasCapabilities(TrackModel::TRACKMODELCAPS_REMOVE)) {
@@ -1566,3 +1577,9 @@ void WTrackTableView::slotClearBeats() {
}
}
}
+
+void WTrackTableView::slotCoverArtSelected(const CoverArt& art) {
+ if (m_contextTrack) {
+ m_contextTrack->setCoverArt(art);
+ }
+}
diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h
index ea45eb5036..fc835575e7 100644
--- a/src/widget/wtracktableview.h
+++ b/src/widget/wtracktableview.h
@@ -8,12 +8,14 @@
#include "trackinfoobject.h"
#include "library/libraryview.h"
#include "library/trackmodel.h" // Can't forward declare enums
+#include "library/coverart.h"
#include "widget/wlibrarytableview.h"
#include "dlgtagfetcher.h"
class ControlObjectThread;
class DlgTrackInfo;
class TrackCollection;
+class WCoverArtMenu;
const QString WTRACKTABLEVIEW_VSCROLLBARPOS_KEY = "VScrollBarPos"; /** ConfigValue key for QTable vertical scrollbar position */
const QString LIBRARY_CONFIGVALUE = "[Library]"; /** ConfigValue "value" (wtf) for library stuff */
@@ -72,6 +74,7 @@ class WTrackTableView : public WLibraryTableView {
// Signalled 20 times per second (every 50ms) by GuiTick.
void slotGuiTick50ms(double);
void slotScrollValueChanged(int);
+ void slotCoverArtSelected(const CoverArt& art);
private:
void sendToAutoDJ(bool bTop);
@@ -111,6 +114,7 @@ class WTrackTableView : public WLibraryTableView {
// Context menu machinery
QMenu *m_pMenu, *m_pPlaylistMenu, *m_pCrateMenu, *m_pSamplerMenu, *m_pBPMMenu;
+ WCoverArtMenu* m_pCoverMenu;
QSignalMapper m_playlistMapper, m_crateMapper, m_deckMapper, m_samplerMapper;
// Reload Track Metadata Action:
@@ -159,6 +163,8 @@ class WTrackTableView : public WLibraryTableView {
int m_iCoverColumn; // visible cover art
int m_iTrackLocationColumn;
+ TrackPointer m_contextTrack;
+
// Control the delay to load a cover art.
qint64 m_lastUserActionNanos;
bool m_loadCachedOnly;