diff options
author | RJ Ryan <rryan@mixxx.org> | 2014-10-28 11:26:00 -0400 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2014-10-28 11:26:00 -0400 |
commit | 29777ea9c19b68801336a85566be68a700985c05 (patch) | |
tree | d9676aab1e84d14c227c1bb056d748dc1b068342 /src/widget | |
parent | 33509d1e3ff0c1db4109a66b17b906683effcd46 (diff) | |
parent | 5ff071f199f4607fbaa7b58fb0de6d8595e9fe9b (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.cpp | 3 | ||||
-rw-r--r-- | src/widget/wcoverartlabel.cpp | 9 | ||||
-rw-r--r-- | src/widget/wcoverartmenu.cpp | 10 | ||||
-rw-r--r-- | src/widget/wcoverartmenu.h | 11 | ||||
-rw-r--r-- | src/widget/wlabel.cpp | 3 | ||||
-rw-r--r-- | src/widget/wtracktableview.cpp | 23 | ||||
-rw-r--r-- | src/widget/wtracktableview.h | 6 |
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; |