diff options
author | Harshit Maurya <hmaurya999@gmail.com> | 2020-04-01 16:08:16 +0530 |
---|---|---|
committer | Harshit Maurya <hmaurya999@gmail.com> | 2020-04-01 16:08:16 +0530 |
commit | 9abb8a6798aac08e89bb9f3f98b173ecbd275ae0 (patch) | |
tree | 470542efb801c7805272b4105ef79377267a918f | |
parent | 92d6ce908d68f963202d559e3e8b904abda929cc (diff) |
widget/wtrackproperty: introduce new class to decouple context menu from wtracktableview
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | build/depends.py | 1 | ||||
-rw-r--r-- | src/widget/wtrackmenu.cpp | 199 | ||||
-rw-r--r-- | src/widget/wtrackmenu.h | 114 | ||||
-rw-r--r-- | src/widget/wtracktableview.cpp | 215 | ||||
-rw-r--r-- | src/widget/wtracktableview.h | 148 |
6 files changed, 447 insertions, 233 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5053489dca..1a33ba001d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -717,6 +717,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/widget/wstarrating.cpp src/widget/wstatuslight.cpp src/widget/wtime.cpp + src/widget/wtrackmenu.cpp src/widget/wtrackproperty.cpp src/widget/wtracktableview.cpp src/widget/wtracktableviewheader.cpp @@ -836,7 +837,7 @@ elseif(UNIX) endif() # The mixxx executable -add_executable(mixxx WIN32 src/main.cpp) +add_executable(mixxx WIN32 src/main.cpp src/widget/random.cpp src/widget/random.h) target_link_libraries(mixxx PUBLIC mixxx-lib) # diff --git a/build/depends.py b/build/depends.py index cc6572f845..36f225f6c9 100644 --- a/build/depends.py +++ b/build/depends.py @@ -1018,6 +1018,7 @@ class MixxxCore(Feature): "src/widget/wlibrarytableview.cpp", "src/widget/wanalysislibrarytableview.cpp", "src/widget/wlibrarytextbrowser.cpp", + "src/widget/wtrackmenu.cpp", "src/database/mixxxdb.cpp", "src/database/schemamanager.cpp", diff --git a/src/widget/wtrackmenu.cpp b/src/widget/wtrackmenu.cpp new file mode 100644 index 0000000000..f45fd07eb7 --- /dev/null +++ b/src/widget/wtrackmenu.cpp @@ -0,0 +1,199 @@ +#include "widget/wtrackmenu.h" + +#include <utility> +#include <iostream> +#include <library/trackmodel.h> +#include <util/desktophelper.h> +#include "widget/wlibrarytableview.h" +#include "library/dao/trackdao.h" +#include "library/trackcollection.h" + + +WTrackMenu::WTrackMenu(QWidget *parent, TrackCollectionManager* pTrackCollectionManager) + : QMenu(parent), + m_pTrackCollectionManager(pTrackCollectionManager){ + m_pLoadToMenu = new QMenu(this); + m_pLoadToMenu->setTitle(tr("Load to")); + m_pDeckMenu = new QMenu(this); + m_pDeckMenu->setTitle(tr("Deck")); + m_pSamplerMenu = new QMenu(this); + m_pSamplerMenu->setTitle(tr("Sampler")); + + m_pPlaylistMenu = new QMenu(this); + m_pPlaylistMenu->setTitle(tr("Add to Playlist")); + connect(m_pPlaylistMenu, SIGNAL(aboutToShow()), + this, SLOT(slotPopulatePlaylistMenu())); + m_pCrateMenu = new QMenu(this); + m_pCrateMenu->setTitle(tr("Crates")); + connect(m_pCrateMenu, SIGNAL(aboutToShow()), + this, SLOT(slotPopulateCrateMenu())); + + m_pMetadataMenu = new QMenu(this); + m_pMetadataMenu->setTitle(tr("Metadata")); + + m_pMetadataUpdateExternalCollectionsMenu = new QMenu(this); + m_pMetadataUpdateExternalCollectionsMenu->setTitle(tr("Update external collections")); + + m_pBPMMenu = new QMenu(this); + m_pBPMMenu->setTitle(tr("Adjust BPM")); + + m_pColorMenu = new QMenu(this); + m_pColorMenu->setTitle(tr("Select Color")); + + m_pClearMetadataMenu = new QMenu(this); + //: Reset metadata in right click track context menu in library + m_pClearMetadataMenu->setTitle(tr("Reset")); + + m_pCoverMenu = new WCoverArtMenu(this); + m_pCoverMenu->setTitle(tr("Cover Art")); + + connect(m_pCoverMenu, SIGNAL(coverInfoSelected(const CoverInfoRelative&)), + this, SLOT(slotCoverInfoSelected(const CoverInfoRelative&))); + connect(m_pCoverMenu, SIGNAL(reloadCoverArt()), + this, SLOT(slotReloadCoverArt())); + createActions(); +} + +WTrackMenu::~WTrackMenu() { + delete m_pImportMetadataFromFileAct; + delete m_pImportMetadataFromMusicBrainzAct; + delete m_pExportMetadataAct; + delete m_pAddToPreviewDeck; + delete m_pAutoDJBottomAct; + delete m_pAutoDJTopAct; + delete m_pAutoDJReplaceAct; + delete m_pRemoveAct; + delete m_pRemovePlaylistAct; + delete m_pRemoveCrateAct; + delete m_pHideAct; + delete m_pUnhideAct; + delete m_pPropertiesAct; + delete m_pLoadToMenu; + delete m_pDeckMenu; + delete m_pSamplerMenu; + delete m_pPlaylistMenu; + delete m_pCrateMenu; + delete m_pMetadataMenu; + delete m_pClearMetadataMenu; + delete m_pCoverMenu; + delete m_pBpmLockAction; + delete m_pBpmUnlockAction; + delete m_pBpmDoubleAction; + delete m_pBpmHalveAction; + delete m_pBpmTwoThirdsAction; + delete m_pBpmThreeFourthsAction; + delete m_pBpmFourThirdsAction; + delete m_pBpmThreeHalvesAction; + delete m_pBPMMenu; + delete m_pColorMenu; + delete m_pClearBeatsAction; + delete m_pClearPlayCountAction; + delete m_pClearMainCueAction; + delete m_pClearHotCuesAction; + delete m_pClearIntroCueAction; + delete m_pClearOutroCueAction; + delete m_pClearLoopAction; + delete m_pClearReplayGainAction; + delete m_pClearWaveformAction; + delete m_pClearKeyAction; + delete m_pClearAllMetadataAction; + delete m_pPurgeAct; + delete m_pFileBrowserAct; +} + + +void WTrackMenu::createActions() { +// DEBUG_ASSERT(this); +// DEBUG_ASSERT(m_pSamplerMenu); +// +// m_pRemoveAct = new QAction(tr("Remove"), this); +// connect(m_pRemoveAct, SIGNAL(triggered()), this, SLOT(slotRemove())); +// +// m_pRemovePlaylistAct = new QAction(tr("Remove from Playlist"), this); +// connect(m_pRemovePlaylistAct, SIGNAL(triggered()), this, SLOT(slotRemove())); +// +// m_pRemoveCrateAct = new QAction(tr("Remove from Crate"), this); +// connect(m_pRemoveCrateAct, SIGNAL(triggered()), this, SLOT(slotRemove())); +// +// m_pHideAct = new QAction(tr("Hide from Library"), this); +// connect(m_pHideAct, SIGNAL(triggered()), this, SLOT(slotHide())); +// +// m_pUnhideAct = new QAction(tr("Unhide from Library"), this); +// connect(m_pUnhideAct, SIGNAL(triggered()), this, SLOT(slotUnhide())); +// +// m_pPurgeAct = new QAction(tr("Purge from Library"), this); +// connect(m_pPurgeAct, SIGNAL(triggered()), this, SLOT(slotPurge())); +// +// m_pPropertiesAct = new QAction(tr("Properties"), this); +// connect(m_pPropertiesAct, SIGNAL(triggered()), +// this, SLOT(slotShowTrackInfo())); +// + m_pFileBrowserAct = new QAction(tr("Open in File Browser"), this); + connect(m_pFileBrowserAct, SIGNAL(triggered()), + this, SLOT(slotOpenInFileBrowser())); +// +// m_pAutoDJBottomAct = new QAction(tr("Add to Auto DJ Queue (bottom)"), this); +// connect(m_pAutoDJBottomAct, SIGNAL(triggered()), +// this, SLOT(slotAddToAutoDJBottom())); +// +// m_pAutoDJTopAct = new QAction(tr("Add to Auto DJ Queue (top)"), this); +// connect(m_pAutoDJTopAct, SIGNAL(triggered()), +// this, SLOT(slotAddToAutoDJTop())); +// +// m_pAutoDJReplaceAct = new QAction(tr("Add to Auto DJ Queue (replace)"), this); +// connect(m_pAutoDJReplaceAct, SIGNAL(triggered()), +// this, SLOT(slotAddToAutoDJReplace())); +// +// m_pImportMetadataFromFileAct = new QAction(tr("Import From File Tags"), this); +// connect(m_pImportMetadataFromFileAct, SIGNAL(triggered()), +// this, SLOT(slotImportTrackMetadataFromFileTags())); +// +// m_pImportMetadataFromMusicBrainzAct = new QAction(tr("Import From MusicBrainz"),this); +// connect(m_pImportMetadataFromMusicBrainzAct, SIGNAL(triggered()), +// this, SLOT(slotShowDlgTagFetcher())); +// +// m_pExportMetadataAct = new QAction(tr("Export To File Tags"), this); +// connect(m_pExportMetadataAct, SIGNAL(triggered()), +// this, SLOT(slotExportTrackMetadataIntoFileTags())); +} + +void WTrackMenu::setTracks(TrackIdList trackIdList) { + m_pTrackIdList = std::move(trackIdList); + // Store the track pointers at each initialization of track ids. + trackIdsToTrackPointers(); + // Add actions to menu + setupActions(); +} + +void WTrackMenu::setTrack(TrackId trackId) { + // Create a QList of single track to maintain common functions + // for single and multi track selection. + TrackIdList singleItemTrackIdList; + singleItemTrackIdList.push_back(trackId); + setTracks(singleItemTrackIdList); +} + +void WTrackMenu::setupActions() { + addAction(m_pFileBrowserAct); +} + +void WTrackMenu::slotOpenInFileBrowser() { + TrackPointerList trackPointerList = getTrackPointerList(); + QStringList locations; + for (const TrackPointer& trackPointer : trackPointerList) { + locations << trackPointer->getLocation(); + } + mixxx::DesktopHelper::openInFileBrowser(locations); +} + +TrackPointerList WTrackMenu::getTrackPointerList() { + return m_pTrackPointerList; +} + +void WTrackMenu::trackIdsToTrackPointers() { + m_pTrackPointerList.clear(); + for (const auto trackId : m_pTrackIdList) { + TrackPointer trackPointer = m_pTrackCollectionManager->internalCollection()->getTrackById(trackId); + m_pTrackPointerList.push_back(trackPointer); + } +} diff --git a/src/widget/wtrackmenu.h b/src/widget/wtrackmenu.h new file mode 100644 index 0000000000..de43306212 --- /dev/null +++ b/src/widget/wtrackmenu.h @@ -0,0 +1,114 @@ +#ifndef WTRACKMENU_H +#define WTRACKMENU_H + +#include <QAction> +#include <QMenu> +#include <QWidget> +#include <library/trackcollectionmanager.h> + + +#include "widget/wcoverartmenu.h" +#include "widget/wcolorpickeraction.h" + +typedef QList<TrackId> TrackIdList; +typedef QList<TrackPointer> TrackPointerList; + +class TrackCollectionManager; +class ExternalTrackCollection; + +class WTrackMenu : public QMenu { + Q_OBJECT + public: + WTrackMenu(QWidget *parent, TrackCollectionManager* pTrackCollectionManager); + ~WTrackMenu() override; + + void setTrack(TrackId track); + void setTracks(TrackIdList trackList); + + private slots: + void slotOpenInFileBrowser(); + +private: + void createActions(); + void setupActions(); + void trackIdsToTrackPointers(); + TrackPointerList getTrackPointerList(); + + // The selected tracks for which the context menu is created + TrackIdList m_pTrackIdList; + + // Context menu machinery + QMenu *m_pLoadToMenu; + QMenu *m_pDeckMenu; + QMenu *m_pSamplerMenu; + + QMenu *m_pPlaylistMenu; + QMenu *m_pCrateMenu; + QMenu *m_pMetadataMenu; + QMenu *m_pMetadataUpdateExternalCollectionsMenu; + QMenu *m_pClearMetadataMenu; + QMenu *m_pBPMMenu; + QMenu *m_pColorMenu; + + + WCoverArtMenu* m_pCoverMenu; + + // Reload Track Metadata Action: + QAction *m_pImportMetadataFromFileAct; + QAction *m_pImportMetadataFromMusicBrainzAct; + + // Save Track Metadata Action: + QAction *m_pExportMetadataAct; + + // Load Track to PreviewDeck + QAction* m_pAddToPreviewDeck; + + // Send to Auto-DJ Action + QAction *m_pAutoDJBottomAct; + QAction *m_pAutoDJTopAct; + QAction *m_pAutoDJReplaceAct; + + // Remove from table + QAction *m_pRemoveAct; + QAction *m_pRemovePlaylistAct; + QAction *m_pRemoveCrateAct; + QAction *m_pHideAct; + QAction *m_pUnhideAct; + QAction *m_pPurgeAct; + + // Show track-editor action + QAction *m_pPropertiesAct; + QAction *m_pFileBrowserAct; + + // BPM feature + QAction *m_pBpmLockAction; + QAction *m_pBpmUnlockAction; + QAction *m_pBpmDoubleAction; + QAction *m_pBpmHalveAction; + QAction *m_pBpmTwoThirdsAction; + QAction *m_pBpmThreeFourthsAction; + QAction *m_pBpmFourThirdsAction; + QAction *m_pBpmThreeHalvesAction; + + // Track color + WColorPickerAction *m_pColorPickerAction; + + // Clear track metadata actions + QAction* m_pClearBeatsAction; + QAction* m_pClearPlayCountAction; + QAction* m_pClearMainCueAction; + QAction* m_pClearHotCuesAction; + QAction* m_pClearIntroCueAction; + QAction* m_pClearOutroCueAction; + QAction* m_pClearLoopAction; + QAction* m_pClearWaveformAction; + QAction* m_pClearKeyAction; + QAction* m_pClearReplayGainAction; + QAction* m_pClearAllMetadataAction; + + TrackCollectionManager* m_pTrackCollectionManager; + TrackPointerList m_pTrackPointerList; +}; + + +#endif // WTRACKMENU_H diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index b3e581d606..e3efe93bdc 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -68,51 +68,7 @@ WTrackTableView::WTrackTableView(QWidget * parent, m_pNumPreviewDecks = new ControlProxy( "[Master]", "num_preview_decks", this); - m_pMenu = new QMenu(this); - - m_pLoadToMenu = new QMenu(this); - m_pLoadToMenu->setTitle(tr("Load to")); - m_pDeckMenu = new QMenu(this); - m_pDeckMenu->setTitle(tr("Deck")); - m_pSamplerMenu = new QMenu(this); - m_pSamplerMenu->setTitle(tr("Sampler")); - - m_pPlaylistMenu = new QMenu(this); - m_pPlaylistMenu->setTitle(tr("Add to Playlist")); - connect(m_pPlaylistMenu, SIGNAL(aboutToShow()), - this, SLOT(slotPopulatePlaylistMenu())); - m_pCrateMenu = new QMenu(this); - m_pCrateMenu->setTitle(tr("Crates")); - connect(m_pCrateMenu, SIGNAL(aboutToShow()), - this, SLOT(slotPopulateCrateMenu())); - - m_pMetadataMenu = new QMenu(this); - m_pMetadataMenu->setTitle(tr("Metadata")); - - m_pMetadataUpdateExternalCollectionsMenu = new QMenu(this); - m_pMetadataUpdateExternalCollectionsMenu->setTitle(tr("Update external collections")); - - m_pBPMMenu = new QMenu(this); - m_pBPMMenu->setTitle(tr("Adjust BPM")); - - m_pColorMenu = new QMenu(this); - m_pColorMenu->setTitle(tr("Select Color")); - - m_pClearMetadataMenu = new QMenu(this); - //: Reset metadata in right click track context menu in library - m_pClearMetadataMenu->setTitle(tr("Reset")); - - m_pCoverMenu = new WCoverArtMenu(this); - m_pCoverMenu->setTitle(tr("Cover Art")); - - connect(m_pCoverMenu, SIGNAL(coverInfoSelected(const CoverInfoRelative&)), - this, SLOT(slotCoverInfoSelected(const CoverInfoRelative&))); - connect(m_pCoverMenu, SIGNAL(reloadCoverArt()), - this, SLOT(slotReloadCoverArt())); - - // Create all the context m_pMenu->actions (stuff that shows up when you - // right-click) - createActions(); + m_pMenu = new WTrackMenu(this, m_pTrackCollectionManager); // Connect slots and signals to make the world go 'round. connect(this, SIGNAL(doubleClicked(const QModelIndex &)), @@ -145,50 +101,50 @@ WTrackTableView::~WTrackTableView() { pHeader->saveHeaderState(); } - delete m_pImportMetadataFromFileAct; - delete m_pImportMetadataFromMusicBrainzAct; - delete m_pExportMetadataAct; - delete m_pAddToPreviewDeck; - delete m_pAutoDJBottomAct; - delete m_pAutoDJTopAct; - delete m_pAutoDJReplaceAct; - delete m_pRemoveAct; - delete m_pRemovePlaylistAct; - delete m_pRemoveCrateAct; - delete m_pHideAct; - delete m_pUnhideAct; - delete m_pPropertiesAct; +// delete m_pImportMetadataFromFileAct; +// delete m_pImportMetadataFromMusicBrainzAct; +// delete m_pExportMetadataAct; +// delete m_pAddToPreviewDeck; +// delete m_pAutoDJBottomAct; +// delete m_pAutoDJTopAct; +// delete m_pAutoDJReplaceAct; +// delete m_pRemoveAct; +// delete m_pRemovePlaylistAct; +// delete m_pRemoveCrateAct; +// delete m_pHideAct; +// delete m_pUnhideAct; +// delete m_pPropertiesAct; delete m_pMenu; - delete m_pLoadToMenu; - delete m_pDeckMenu; - delete m_pSamplerMenu; - delete m_pPlaylistMenu; - delete m_pCrateMenu; - delete m_pMetadataMenu; - delete m_pClearMetadataMenu; - delete m_pCoverMenu; - delete m_pBpmLockAction; - delete m_pBpmUnlockAction; - delete m_pBpmDoubleAction; - delete m_pBpmHalveAction; - delete m_pBpmTwoThirdsAction; - delete m_pBpmThreeFourthsAction; - delete m_pBpmFourThirdsAction; - delete m_pBpmThreeHalvesAction; - delete m_pBPMMenu; - delete m_pColorMenu; - delete m_pClearBeatsAction; - delete m_pClearPlayCountAction; - delete m_pClearMainCueAction; - delete m_pClearHotCuesAction; - delete m_pClearIntroCueAction; - delete m_pClearOutroCueAction; - delete m_pClearLoopAction; - delete m_pClearReplayGainAction; - delete m_pClearWaveformAction; - delete m_pClearAllMetadataAction; - delete m_pPurgeAct; - delete m_pFileBrowserAct; +// delete m_pLoadToMenu; +// delete m_pDeckMenu; +// delete m_pSamplerMenu; +// delete m_pPlaylistMenu; +// delete m_pCrateMenu; +// delete m_pMetadataMenu; +// delete m_pClearMetadataMenu; +// delete m_pCoverMenu; +// delete m_pBpmLockAction; +// delete m_pBpmUnlockAction; +// delete m_pBpmDoubleAction; +// delete m_pBpmHalveAction; +// delete m_pBpmTwoThirdsAction; +// delete m_pBpmThreeFourthsAction; +// delete m_pBpmFourThirdsAction; +// delete m_pBpmThreeHalvesAction; +// delete m_pBPMMenu; +// delete m_pColorMenu; +// delete m_pClearBeatsAction; +// delete m_pClearPlayCountAction; +// delete m_pClearMainCueAction; +// delete m_pClearHotCuesAction; +// delete m_pClearIntroCueAction; +// delete m_pClearOutroCueAction; +// delete m_pClearLoopAction; +// delete m_pClearReplayGainAction; +// delete m_pClearWaveformAction; +// delete m_pClearAllMetadataAction; +// delete m_pPurgeAct; +// delete m_pFileBrowserAct; } void WTrackTableView::enableCachedOnly() { @@ -427,58 +383,9 @@ void WTrackTableView::loadTrackModel(QAbstractItemModel *model) { } void WTrackTableView::createActions() { - DEBUG_ASSERT(m_pMenu); - DEBUG_ASSERT(m_pSamplerMenu); - - m_pRemoveAct = new QAction(tr("Remove"), this); - connect(m_pRemoveAct, SIGNAL(triggered()), this, SLOT(slotRemove())); - - m_pRemovePlaylistAct = new QAction(tr("Remove from Playlist"), this); - connect(m_pRemovePlaylistAct, SIGNAL(triggered()), this, SLOT(slotRemove())); - - m_pRemoveCrateAct = new QAction(tr("Remove from Crate"), this); - connect(m_pRemoveCrateAct, SIGNAL(triggered()), this, SLOT(slotRemove())); - - m_pHideAct = new QAction(tr("Hide from Library"), this); - connect(m_pHideAct, SIGNAL(triggered()), this, SLOT(slotHide())); - - m_pUnhideAct = new QAction(tr("Unhide from Library"), this); - connect(m_pUnhideAct, SIGNAL(triggered()), this, SLOT(slotUnhide())); - - m_pPurgeAct = new QAction(tr("Purge from Library"), this); - connect(m_pPurgeAct, SIGNAL(triggered()), this, SLOT(slotPurge())); - - m_pPropertiesAct = new QAction(tr("Properties"), this); - connect(m_pPropertiesAct, SIGNAL(triggered()), - this, SLOT(slotShowTrackInfo())); - - m_pFileBrowserAct = new QAction(tr("Open in File Browser"), this); - connect(m_pFileBrowserAct, SIGNAL(triggered()), - this, SLOT(slotOpenInFileBrowser())); - - m_pAutoDJBottomAct = new QAction(tr("Add to Auto DJ Queue (bottom)"), this); - connect(m_pAutoDJBottomAct, SIGNAL(triggered()), - this, SLOT(slotAddToAutoDJBottom())); - - m_pAutoDJTopAct = new QAction(tr("Add to Auto DJ Queue (top)"), this); - connect(m_pAutoDJTopAct, SIGNAL(triggered()), - this, SLOT(slotAddToAutoDJTop())); + /* - m_pAutoDJReplaceAct = new QAction(tr("Add to Auto DJ Queue (replace)"), this); - connect(m_pAutoDJReplaceAct, SIGNAL(triggered()), - this, SLOT(slotAddToAutoDJReplace())); - m_pImportMetadataFromFileAct = new QAction(tr("Import From File Tags"), this); - connect(m_pImportMetadataFromFileAct, SIGNAL(triggered()), - this, SLOT(slotImportTrackMetadataFromFileTags())); - - m_pImportMetadataFromMusicBrainzAct = new QAction(tr("Import From MusicBrainz"),this); - connect(m_pImportMetadataFromMusicBrainzAct, SIGNAL(triggered()), - this, SLOT(slotShowDlgTagFetcher())); - - m_pExportMetadataAct = new QAction(tr("Export To File Tags"), this); - connect(m_pExportMetadataAct, SIGNAL(triggered()), - this, SLOT(slotExportTrackMetadataIntoFileTags())); for (const auto& externalTrackCollection : m_pTrackCollectionManager->externalCollections()) { UpdateExternalTrackCollection updateInExternalTrackCollection; @@ -580,7 +487,7 @@ void WTrackTableView::createActions() { connect(m_pColorPickerAction, &WColorPickerAction::colorPicked, this, - &WTrackTableView::slotColorPicked); + &WTrackTableView::slotColorPicked);*/ } // slot @@ -655,24 +562,6 @@ void WTrackTableView::slotPurge() { } } -void WTrackTableView::slotOpenInFileBrowser() { - TrackModel* trackModel = getTrackModel(); - if (!trackModel) { - return; - } - - const QModelIndexList indices = selectionModel()->selectedRows(); - - QStringList locations; - for (const QModelIndex& index : indices) { - if (!index.isValid()) { - continue; - } - locations << trackModel->getTrackLocation(index); - } - mixxx::DesktopHelper::openInFileBrowser(locations); -} - void WTrackTableView::slotHide() { QModelIndexList indices = selectionModel()->selectedRows(); if (indices.size() > 0) { @@ -828,6 +717,7 @@ void WTrackTableView::slotShowDlgTagFetcher() { } void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) { + /* QModelIndexList indices = selectionModel()->selectedRows(); // Gray out some stuff if multiple songs were selected. @@ -1140,6 +1030,11 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) { m_pPropertiesAct->setEnabled(oneSongSelected); m_pMenu->addAction(m_pPropertiesAct); } +*/ + + // Update track ids in context menu + TrackIdList trackIds = getSelectedTrackIds(); + m_pMenu->setTracks(trackIds); //Create the right-click menu m_pMenu->popup(event->globalPos()); @@ -1646,7 +1541,7 @@ void WTrackTableView::slotClearPlayCount() { } } } - +/* void WTrackTableView::slotPopulatePlaylistMenu() { // The user may open the Playlist submenu, move their cursor away, then // return to the Playlist submenu before exiting the track context menu. @@ -1685,6 +1580,7 @@ void WTrackTableView::slotPopulatePlaylistMenu() { this, [this] { addSelectionToPlaylist(-1); }); m_bPlaylistMenuLoaded = true; } +*/ void WTrackTableView::addSelectionToPlaylist(int iPlaylistId) { const QList<TrackId> trackIds = getSelectedTrackIds(); @@ -1736,7 +1632,7 @@ void WTrackTableView::addSelectionToPlaylist(int iPlaylistId) { m_pTrackCollectionManager->unhideTracks(trackIds); playlistDao.appendTracksToPlaylist(trackIds, iPlaylistId); } - +/* void WTrackTableView::slotPopulateCrateMenu() { // The user may open the Crate submenu, move their cursor away, then // return to the Crate submenu before exiting the track context menu. @@ -1797,6 +1693,7 @@ void WTrackTableView::slotPopulateCrateMenu() { connect(newCrateAction, SIGNAL(triggered()), this, SLOT(addSelectionToNewCrate())); m_bCrateMenuLoaded = true; } + */ void WTrackTableView::updateSelectionCrates(QWidget* pWidget) { auto pCheckBox = qobject_cast<QCheckBox*>(pWidget); diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h index fd6beae9d6..ce312d98e5 100644 --- a/src/widget/wtracktableview.h +++ b/src/widget/wtracktableview.h @@ -12,6 +12,7 @@ #include "util/duration.h" #include "widget/wcolorpickeraction.h" #include "widget/wlibrarytableview.h" +#include "widget/wtrackmenu.h" class ControlProxy; class DlgTagFetcher; @@ -58,7 +59,6 @@ class WTrackTableView : public WLibraryTableView { private slots: void slotRemove(); void slotHide(); - void slotOpenInFileBrowser(); void slotShowTrackInfo(); void slotShowDlgTagFetcher(); void slotNextTrackInfo(); @@ -69,10 +69,10 @@ class WTrackTableView : public WLibraryTableView { void slotImportTrackMetadataFromFileTags(); void slotExportTrackMetadataIntoFileTags(); void slotUpdateExternalTrackCollection(ExternalTrackCollection*); - void slotPopulatePlaylistMenu(); + //void slotPopulatePlaylistMenu(); void addSelectionToPlaylist(int iPlaylistId); void updateSelectionCrates(QWidget* qc); - void slotPopulateCrateMenu(); + //void slotPopulateCrateMenu(); void addSelectionToNewCrate(); void loadSelectionToGroup(QString group, bool play = false); void doSortByColumn(int headerSection, Qt::SortOrder sortOrder); @@ -142,76 +142,78 @@ class WTrackTableView : public WLibraryTableView { ControlProxy* m_pNumDecks; ControlProxy* m_pNumPreviewDecks; - // Context menu machinery - QMenu *m_pMenu; - - QMenu *m_pLoadToMenu; - QMenu *m_pDeckMenu; - QMenu *m_pSamplerMenu; - - QMenu *m_pPlaylistMenu; - QMenu *m_pCrateMenu; - QMenu *m_pMetadataMenu; - QMenu *m_pMetadataUpdateExternalCollectionsMenu; - QMenu *m_pClearMetadataMenu; - QMenu *m_pBPMMenu; - QMenu *m_pColorMenu; - - - WCoverArtMenu* m_pCoverMenu; - - // Reload Track Metadata Action: - QAction *m_pImportMetadataFromFileAct; - QAction *m_pImportMetadataFromMusicBrainzAct; - - // Save Track Metadata Action: - QAction *m_pExportMetadataAct; - - // Load Track to PreviewDeck - QAction* m_pAddToPreviewDeck; - - // Send to Auto-DJ Action - QAction *m_pAutoDJBottomAct; - QAction *m_pAutoDJTopAct; - QAction *m_pAutoDJReplaceAct; - - // Remove from table - QAction *m_pRemoveAct; - QAction *m_pRemovePlaylistAct; - QAction *m_pRemoveCrateAct; - QAction *m_pHideAct; - QAction *m_pUnhideAct; - QAction *m_pPurgeAct; - - // Show track-editor action - QAction *m_pPropertiesAct; - QAction *m_pFileBrowserAct; - - // BPM feature - QAction *m_pBpmLockAction; - QAction *m_pBpmUnlockAction; - QAction *m_pBpmDoubleAction; - QAction *m_pBpmHalveAction; - QAction *m_pBpmTwoThirdsAction; - QAction *m_pBpmThreeFourthsAction; - QAction *m_pBpmFourThirdsAction; - QAction *m_pBpmThreeHalvesAction; - - // Track color - WColorPickerAction *m_pColorPickerAction; - - // Clear track metadata actions - QAction* m_pClearBeatsAction; - QAction* m_pClearPlayCountAction; - QAction* m_pClearMainCueAction; - QAction* m_pClearHotCuesAction; - QAction* m_pClearIntroCueAction; - QAction* m_pClearOutroCueAction; - QAction* m_pClearLoopAction; - QAction* m_pClearWaveformAction; - QAction* m_pClearKeyAction; - QAction* m_pClearReplayGainAction; - QAction* m_pClearAllMetadataAction; + // Context menu container + WTrackMenu *m_pMenu; +// // Context menu machinery +// WTrackMenu *m_pMenu; +// +// QMenu *m_pLoadToMenu; +// QMenu *m_pDeckMenu; +// QMenu *m_pSamplerMenu; +// +// QMenu *m_pPlaylistMenu; +// QMenu *m_pCrateMenu; +// QMenu *m_pMetadataMenu; +// QMenu *m_pMetadataUpdateExternalCollectionsMenu; +// QMenu *m_pClearMetadataMenu; +// QMenu *m_pBPMMenu; +// QMenu *m_pColorMenu; +// +// +// WCoverArtMenu* m_pCoverMenu; +// +// // Reload Track Metadata Action: +// QAction *m_pImportMetadataFromFileAct; +// QAction *m_pImportMetadataFromMusicBrainzAct; +// +// // Save Track Metadata Action: +// QAction *m_pExportMetadataAct; +// +// // Load Track to PreviewDeck +// QAction* m_pAddToPreviewDeck; +// +// // Send to Auto-DJ Action +// QAction *m_pAutoDJBottomAct; +// QAction *m_pAutoDJTopAct; +// QAction *m_pAutoDJReplaceAct; +// +// // Remove from table +// QAction *m_pRemoveAct; +// QAction *m_pRemovePlaylistAct; +// QAction *m_pRemoveCrateAct; +// QAction *m_pHideAct; +// QAction *m_pUnhideAct; +// QAction *m_pPurgeAct; +// +// // Show track-editor action +// QAction *m_pPropertiesAct; +// QAction *m_pFileBrowserAct; +// +// // BPM feature +// QAction *m_pBpmLockAction; +// QAction *m_pBpmUnlockAction; +// QAction *m_pBpmDoubleAction; +// QAction *m_pBpmHalveAction; +// QAction *m_pBpmTwoThirdsAction; +// QAction *m_pBpmThreeFourthsAction; +// QAction *m_pBpmFourThirdsAction; +// QAction *m_pBpmThreeHalvesAction; +// +// // Track color +// WColorPickerAction *m_pColorPickerAction; +// +// // Clear track metadata actions +// QAction* m_pClearBeatsAction; +// QAction* m_pClearPlayCountAction; +// QAction* m_pClearMainCueAction; +// QAction* m_pClearHotCuesAction; +// QAction* m_pClearIntroCueAction; +// QAction* m_pClearOutroCueAction; +// QAction* m_pClearLoopAction; +// QAction* m_pClearWaveformAction; +// QAction* m_pClearKeyAction; +// QAction* m_pClearReplayGainAction; +// QAction* m_pClearAllMetadataAction; struct UpdateExternalTrackCollection { QPointer<ExternalTrackCollection> externalTrackCollection; |