Skip to content

Commit 7e1658b

Browse files
committed
Analysis: add Stop to sidebar menu
1 parent c4a91b2 commit 7e1658b

3 files changed

Lines changed: 33 additions & 0 deletions

File tree

src/library/analysis/analysisfeature.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "library/analysis/analysisfeature.h"
22

33
#include <QList>
4+
#include <QMenu>
45
#include <QtDebug>
56

67
#include "analyzer/analyzerscheduledtrack.h"
@@ -13,6 +14,7 @@
1314
#include "util/dnd.h"
1415
#include "util/logger.h"
1516
#include "widget/wlibrary.h"
17+
#include "widget/wlibrarysidebar.h"
1618

1719
namespace {
1820

@@ -118,9 +120,20 @@ void AnalysisFeature::bindLibraryWidget(WLibrary* libraryWidget,
118120
// Let the DlgAnalysis know whether or not analysis is active.
119121
emit analysisActive(static_cast<bool>(m_pTrackAnalysisScheduler));
120122

123+
m_pStopAction = make_parented<QAction>(tr("Stop Analysis"), this);
124+
connect(m_pStopAction.get(),
125+
&QAction::triggered,
126+
m_pAnalysisView,
127+
&DlgAnalysis::stopAnalysis);
128+
121129
libraryWidget->registerView(kViewName, m_pAnalysisView);
122130
}
123131

132+
void AnalysisFeature::bindSidebarWidget(WLibrarySidebar* pSidebarWidget) {
133+
// store the sidebar widget pointer for later use in onRightClickChild
134+
m_pSidebarWidget = pSidebarWidget;
135+
}
136+
124137
TreeItemModel* AnalysisFeature::sidebarModel() const {
125138
return m_pSidebarModel;
126139
}
@@ -140,6 +153,14 @@ void AnalysisFeature::activate() {
140153
emit enableCoverArtDisplay(true);
141154
}
142155

156+
void AnalysisFeature::onRightClick(const QPoint& globalPos) {
157+
if (m_pAnalysisView->isAnalysisActive()) {
158+
QMenu menu(m_pSidebarWidget);
159+
menu.addAction(m_pStopAction.get());
160+
menu.exec(globalPos);
161+
}
162+
}
163+
143164
void AnalysisFeature::analyzeTracks(const QList<AnalyzerScheduledTrack>& tracks) {
144165
if (!m_pTrackAnalysisScheduler) {
145166
const int numAnalyzerThreads = numberOfAnalyzerThreads();

src/library/analysis/analysisfeature.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <QList>
44
#include <QObject>
5+
#include <QPointer>
56
#include <QUrl>
67
#include <QVariant>
78

@@ -12,6 +13,7 @@
1213
#include "util/parented_ptr.h"
1314

1415
class DlgAnalysis;
16+
class WLibrarySidebar;
1517

1618
class AnalysisFeature : public LibraryFeature {
1719
Q_OBJECT
@@ -28,6 +30,7 @@ class AnalysisFeature : public LibraryFeature {
2830
bool dragMoveAccept(const QList<QUrl>& urls) override;
2931
void bindLibraryWidget(WLibrary* libraryWidget,
3032
KeyboardEventFilter* keyboard) override;
33+
void bindSidebarWidget(WLibrarySidebar* pSidebarWidget) override;
3134

3235
TreeItemModel* sidebarModel() const override;
3336
void refreshLibraryModels();
@@ -38,6 +41,8 @@ class AnalysisFeature : public LibraryFeature {
3841

3942
public slots:
4043
void activate() override;
44+
void onRightClick(const QPoint& globalPos) override;
45+
4146
void analyzeTracks(const QList<AnalyzerScheduledTrack>& tracks);
4247

4348
void suspendAnalysis();
@@ -62,6 +67,9 @@ class AnalysisFeature : public LibraryFeature {
6267

6368
TrackAnalysisScheduler::Pointer m_pTrackAnalysisScheduler;
6469

70+
QPointer<WLibrarySidebar> m_pSidebarWidget;
71+
parented_ptr<QAction> m_pStopAction;
72+
6573
parented_ptr<TreeItemModel> m_pSidebarModel;
6674
DlgAnalysis* m_pAnalysisView;
6775

src/library/analysis/dlganalysis.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class DlgAnalysis : public QWidget, public Ui::DlgAnalysis, public virtual Libra
3232
void saveCurrentViewState() override;
3333
bool restoreCurrentViewState() override;
3434

35+
bool isAnalysisActive() {
36+
return m_bAnalysisActive;
37+
};
38+
3539
public slots:
3640
void tableSelectionChanged(const QItemSelection& selected,
3741
const QItemSelection& deselected);

0 commit comments

Comments
 (0)