From 48bb4bd68ba99d8fb4070273d7fefe459e03a37f Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Tue, 18 May 2021 18:33:38 +0200 Subject: [PATCH 1/2] AnalyzerPlugin: Use class instead of simple struct A first step towards merging #3439. --- src/analyzer/analyzerbeats.cpp | 12 +++---- src/analyzer/analyzerkey.cpp | 10 +++--- src/analyzer/plugins/analyzerplugin.h | 43 ++++++++++++++++++------- src/preferences/dialog/dlgprefbeats.cpp | 12 +++---- src/preferences/dialog/dlgprefkey.cpp | 10 +++--- 5 files changed, 53 insertions(+), 34 deletions(-) diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp index 01591ea426b..4317d616bea 100644 --- a/src/analyzer/analyzerbeats.cpp +++ b/src/analyzer/analyzerbeats.cpp @@ -67,10 +67,10 @@ bool AnalyzerBeats::initialize(TrackPointer pTrack, int sampleRate, int totalSam const auto plugins = availablePlugins(); if (!plugins.isEmpty()) { - m_pluginId = defaultPlugin().id; + m_pluginId = defaultPlugin().id(); QString pluginId = m_bpmSettings.getBeatPluginId(); for (const auto& info : plugins) { - if (info.id == pluginId) { + if (info.id() == pluginId) { m_pluginId = pluginId; // configured Plug-In available break; } @@ -100,9 +100,9 @@ bool AnalyzerBeats::initialize(TrackPointer pTrack, int sampleRate, int totalSam DEBUG_ASSERT(!m_pPlugin); if (bShouldAnalyze) { - if (m_pluginId == mixxx::AnalyzerQueenMaryBeats::pluginInfo().id) { + if (m_pluginId == mixxx::AnalyzerQueenMaryBeats::pluginInfo().id()) { m_pPlugin = std::make_unique(); - } else if (m_pluginId == mixxx::AnalyzerSoundTouchBeats::pluginInfo().id) { + } else if (m_pluginId == mixxx::AnalyzerSoundTouchBeats::pluginInfo().id()) { m_pPlugin = std::make_unique(); } else { // This must not happen, because we have already verified above @@ -134,7 +134,7 @@ bool AnalyzerBeats::shouldAnalyze(TrackPointer pTrack) const { QString pluginID = m_bpmSettings.getBeatPluginId(); if (pluginID.isEmpty()) { - pluginID = defaultPlugin().id; + pluginID = defaultPlugin().id(); } // If the track already has a Beats object then we need to decide whether to @@ -159,7 +159,7 @@ bool AnalyzerBeats::shouldAnalyze(TrackPointer pTrack) const { } if (subVersion.isEmpty() && pBeats->findNextBeat(0) <= 0.0 && - m_pluginId != mixxx::AnalyzerSoundTouchBeats::pluginInfo().id) { + m_pluginId != mixxx::AnalyzerSoundTouchBeats::pluginInfo().id()) { // This happens if the beat grid was created from the metadata BPM value. qDebug() << "First beat is 0 for grid so analyzing track to find first beat."; return true; diff --git a/src/analyzer/analyzerkey.cpp b/src/analyzer/analyzerkey.cpp index a11f711525e..5408f14ea3f 100644 --- a/src/analyzer/analyzerkey.cpp +++ b/src/analyzer/analyzerkey.cpp @@ -57,10 +57,10 @@ bool AnalyzerKey::initialize(TrackPointer tio, int sampleRate, int totalSamples) const auto plugins = availablePlugins(); if (!plugins.isEmpty()) { - m_pluginId = defaultPlugin().id; + m_pluginId = defaultPlugin().id(); QString pluginId = m_keySettings.getKeyPluginId(); for (const auto& info : plugins) { - if (info.id == pluginId) { + if (info.id() == pluginId) { m_pluginId = pluginId; // configured Plug-In available break; } @@ -88,10 +88,10 @@ bool AnalyzerKey::initialize(TrackPointer tio, int sampleRate, int totalSamples) DEBUG_ASSERT(!m_pPlugin); if (bShouldAnalyze) { - if (m_pluginId == mixxx::AnalyzerQueenMaryKey::pluginInfo().id) { + if (m_pluginId == mixxx::AnalyzerQueenMaryKey::pluginInfo().id()) { m_pPlugin = std::make_unique(); #if defined __KEYFINDER__ - } else if (m_pluginId == mixxx::AnalyzerKeyFinder::pluginInfo().id) { + } else if (m_pluginId == mixxx::AnalyzerKeyFinder::pluginInfo().id()) { m_pPlugin = std::make_unique(); #endif } else { @@ -119,7 +119,7 @@ bool AnalyzerKey::shouldAnalyze(TrackPointer tio) const { bool bPreferencesFastAnalysisEnabled = m_keySettings.getFastAnalysis(); QString pluginID = m_keySettings.getKeyPluginId(); if (pluginID.isEmpty()) { - pluginID = defaultPlugin().id; + pluginID = defaultPlugin().id(); } const Keys keys(tio->getKeys()); diff --git a/src/analyzer/plugins/analyzerplugin.h b/src/analyzer/plugins/analyzerplugin.h index 03bb7ac2d6f..67fab6a2db1 100644 --- a/src/analyzer/plugins/analyzerplugin.h +++ b/src/analyzer/plugins/analyzerplugin.h @@ -8,20 +8,39 @@ namespace mixxx { -struct AnalyzerPluginInfo { +class AnalyzerPluginInfo { + public: AnalyzerPluginInfo(const QString& id, const QString& author, const QString& name, bool isConstantTempoSupported) - : id(id), - author(author), - name(name), - constantTempoSupported(isConstantTempoSupported) { + : m_id(id), + m_author(author), + m_name(name), + m_isConstantTempoSupported(isConstantTempoSupported) { + } + + QString id() const { + return m_id; + } + + QString author() const { + return m_author; } - QString id; - QString author; - QString name; - bool constantTempoSupported; + + QString name() const { + return m_name; + } + + bool isConstantTempoSupported() const { + return m_isConstantTempoSupported; + } + + private: + QString m_id; + QString m_author; + QString m_name; + bool m_isConstantTempoSupported; }; class AnalyzerPlugin { @@ -29,13 +48,13 @@ class AnalyzerPlugin { virtual ~AnalyzerPlugin() = default; virtual QString id() const { - return info().id; + return info().id(); } virtual QString author() const { - return info().author; + return info().author(); } virtual QString name() const { - return info().name; + return info().name(); } virtual AnalyzerPluginInfo info() const = 0; diff --git a/src/preferences/dialog/dlgprefbeats.cpp b/src/preferences/dialog/dlgprefbeats.cpp index 74f98175205..59445b83fcd 100644 --- a/src/preferences/dialog/dlgprefbeats.cpp +++ b/src/preferences/dialog/dlgprefbeats.cpp @@ -17,7 +17,7 @@ DlgPrefBeats::DlgPrefBeats(QWidget* parent, UserSettingsPointer pConfig) m_availablePlugins = AnalyzerBeats::availablePlugins(); for (const auto& info : qAsConst(m_availablePlugins)) { - comboBoxBeatPlugin->addItem(info.name, info.id); + comboBoxBeatPlugin->addItem(info.name(), info.id()); } loadSettings(); @@ -68,7 +68,7 @@ void DlgPrefBeats::loadSettings() { void DlgPrefBeats::slotResetToDefaults() { if (m_availablePlugins.size() > 0) { - m_selectedAnalyzerId = m_availablePlugins[0].id; + m_selectedAnalyzerId = m_availablePlugins[0].id(); } m_bAnalyzerEnabled = m_bpmSettings.getBpmDetectionEnabledDefault(); m_bFixedTempoEnabled = m_bpmSettings.getFixedTempoAssumptionDefault(); @@ -82,7 +82,7 @@ void DlgPrefBeats::pluginSelected(int i) { if (i == -1) { return; } - m_selectedAnalyzerId = m_availablePlugins[i].id; + m_selectedAnalyzerId = m_availablePlugins[i].id(); slotUpdate(); } @@ -113,10 +113,10 @@ void DlgPrefBeats::slotUpdate() { bool found = false; for (int i = 0; i < m_availablePlugins.size(); ++i) { const auto& info = m_availablePlugins.at(i); - if (info.id == m_selectedAnalyzerId) { + if (info.id() == m_selectedAnalyzerId) { found = true; comboBoxBeatPlugin->setCurrentIndex(i); - if (!m_availablePlugins[i].constantTempoSupported) { + if (!m_availablePlugins[i].isConstantTempoSupported()) { checkBoxFixedTempo->setEnabled(false); } break; @@ -124,7 +124,7 @@ void DlgPrefBeats::slotUpdate() { } if (!found) { comboBoxBeatPlugin->setCurrentIndex(0); - m_selectedAnalyzerId = m_availablePlugins[0].id; + m_selectedAnalyzerId = m_availablePlugins[0].id(); } } diff --git a/src/preferences/dialog/dlgprefkey.cpp b/src/preferences/dialog/dlgprefkey.cpp index 02bd789e665..78e8240a5c1 100644 --- a/src/preferences/dialog/dlgprefkey.cpp +++ b/src/preferences/dialog/dlgprefkey.cpp @@ -45,7 +45,7 @@ DlgPrefKey::DlgPrefKey(QWidget* parent, UserSettingsPointer pConfig) m_availablePlugins = AnalyzerKey::availablePlugins(); for (const auto& info : qAsConst(m_availablePlugins)) { - plugincombo->addItem(info.name, info.id); + plugincombo->addItem(info.name(), info.id()); } m_pKeyNotation = new ControlProxy(ConfigKey("[Library]", "key_notation"), this); @@ -142,7 +142,7 @@ void DlgPrefKey::slotResetToDefaults() { m_bFastAnalysisEnabled = m_keySettings.getFastAnalysisDefault(); m_bReanalyzeEnabled = m_keySettings.getReanalyzeWhenSettingsChangeDefault(); if (m_availablePlugins.size() > 0) { - m_selectedAnalyzerId = m_availablePlugins[0].id; + m_selectedAnalyzerId = m_availablePlugins[0].id(); } KeyUtils::KeyNotation notation_type; @@ -169,7 +169,7 @@ void DlgPrefKey::pluginSelected(int i) { if (i == -1) { return; } - m_selectedAnalyzerId = m_availablePlugins[i].id; + m_selectedAnalyzerId = m_availablePlugins[i].id(); slotUpdate(); } @@ -252,7 +252,7 @@ void DlgPrefKey::slotUpdate() { bool found = false; for (int i = 0; i < m_availablePlugins.size(); ++i) { const auto& info = m_availablePlugins.at(i); - if (info.id == m_selectedAnalyzerId) { + if (info.id() == m_selectedAnalyzerId) { plugincombo->setCurrentIndex(i); found = true; break; @@ -260,7 +260,7 @@ void DlgPrefKey::slotUpdate() { } if (!found) { plugincombo->setCurrentIndex(0); - m_selectedAnalyzerId = m_availablePlugins[0].id; + m_selectedAnalyzerId = m_availablePlugins[0].id(); } } } From a75fe037c42e4a1fb6b1d99b71b8d78e4a94441f Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Tue, 18 May 2021 21:43:43 +0200 Subject: [PATCH 2/2] AnalyzerPluginInfo: Return const QString& --- src/analyzer/plugins/analyzerplugin.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/analyzer/plugins/analyzerplugin.h b/src/analyzer/plugins/analyzerplugin.h index 67fab6a2db1..18298a98a85 100644 --- a/src/analyzer/plugins/analyzerplugin.h +++ b/src/analyzer/plugins/analyzerplugin.h @@ -20,15 +20,15 @@ class AnalyzerPluginInfo { m_isConstantTempoSupported(isConstantTempoSupported) { } - QString id() const { + const QString& id() const { return m_id; } - QString author() const { + const QString& author() const { return m_author; } - QString name() const { + const QString& name() const { return m_name; }