Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/library/analysis/analysisfeature.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "library/analysis/analysisfeature.h"

#include <QList>
#include <QMenu>
#include <QtDebug>

#include "analyzer/analyzerscheduledtrack.h"
Expand All @@ -13,6 +14,7 @@
#include "util/dnd.h"
#include "util/logger.h"
#include "widget/wlibrary.h"
#include "widget/wlibrarysidebar.h"

namespace {

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

m_pStopAnalysisAction = make_parented<QAction>(tr("Stop Analysis"), this);
connect(m_pStopAnalysisAction.get(),
&QAction::triggered,
m_pAnalysisView,
&DlgAnalysis::stopAnalysis);

libraryWidget->registerView(kViewName, m_pAnalysisView);
}

void AnalysisFeature::bindSidebarWidget(WLibrarySidebar* pSidebarWidget) {
// store the sidebar widget pointer for later use in onRightClickChild
m_pSidebarWidget = pSidebarWidget;
}

TreeItemModel* AnalysisFeature::sidebarModel() const {
return m_pSidebarModel;
}
Expand All @@ -140,6 +153,13 @@ void AnalysisFeature::activate() {
emit enableCoverArtDisplay(true);
}

void AnalysisFeature::onRightClick(const QPoint& globalPos) {
QMenu menu(m_pSidebarWidget);
menu.addAction(m_pStopAnalysisAction.get());
m_pStopAnalysisAction->setEnabled(m_pAnalysisView->isAnalysisActive());
menu.exec(globalPos);
}

void AnalysisFeature::analyzeTracks(const QList<AnalyzerScheduledTrack>& tracks) {
if (!m_pTrackAnalysisScheduler) {
const int numAnalyzerThreads = numberOfAnalyzerThreads();
Expand Down
8 changes: 8 additions & 0 deletions src/library/analysis/analysisfeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include <QList>
#include <QObject>
#include <QPointer>
#include <QUrl>
#include <QVariant>

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

class DlgAnalysis;
class WLibrarySidebar;

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

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

public slots:
void activate() override;
void onRightClick(const QPoint& globalPos) override;

void analyzeTracks(const QList<AnalyzerScheduledTrack>& tracks);

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

TrackAnalysisScheduler::Pointer m_pTrackAnalysisScheduler;

QPointer<WLibrarySidebar> m_pSidebarWidget;
parented_ptr<QAction> m_pStopAnalysisAction;

parented_ptr<TreeItemModel> m_pSidebarModel;
DlgAnalysis* m_pAnalysisView;

Expand Down
4 changes: 4 additions & 0 deletions src/library/analysis/dlganalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ class DlgAnalysis : public QWidget, public Ui::DlgAnalysis, public virtual Libra
void saveCurrentViewState() override;
bool restoreCurrentViewState() override;

bool isAnalysisActive() {
return m_bAnalysisActive;
};

public slots:
void tableSelectionChanged(const QItemSelection& selected,
const QItemSelection& deselected);
Expand Down
Loading