Skip to content

Commit

Permalink
(demo) add hotcue sort actions to track menu
Browse files Browse the repository at this point in the history
  • Loading branch information
ronso0 committed Jan 14, 2025
1 parent 8ebd86a commit 6fb10cb
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/widget/wtrackmenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,23 @@ void WTrackMenu::createActions() {

m_pClearAllMetadataAction = new QAction(tr("All"), m_pClearMetadataMenu);
connect(m_pClearAllMetadataAction, &QAction::triggered, this, &WTrackMenu::slotClearAllMetadata);

m_pSortHotcuesByPositionCompressAction = new QAction(
tr("Sort hotcues by position (compress)"), m_pClearMetadataMenu);
connect(m_pSortHotcuesByPositionCompressAction,
&QAction::triggered,
this,
[this]() {
slotSortHotcuesByPosition();
});
m_pSortHotcuesByPositionAction = new QAction(
tr("Sort hotcues by position (keep offsets)"), m_pClearMetadataMenu);
connect(m_pSortHotcuesByPositionAction,
&QAction::triggered,
this,
[this]() {
slotSortHotcuesByPosition(false);
});
}

if (featureIsEnabled(Feature::BPM)) {
Expand Down Expand Up @@ -563,6 +580,9 @@ void WTrackMenu::createActions() {
}

void WTrackMenu::setupActions() {
addAction(m_pSortHotcuesByPositionCompressAction);
addAction(m_pSortHotcuesByPositionAction);
addSeparator();
if (featureIsEnabled(Feature::SearchRelated)) {
addMenu(m_pSearchRelatedMenu);
}
Expand Down Expand Up @@ -686,6 +706,7 @@ void WTrackMenu::setupActions() {
m_pClearMetadataMenu->addAction(m_pClearReplayGainAction);
m_pClearMetadataMenu->addAction(m_pClearWaveformAction);
m_pClearMetadataMenu->addSeparator();
m_pClearMetadataMenu->addSeparator();
m_pClearMetadataMenu->addAction(m_pClearAllMetadataAction);
addMenu(m_pClearMetadataMenu);
}
Expand Down Expand Up @@ -2111,6 +2132,19 @@ class ResetOutroTrackPointerOperation : public mixxx::TrackPointerOperation {
}
};

class SortHotcuesByPositionTrackPointerOperation : public mixxx::TrackPointerOperation {
public:
explicit SortHotcuesByPositionTrackPointerOperation(bool compress = false)
: m_compress(compress) {
}

private:
void doApply(const TrackPointer& pTrack) const override {
pTrack->setHotcueIndicesSortedByPosition(m_compress);
}
bool m_compress;
};

} // anonymous namespace

void WTrackMenu::slotResetMainCue() {
Expand Down Expand Up @@ -2163,6 +2197,22 @@ void WTrackMenu::slotClearHotCues() {
&trackOperator);
}

void WTrackMenu::slotSortHotcuesByPosition(bool compress) {
QString progressLabelText;
if (compress) {
progressLabelText =
tr("Sorting hotcues of %n track(s) by position (compress)", "", getTrackCount());
} else {
progressLabelText =
tr("Sorting hotcues of %n track(s) by position", "", getTrackCount());
}
const auto trackOperator =
SortHotcuesByPositionTrackPointerOperation(compress);
applyTrackPointerOperation(
progressLabelText,
&trackOperator);
}

namespace {

class ResetKeysTrackPointerOperation : public mixxx::TrackPointerOperation {
Expand Down
5 changes: 5 additions & 0 deletions src/widget/wtrackmenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@ class WTrackMenu : public QMenu {
void slotScaleBpm(mixxx::Beats::BpmScale scale);
void slotUndoBeatsChange();

// Hotcues
void slotSortHotcuesByPosition(bool compress = false);

// Info and metadata
void slotUpdateReplayGainFromPregain();
void slotShowDlgTagFetcher();
Expand Down Expand Up @@ -365,6 +368,8 @@ class WTrackMenu : public QMenu {
QAction* m_pClearKeyAction{};
QAction* m_pClearReplayGainAction{};
QAction* m_pClearAllMetadataAction{};
QAction* m_pSortHotcuesByPositionAction{};
QAction* m_pSortHotcuesByPositionCompressAction{};

const UserSettingsPointer m_pConfig;
Library* const m_pLibrary;
Expand Down

0 comments on commit 6fb10cb

Please sign in to comment.