summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--build/depends.py1
-rw-r--r--src/widget/wtrackmenu.cpp199
-rw-r--r--src/widget/wtrackmenu.h114
-rw-r--r--src/widget/wtracktableview.cpp215
-rw-r--r--src/widget/wtracktableview.h148
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;