summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarshit Maurya <hmaurya999@gmail.com>2020-04-10 04:53:25 +0530
committerHarshit Maurya <hmaurya999@gmail.com>2020-04-10 04:53:25 +0530
commit2342cfc3eb865f2bb6c3e0ecec8b20aef1ae05b4 (patch)
tree513a57ada1b81254d17eff3a4fd4ddcb204b13a4 /src
parentf39e9aaee80c3193ae59c0586a2f8041532e3216 (diff)
WTrackMenu: make menu functions generic
Diffstat (limited to 'src')
-rw-r--r--src/library/dlgtagfetcher.cpp14
-rw-r--r--src/library/dlgtagfetcher.h3
-rw-r--r--src/library/dlgtrackinfo.cpp13
-rw-r--r--src/library/dlgtrackinfo.h3
-rw-r--r--src/widget/wtrackmenu.cpp274
-rw-r--r--src/widget/wtrackmenu.h20
-rw-r--r--src/widget/wtrackproperty.cpp8
7 files changed, 133 insertions, 202 deletions
diff --git a/src/library/dlgtagfetcher.cpp b/src/library/dlgtagfetcher.cpp
index 0b6b682064..d29f635fe4 100644
--- a/src/library/dlgtagfetcher.cpp
+++ b/src/library/dlgtagfetcher.cpp
@@ -54,20 +54,26 @@ void addTrack(
} // anonymous namespace
-DlgTagFetcher::DlgTagFetcher(QWidget* parent)
+DlgTagFetcher::DlgTagFetcher(QWidget* parent, bool enableNavigation)
: QDialog(parent),
m_tagFetcher(parent),
- m_networkResult(NetworkResult::Ok) {
+ m_networkResult(NetworkResult::Ok),
+ m_bNavigationIsEnabled(enableNavigation) {
init();
}
void DlgTagFetcher::init() {
setupUi(this);
+ if (m_bNavigationIsEnabled) {
+ connect(btnPrev, &QPushButton::clicked, this, &DlgTagFetcher::previous);
+ connect(btnNext, &QPushButton::clicked, this, &DlgTagFetcher::next);
+ } else {
+ btnNext->hide();
+ btnPrev->hide();
+ }
connect(btnApply, &QPushButton::clicked, this, &DlgTagFetcher::apply);
connect(btnQuit, &QPushButton::clicked, this, &DlgTagFetcher::quit);
- connect(btnPrev, &QPushButton::clicked, this, &DlgTagFetcher::previous);
- connect(btnNext, &QPushButton::clicked, this, &DlgTagFetcher::next);
connect(results, &QTreeWidget::currentItemChanged, this, &DlgTagFetcher::resultSelected);
connect(&m_tagFetcher, &TagFetcher::resultAvailable, this, &DlgTagFetcher::fetchTagFinished);
diff --git a/src/library/dlgtagfetcher.h b/src/library/dlgtagfetcher.h
index 341f7807de..46a593c94c 100644
--- a/src/library/dlgtagfetcher.h
+++ b/src/library/dlgtagfetcher.h
@@ -12,7 +12,7 @@ class DlgTagFetcher : public QDialog, public Ui::DlgTagFetcher {
Q_OBJECT
public:
- explicit DlgTagFetcher(QWidget *parent);
+ DlgTagFetcher(QWidget* parent, bool enableNavigation = false);
~DlgTagFetcher() override = default;
void init();
@@ -58,4 +58,5 @@ class DlgTagFetcher : public QDialog, public Ui::DlgTagFetcher {
UnknownError,
};
NetworkResult m_networkResult;
+ bool m_bNavigationIsEnabled;
};
diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp
index 35848013ac..ba9626dfd7 100644
--- a/src/library/dlgtrackinfo.cpp
+++ b/src/library/dlgtrackinfo.cpp
@@ -24,9 +24,10 @@ const int kMinBpm = 30;
// Maximum allowed interval between beats (calculated from kMinBpm).
const mixxx::Duration kMaxInterval = mixxx::Duration::fromMillis(1000.0 * (60.0 / kMinBpm));
-DlgTrackInfo::DlgTrackInfo(UserSettingsPointer pConfig, QWidget* parent)
+DlgTrackInfo::DlgTrackInfo(UserSettingsPointer pConfig, QWidget* parent, bool enableNavigation)
: QDialog(parent),
m_pTapFilter(new TapFilter(this, kFilterLength, kMaxInterval)),
+ m_bNavigationIsEnabled(enableNavigation),
m_dLastTapedBpm(-1.),
m_pWCoverArtLabel(new WCoverArtLabel(this)),
m_pConfig(pConfig) {
@@ -42,8 +43,14 @@ void DlgTrackInfo::init() {
coverBox->insertWidget(1, m_pWCoverArtLabel);
- connect(btnNext, &QPushButton::clicked, this, &DlgTrackInfo::slotNext);
- connect(btnPrev, &QPushButton::clicked, this, &DlgTrackInfo::slotPrev);
+ if (m_bNavigationIsEnabled) {
+ connect(btnNext, &QPushButton::clicked, this, &DlgTrackInfo::slotNext);
+ connect(btnPrev, &QPushButton::clicked, this, &DlgTrackInfo::slotPrev);
+ } else {
+ btnNext->hide();
+ btnPrev->hide();
+ }
+
connect(btnApply, &QPushButton::clicked, this, &DlgTrackInfo::apply);
connect(btnOK, &QPushButton::clicked, this, &DlgTrackInfo::OK);
connect(btnCancel, &QPushButton::clicked, this, &DlgTrackInfo::cancel);
diff --git a/src/library/dlgtrackinfo.h b/src/library/dlgtrackinfo.h
index 98dc17c527..244e9350d5 100644
--- a/src/library/dlgtrackinfo.h
+++ b/src/library/dlgtrackinfo.h
@@ -18,7 +18,7 @@
class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo {
Q_OBJECT
public:
- DlgTrackInfo(UserSettingsPointer pConfig, QWidget* parent);
+ DlgTrackInfo(UserSettingsPointer pConfig, QWidget* parent, bool enableNavigation = false);
virtual ~DlgTrackInfo();
public slots:
@@ -78,6 +78,7 @@ class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo {
BeatsPointer m_pBeatsClone;
Keys m_keysClone;
bool m_trackHasBeatMap;
+ bool m_bNavigationIsEnabled;
QScopedPointer<TapFilter> m_pTapFilter;
double m_dLastTapedBpm;
diff --git a/src/widget/wtrackmenu.cpp b/src/widget/wtrackmenu.cpp
index 0a312fbaea..888bd0fbc7 100644
--- a/src/widget/wtrackmenu.cpp
+++ b/src/widget/wtrackmenu.cpp
@@ -42,11 +42,6 @@ WTrackMenu::WTrackMenu(QWidget* parent,
m_pTrackCollectionManager(pTrackCollectionManager),
m_bPlaylistMenuLoaded(false),
m_bCrateMenuLoaded(false),
- m_iCoverSourceColumn(-1),
- m_iCoverTypeColumn(-1),
- m_iCoverLocationColumn(-1),
- m_iCoverHashColumn(-1),
- m_iCoverColumn(-1),
m_eFilters(flags),
m_eIndependentFilters(Filter::IndependentFilters) {
m_pNumSamplers = new ControlProxy(
@@ -56,14 +51,7 @@ WTrackMenu::WTrackMenu(QWidget* parent,
m_pNumPreviewDecks = new ControlProxy(
"[Master]", "num_preview_decks", this);
- if (trackModel) {
- m_iCoverSourceColumn = trackModel->fieldIndex(LIBRARYTABLE_COVERART_SOURCE);
- m_iCoverTypeColumn = trackModel->fieldIndex(LIBRARYTABLE_COVERART_TYPE);
- m_iCoverLocationColumn = trackModel->fieldIndex(LIBRARYTABLE_COVERART_LOCATION);
- m_iCoverHashColumn = trackModel->fieldIndex(LIBRARYTABLE_COVERART_HASH);
- m_iCoverColumn = trackModel->fieldIndex(LIBRARYTABLE_COVERART);
- m_iTrackLocationColumn = trackModel->fieldIndex(TRACKLOCATIONSTABLE_LOCATION);
- } else {
+ if (!trackModel) {
// Check if passed flags are a subset of available subsets
VERIFY_OR_DEBUG_ASSERT((m_eIndependentFilters | flags) == m_eIndependentFilters) {
return;
@@ -140,10 +128,10 @@ void WTrackMenu::createActions() {
connect(m_pAutoDJBottomAct, &QAction::triggered, this, &WTrackMenu::slotAddToAutoDJBottom);
m_pAutoDJTopAct = new QAction(tr("Add to Auto DJ Queue (top)"), this);
- connect(m_pAutoDJBottomAct, &QAction::triggered, this, &WTrackMenu::slotAddToAutoDJTop);
+ connect(m_pAutoDJTopAct, &QAction::triggered, this, &WTrackMenu::slotAddToAutoDJTop);
m_pAutoDJReplaceAct = new QAction(tr("Add to Auto DJ Queue (replace)"), this);
- connect(m_pAutoDJBottomAct, &QAction::triggered, this, &WTrackMenu::slotAddToAutoDJReplace);
+ connect(m_pAutoDJReplaceAct, &QAction::triggered, this, &WTrackMenu::slotAddToAutoDJReplace);
}
if (optionIsEnabled(Filter::LoadTo)) {
@@ -406,9 +394,6 @@ void WTrackMenu::setupActions() {
}
void WTrackMenu::updateMenus() {
- // Changes menu options depending on track(s)
- auto trackModel = getTrackModel();
- const auto indices = getTrackIndices();
const auto trackIds = getTrackIds();
const auto trackPointers = getTrackPointers();
@@ -479,39 +464,22 @@ void WTrackMenu::updateMenus() {
if (optionIsEnabled(Filter::Metadata)) {
m_pImportMetadataFromMusicBrainzAct->setEnabled(oneSongSelected);
- // Cover art menu only applies if at least one track is selected.
- if (indices.size()) {
- // We load a single track to get the necessary context for the cover (we use
- // last to be consistent with selectionChanged above).
- QModelIndex last = indices.last();
- CoverInfo info;
- info.source = static_cast<CoverInfo::Source>(
- last.sibling(last.row(), m_iCoverSourceColumn).data().toInt());
- info.type = static_cast<CoverInfo::Type>(
- last.sibling(last.row(), m_iCoverTypeColumn).data().toInt());
- info.hash = last.sibling(last.row(), m_iCoverHashColumn).data().toUInt();
- info.trackLocation = last.sibling(
- last.row(), m_iTrackLocationColumn)
- .data()
- .toString();
- info.coverLocation = last.sibling(
- last.row(), m_iCoverLocationColumn)
- .data()
- .toString();
- m_pCoverMenu->setCoverArt(info);
- }
+ // We load a single track to get the necessary context for the cover (we use
+ // last to be consistent with selectionChanged above).
+ TrackPointer last = trackPointers.last();
+ CoverInfo info;
+ info.source = last->getCoverInfo().source;
+ info.type = last->getCoverInfo().type;
+ info.hash = last->getCoverHash();
+ info.trackLocation = last->getCoverInfoWithLocation().trackLocation;
+ info.coverLocation = last->getCoverInfoWithLocation().coverLocation;
+ m_pCoverMenu->setCoverArt(info);
}
if (optionIsEnabled(Filter::Reset)) {
- VERIFY_OR_DEBUG_ASSERT(trackModel) {
- return;
- }
bool allowClear = true;
- int column = trackModel->fieldIndex(LIBRARYTABLE_BPM_LOCK);
- for (int i = 0; i < indices.size() && allowClear; ++i) {
- int row = indices.at(i).row();
- QModelIndex index = indices.at(i).sibling(row, column);
- if (index.data().toBool()) {
+ for (int i = 0; i < trackPointers.size() && allowClear; ++i) {
+ if (trackPointers.at(0)->isBpmLocked()) {
allowClear = false;
}
}
@@ -519,80 +487,45 @@ void WTrackMenu::updateMenus() {
}
if (optionIsEnabled(Filter::BPM)) {
- if (oneSongSelected) {
- if (!trackModel) {
- return;
- }
- int column = trackModel->fieldIndex(LIBRARYTABLE_BPM_LOCK);
- QModelIndex index = indices.at(0).sibling(indices.at(0).row(), column);
- if (index.data().toBool()) { //BPM is locked
- m_pBpmUnlockAction->setEnabled(true);
- m_pBpmLockAction->setEnabled(false);
- m_pBpmDoubleAction->setEnabled(false);
- m_pBpmHalveAction->setEnabled(false);
- m_pBpmTwoThirdsAction->setEnabled(false);
- m_pBpmThreeFourthsAction->setEnabled(false);
- m_pBpmFourThirdsAction->setEnabled(false);
- m_pBpmThreeHalvesAction->setEnabled(false);
- } else { //BPM is not locked
- m_pBpmUnlockAction->setEnabled(false);
- m_pBpmLockAction->setEnabled(true);
- m_pBpmDoubleAction->setEnabled(true);
- m_pBpmHalveAction->setEnabled(true);
- m_pBpmTwoThirdsAction->setEnabled(true);
- m_pBpmThreeFourthsAction->setEnabled(true);
- m_pBpmFourThirdsAction->setEnabled(true);
- m_pBpmThreeHalvesAction->setEnabled(true);
+ bool anyLocked = false; //true if any of the selected items are locked
+ for (int i = 0; i < trackPointers.size() && !anyLocked; ++i) {
+ if (trackPointers.at(i)->isBpmLocked()) {
+ anyLocked = true;
}
+ }
+ if (anyLocked) {
+ m_pBpmUnlockAction->setEnabled(true);
+ m_pBpmLockAction->setEnabled(false);
+ m_pBpmDoubleAction->setEnabled(false);
+ m_pBpmHalveAction->setEnabled(false);
+ m_pBpmTwoThirdsAction->setEnabled(false);
+ m_pBpmThreeFourthsAction->setEnabled(false);
+ m_pBpmFourThirdsAction->setEnabled(false);
+ m_pBpmThreeHalvesAction->setEnabled(false);
} else {
- bool anyLocked = false; //true if any of the selected items are locked
- int column = trackModel->fieldIndex(LIBRARYTABLE_BPM_LOCK);
- for (int i = 0; i < indices.size() && !anyLocked; ++i) {
- int row = indices.at(i).row();
- QModelIndex index = indices.at(i).sibling(row, column);
- if (index.data().toBool()) {
- anyLocked = true;
- }
- }
- if (anyLocked) {
- m_pBpmLockAction->setEnabled(false);
- m_pBpmUnlockAction->setEnabled(true);
- m_pBpmDoubleAction->setEnabled(false);
- m_pBpmHalveAction->setEnabled(false);
- m_pBpmTwoThirdsAction->setEnabled(false);
- m_pBpmThreeFourthsAction->setEnabled(false);
- m_pBpmFourThirdsAction->setEnabled(false);
- m_pBpmThreeHalvesAction->setEnabled(false);
- } else {
- m_pBpmLockAction->setEnabled(true);
- m_pBpmUnlockAction->setEnabled(false);
- m_pBpmDoubleAction->setEnabled(true);
- m_pBpmHalveAction->setEnabled(true);
- m_pBpmTwoThirdsAction->setEnabled(true);
- m_pBpmThreeFourthsAction->setEnabled(true);
- m_pBpmFourThirdsAction->setEnabled(true);
- m_pBpmThreeHalvesAction->setEnabled(true);
- }
+ m_pBpmUnlockAction->setEnabled(false);
+ m_pBpmLockAction->setEnabled(true);
+ m_pBpmDoubleAction->setEnabled(true);
+ m_pBpmHalveAction->setEnabled(true);
+ m_pBpmTwoThirdsAction->setEnabled(true);
+ m_pBpmThreeFourthsAction->setEnabled(true);
+ m_pBpmFourThirdsAction->setEnabled(true);
+ m_pBpmThreeHalvesAction->setEnabled(true);
}
}
- // Track color menu only appears if at least one track is selected
- if (optionIsEnabled(Filter::Color) && !indices.empty()) {
+ if (optionIsEnabled(Filter::Color)) {
m_pColorPickerAction->setColorPalette(
ColorPaletteSettings(m_pConfig).getTrackColorPalette());
// Get color of first selected track
- int column = trackModel->fieldIndex(LIBRARYTABLE_COLOR);
- QModelIndex index = indices.at(0).sibling(indices.at(0).row(), column);
- auto trackColor = mixxx::RgbColor::fromQVariant(index.data());
+ TrackPointer pTrack = trackPointers.at(0);
+ auto trackColor = pTrack->getColor();
// Check if all other selected tracks have the same color
bool multipleTrackColors = false;
- for (int i = 1; i < indices.size(); ++i) {
- int row = indices.at(i).row();
- QModelIndex index = indices.at(i).sibling(row, column);
-
- if (trackColor != mixxx::RgbColor::fromQVariant(index.data())) {
+ for (int i = 1; i < trackPointers.size(); ++i) {
+ if (trackColor != trackPointers.at(i)->getColor()) {
trackColor = mixxx::RgbColor::nullopt();
multipleTrackColors = true;
break;
@@ -739,20 +672,9 @@ void WTrackMenu::slotOpenInFileBrowser() {
}
void WTrackMenu::slotImportTrackMetadataFromFileTags() {
- if (!modelHasCapabilities(TrackModel::TRACKMODELCAPS_EDITMETADATA)) {
- return;
- }
-
- const QModelIndexList indices = getTrackIndices();
+ auto trackPointers = getTrackPointers();
- auto trackModel = getTrackModel();
-
- if (trackModel == nullptr) {
- return;
- }
-
- for (const QModelIndex& index : indices) {
- TrackPointer pTrack = trackModel->getTrack(index);
+ for (const auto& pTrack : trackPointers) {
if (pTrack) {
// The user has explicitly requested to reload metadata from the file
// to override the information within Mixxx! Custom cover art must be
@@ -764,24 +686,11 @@ void WTrackMenu::slotImportTrackMetadataFromFileTags() {
}
void WTrackMenu::slotExportTrackMetadataIntoFileTags() {
- if (!modelHasCapabilities(TrackModel::TRACKMODELCAPS_EDITMETADATA)) {
- return;
- }
-
- auto trackModel = getTrackModel();
- if (!trackModel) {
- return;
- }
-
- const QModelIndexList indices = getTrackIndices();
- if (indices.isEmpty()) {
- return;
- }
+ auto trackPointers = getTrackPointers();
mixxx::DlgTrackMetadataExport::showMessageBoxOncePerSession();
- for (const QModelIndex& index : indices) {
- TrackPointer pTrack = trackModel->getTrack(index);
+ for (const auto& pTrack : trackPointers) {
if (pTrack) {
// Export of metadata is deferred until all references to the
// corresponding track object have been dropped. Otherwise
@@ -798,28 +707,15 @@ void WTrackMenu::slotUpdateExternalTrackCollection(
VERIFY_OR_DEBUG_ASSERT(externalTrackCollection) {
return;
}
-
- if (!modelHasCapabilities(TrackModel::TRACKMODELCAPS_EDITMETADATA)) {
- return;
- }
-
- auto trackModel = getTrackModel();
- if (!trackModel) {
- return;
- }
-
- const QModelIndexList indices = getTrackIndices();
- if (indices.isEmpty()) {
- return;
- }
+ auto trackPointers = getTrackPointers();
QList<TrackRef> trackRefs;
- trackRefs.reserve(indices.size());
- for (const QModelIndex& index : indices) {
+ trackRefs.reserve(trackPointers.size());
+ for (const auto& pTrack : trackPointers) {
trackRefs.append(
TrackRef::fromFileInfo(
- trackModel->getTrackLocation(index),
- trackModel->getTrackId(index)));
+ pTrack->getLocation(),
+ pTrack->getId()));
}
externalTrackCollection->updateTracks(std::move(trackRefs));
@@ -1037,7 +933,7 @@ void WTrackMenu::slotScaleBpm(int scale) {
}
for (const auto& pTrack : trackPointers) {
- if (pTrack && !pTrack->isBpmLocked()) {
+ if (!pTrack->isBpmLocked()) {
BeatsPointer pBeats = pTrack->getBeats();
if (pBeats) {
pBeats->scale(static_cast<Beats::BPMScale>(scale));
@@ -1054,9 +950,7 @@ void WTrackMenu::lockBpm(bool lock) {
// TODO: This should be done in a thread for large selections
for (const auto& pTrack : trackPointers) {
- if (!pTrack->isBpmLocked()) {
- pTrack->setBpmLocked(lock);
- }
+ pTrack->setBpmLocked(lock);
}
}
@@ -1068,9 +962,7 @@ void WTrackMenu::slotColorPicked(mixxx::RgbColor::optional_t color) {
// TODO: This should be done in a thread for large selections
for (const auto& pTrack : trackPointers) {
- if (!pTrack->isBpmLocked()) {
- pTrack->setColor(color);
- }
+ pTrack->setColor(color);
}
hide();
@@ -1251,13 +1143,12 @@ void WTrackMenu::slotTagFetcherClosed() {
void WTrackMenu::slotShowTrackInfo() {
auto trackModel = getTrackModel();
- VERIFY_OR_DEBUG_ASSERT(trackModel) {
- return;
- }
- const QModelIndexList indices = getTrackIndices();
-
- if (indices.size() > 0) {
- showTrackInfo(indices[0]);
+ if (trackModel) {
+ const auto indices = getTrackIndices();
+ showTrackInfo(indices.at(0));
+ } else {
+ const auto trackPointers = getTrackPointers();
+ showTrackInfo(trackPointers.at(0));
}
}
@@ -1300,7 +1191,8 @@ void WTrackMenu::showTrackInfo(QModelIndex index) {
if (m_pTrackInfo.isNull()) {
// Give a NULL parent because otherwise it inherits our style which can
// make it unreadable. Bug #673411
- m_pTrackInfo.reset(new DlgTrackInfo(m_pConfig, nullptr));
+ bool trackNavigation = true;
+ m_pTrackInfo.reset(new DlgTrackInfo(m_pConfig, nullptr, trackNavigation));
connect(m_pTrackInfo.data(), &DlgTrackInfo::next, this, &WTrackMenu::slotNextTrackInfo);
connect(m_pTrackInfo.data(), &DlgTrackInfo::previous, this, &WTrackMenu::slotPrevTrackInfo);
@@ -1313,9 +1205,19 @@ void WTrackMenu::showTrackInfo(QModelIndex index) {
m_pTrackInfo->show();
}
+void WTrackMenu::showTrackInfo(TrackPointer pTrack) {
+ if (m_pTrackInfo.isNull()) {
+ m_pTrackInfo.reset(new DlgTrackInfo(m_pConfig, nullptr));
+ connect(m_pTrackInfo.data(), &DlgTrackInfo::showTagFetcher, this, &WTrackMenu::slotShowTrackInTagFetcher);
+ connect(m_pTrackInfo.data(), &DlgTrackInfo::finished, this, &WTrackMenu::slotTrackInfoClosed);
+ }
+ m_pTrackInfo->loadTrack(pTrack); // NULL is fine.
+ m_pTrackInfo->show();
+}
+
void WTrackMenu::slotNextDlgTagFetcher() {
auto trackModel = getTrackModel();
- VERIFY_OR_DEBUG_ASSERT(trackModel) {
+ if (!trackModel) {
return;
}
QModelIndex nextRow = currentTrackInfoIndex.sibling(
@@ -1330,7 +1232,7 @@ void WTrackMenu::slotNextDlgTagFetcher() {
void WTrackMenu::slotPrevDlgTagFetcher() {
auto trackModel = getTrackModel();
- VERIFY_OR_DEBUG_ASSERT(trackModel) {
+ if (!trackModel) {
return;
}
QModelIndex prevRow = currentTrackInfoIndex.sibling(
@@ -1354,9 +1256,14 @@ void WTrackMenu::showDlgTagFetcher(QModelIndex index) {
slotShowTrackInTagFetcher(pTrack);
}
+void WTrackMenu::showDlgTagFetcher(TrackPointer pTrack) {
+ slotShowTrackInTagFetcher(pTrack);
+}
+
void WTrackMenu::slotShowTrackInTagFetcher(TrackPointer pTrack) {
if (m_pTagFetcher.isNull()) {
- m_pTagFetcher.reset(new DlgTagFetcher(nullptr));
+ bool trackNavigation = getTrackModel() != nullptr;
+ m_pTagFetcher.reset(new DlgTagFetcher(nullptr, trackNavigation));
connect(m_pTagFetcher.data(), &DlgTagFetcher::next, this, &WTrackMenu::slotNextDlgTagFetcher);
connect(m_pTagFetcher.data(), &DlgTagFetcher::previous, this, &WTrackMenu::slotPrevDlgTagFetcher);
connect(m_pTagFetcher.data(), &DlgTagFetcher::finished, this, &WTrackMenu::slotTagFetcherClosed);
@@ -1368,13 +1275,17 @@ void WTrackMenu::slotShowTrackInTagFetcher(TrackPointer pTrack) {
}
void WTrackMenu::slotShowDlgTagFetcher() {
- const QModelIndexList indices = getTrackIndices();
- if (indices.empty()) {
- return;
- }
-
- if (indices.size() > 0) {
- showDlgTagFetcher(indices[0]);
+ auto trackModel = getTrackModel();
+ if (trackModel) {
+ const auto indices = getTrackIndices();
+ if (indices.size() > 0) {
+ showDlgTagFetcher(indices.at(0));
+ }
+ } else {
+ const auto trackPointers = getTrackPointers();
+ if (trackPointers.size() > 0) {
+ showDlgTagFetcher(trackPointers.at(0));
+ }
}
}
@@ -1394,9 +1305,6 @@ void WTrackMenu::slotAddToAutoDJReplace() {
void WTrackMenu::addToAutoDJ(PlaylistDAO::AutoDJSendLoc loc) {
const TrackIdList trackIds = getTrackIds();
if (trackIds.empty()) {
- return;
- }
- if (trackIds.isEmpty()) {
qWarning() << "No tracks selected for AutoDJ";
return;
}
diff --git a/src/widget/wtrackmenu.h b/src/widget/wtrackmenu.h
index e51791343d..33dc889870 100644
--- a/src/widget/wtrackmenu.h
+++ b/src/widget/wtrackmenu.h
@@ -34,7 +34,15 @@ class WTrackMenu : public QMenu {
HideUnhidePurge = 1 << 9,
FileBrowser = 1 << 10,
Properties = 1 << 11,
- IndependentFilters = AutoDJ | Playlist | Crate | FileBrowser
+ IndependentFilters = AutoDJ |
+ Playlist |
+ Crate |
+ Metadata |
+ Reset |
+ BPM |
+ Color |
+ FileBrowser |
+ Properties
};
Q_DECLARE_FLAGS(Filters, Filter)
@@ -134,7 +142,9 @@ class WTrackMenu : public QMenu {
void updateSelectionCrates(QWidget* pWidget);
void showTrackInfo(QModelIndex index);
+ void showTrackInfo(TrackPointer pTrack);
void showDlgTagFetcher(QModelIndex index);
+ void showDlgTagFetcher(TrackPointer pTrack);
void addToAutoDJ(PlaylistDAO::AutoDJSendLoc loc);
@@ -238,14 +248,6 @@ class WTrackMenu : public QMenu {
bool m_bPlaylistMenuLoaded;
bool m_bCrateMenuLoaded;
- // Column numbers
- int m_iCoverSourceColumn; // cover art source
- int m_iCoverTypeColumn; // cover art type
- int m_iCoverLocationColumn; // cover art location
- int m_iCoverHashColumn; // cover art hash
- int m_iCoverColumn; // visible cover art
- int m_iTrackLocationColumn;
-
// Filter available options
const Filters m_eFilters;
const Filters m_eIndependentFilters;
diff --git a/src/widget/wtrackproperty.cpp b/src/widget/wtrackproperty.cpp
index 588829dcbb..bd5ce3ccee 100644
--- a/src/widget/wtrackproperty.cpp
+++ b/src/widget/wtrackproperty.cpp
@@ -16,7 +16,13 @@ WTrackProperty::WTrackProperty(const char* group,
// Setup context menu
WTrackMenu::Filters flags = WTrackMenu::Filter::Playlist |
- WTrackMenu::Filter::Crate;
+ WTrackMenu::Filter::Crate |
+ WTrackMenu::Filter::Metadata |
+ WTrackMenu::Filter::Reset |
+ WTrackMenu::Filter::BPM |
+ WTrackMenu::Filter::Color |
+ WTrackMenu::Filter::FileBrowser |
+ WTrackMenu::Filter::Properties;
m_pMenu = new WTrackMenu(this, pConfig, pTrackCollectionManager, flags);
}