diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index df73f237c6b..0158b3b3f74 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -90,8 +90,8 @@ public: ~AutotestPluginPrivate() override; AutotestPlugin *q = nullptr; + TestFrameworkManager *m_frameworkManager = nullptr; - TestSettingsPage *m_testSettingPage = nullptr; TestNavigationWidgetFactory *m_navigationWidgetFactory = nullptr; TestResultsPane *m_resultsPane = nullptr; QMap m_runconfigCache; @@ -101,30 +101,31 @@ public: void onRunSelectedTriggered(); void onRunFileTriggered(); void onRunUnderCursorTriggered(TestRunMode mode); + + TestSettings m_settings; + TestSettingsPage m_testSettingPage{&m_settings}; }; -static AutotestPlugin *s_instance = nullptr; +static AutotestPluginPrivate *dd = nullptr; static QHash s_projectSettings; AutotestPlugin::AutotestPlugin() - : m_settings(new TestSettings) { // needed to be used in QueuedConnection connects qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); - - s_instance = this; } AutotestPlugin::~AutotestPlugin() { - delete d; + delete dd; } AutotestPluginPrivate::AutotestPluginPrivate(AutotestPlugin *parent) : q(parent) { + dd = this; // Needed as the code below access it via the static plugin interface m_frameworkManager = TestFrameworkManager::instance(); initializeMenuEntries(); m_frameworkManager->registerTestFramework(new QtTestFramework); @@ -133,7 +134,6 @@ AutotestPluginPrivate::AutotestPluginPrivate(AutotestPlugin *parent) m_frameworkManager->registerTestFramework(new BoostTestFramework); m_frameworkManager->synchronizeSettings(ICore::settings()); - m_testSettingPage = new TestSettingsPage(q->settings()); m_navigationWidgetFactory = new TestNavigationWidgetFactory; m_resultsPane = TestResultsPane::instance(); @@ -146,7 +146,7 @@ AutotestPluginPrivate::AutotestPluginPrivate(AutotestPlugin *parent) }); ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); - m_frameworkManager->activateFrameworksFromSettings(q->settings()); + m_frameworkManager->activateFrameworksFromSettings(&m_settings); TestTreeModel::instance()->synchronizeTestFrameworks(); connect(ProjectExplorer::SessionManager::instance(), @@ -160,13 +160,12 @@ AutotestPluginPrivate::~AutotestPluginPrivate() { delete m_navigationWidgetFactory; delete m_resultsPane; - delete m_testSettingPage; delete m_frameworkManager; } -QSharedPointer AutotestPlugin::settings() +TestSettings *AutotestPlugin::settings() { - return s_instance->m_settings; + return &dd->m_settings; } TestProjectSettings *AutotestPlugin::projectSettings(ProjectExplorer::Project *project) @@ -247,7 +246,7 @@ bool AutotestPlugin::initialize(const QStringList &arguments, QString *errorStri Q_UNUSED(arguments) Q_UNUSED(errorString) - d = new AutotestPluginPrivate(this); + dd = new AutotestPluginPrivate(this); return true; } @@ -263,7 +262,7 @@ void AutotestPlugin::extensionsInitialized() Command *command = ActionManager::registerAction(action, Constants::ACTION_RUN_UCURSOR); connect(action, &QAction::triggered, - std::bind(&AutotestPluginPrivate::onRunUnderCursorTriggered, d, TestRunMode::Run)); + std::bind(&AutotestPluginPrivate::onRunUnderCursorTriggered, dd, TestRunMode::Run)); contextMenu->addSeparator(); contextMenu->addAction(command); @@ -273,7 +272,7 @@ void AutotestPlugin::extensionsInitialized() command = ActionManager::registerAction(action, Constants::ACTION_RUN_DBG_UCURSOR); connect(action, &QAction::triggered, - std::bind(&AutotestPluginPrivate::onRunUnderCursorTriggered, d, TestRunMode::Debug)); + std::bind(&AutotestPluginPrivate::onRunUnderCursorTriggered, dd, TestRunMode::Debug)); contextMenu->addAction(command); contextMenu->addSeparator(); } @@ -392,25 +391,25 @@ void AutotestPlugin::updateMenuItemsEnabledState() void AutotestPlugin::cacheRunConfigChoice(const QString &buildTargetKey, const ChoicePair &choice) { - if (s_instance) - s_instance->d->m_runconfigCache.insert(buildTargetKey, choice); + if (dd) + dd->m_runconfigCache.insert(buildTargetKey, choice); } ChoicePair AutotestPlugin::cachedChoiceFor(const QString &buildTargetKey) { - return s_instance ? s_instance->d->m_runconfigCache.value(buildTargetKey) : ChoicePair(); + return dd ? dd->m_runconfigCache.value(buildTargetKey) : ChoicePair(); } void AutotestPlugin::clearChoiceCache() { - if (s_instance) - s_instance->d->m_runconfigCache.clear(); + if (dd) + dd->m_runconfigCache.clear(); } void AutotestPlugin::popupResultsPane() { - if (s_instance) - s_instance->d->m_resultsPane->popup(Core::IOutputPane::NoModeSwitch); + if (dd) + dd->m_resultsPane->popup(Core::IOutputPane::NoModeSwitch); } QVector AutotestPlugin::createTestObjects() const diff --git a/src/plugins/autotest/autotestplugin.h b/src/plugins/autotest/autotestplugin.h index b34fd95c361..c30db79e12c 100644 --- a/src/plugins/autotest/autotestplugin.h +++ b/src/plugins/autotest/autotestplugin.h @@ -29,8 +29,6 @@ #include -#include - namespace ProjectExplorer { class Project; class RunConfiguration; @@ -65,7 +63,7 @@ public: void extensionsInitialized() override; ShutdownFlag aboutToShutdown() override; - static QSharedPointer settings(); + static TestSettings *settings(); static TestProjectSettings *projectSettings(ProjectExplorer::Project *project); static void updateMenuItemsEnabledState(); static void cacheRunConfigChoice(const QString &buildTargetKey, const ChoicePair &choice); @@ -75,8 +73,6 @@ public: private: QVector createTestObjects() const override; - class AutotestPluginPrivate *d = nullptr; - const QSharedPointer m_settings; }; } // namespace Internal diff --git a/src/plugins/autotest/testframeworkmanager.cpp b/src/plugins/autotest/testframeworkmanager.cpp index 43eb59d8476..6a5b48d185f 100644 --- a/src/plugins/autotest/testframeworkmanager.cpp +++ b/src/plugins/autotest/testframeworkmanager.cpp @@ -91,7 +91,7 @@ bool TestFrameworkManager::registerTestFramework(ITestFramework *framework) return true; } -void TestFrameworkManager::activateFrameworksFromSettings(QSharedPointer settings) +void TestFrameworkManager::activateFrameworksFromSettings(const Internal::TestSettings *settings) { FrameworkIterator it = m_registeredFrameworks.begin(); FrameworkIterator end = m_registeredFrameworks.end(); diff --git a/src/plugins/autotest/testframeworkmanager.h b/src/plugins/autotest/testframeworkmanager.h index fd0c4bea470..f983a6bb54d 100644 --- a/src/plugins/autotest/testframeworkmanager.h +++ b/src/plugins/autotest/testframeworkmanager.h @@ -57,7 +57,7 @@ public: virtual ~TestFrameworkManager(); bool registerTestFramework(ITestFramework *framework); - void activateFrameworksFromSettings(QSharedPointer settings); + void activateFrameworksFromSettings(const Internal::TestSettings *settings); QString frameworkNameForId(const Core::Id &id) const; QList registeredFrameworkIds() const; QList sortedRegisteredFrameworkIds() const; diff --git a/src/plugins/autotest/testsettingspage.cpp b/src/plugins/autotest/testsettingspage.cpp index 1f0ddca7c5f..4fdfbdf5d3a 100644 --- a/src/plugins/autotest/testsettingspage.cpp +++ b/src/plugins/autotest/testsettingspage.cpp @@ -140,7 +140,7 @@ void TestSettingsWidget::onFrameworkItemChanged() m_ui.frameworksWarn->setVisible(true); } -TestSettingsPage::TestSettingsPage(const QSharedPointer &settings) +TestSettingsPage::TestSettingsPage(TestSettings *settings) : m_settings(settings) { setId("A.AutoTest.0.General"); diff --git a/src/plugins/autotest/testsettingspage.h b/src/plugins/autotest/testsettingspage.h index a1005004769..8834511313c 100644 --- a/src/plugins/autotest/testsettingspage.h +++ b/src/plugins/autotest/testsettingspage.h @@ -57,14 +57,14 @@ class TestSettingsPage : public Core::IOptionsPage { Q_OBJECT public: - explicit TestSettingsPage(const QSharedPointer &settings); + explicit TestSettingsPage(TestSettings *settings); QWidget *widget() override; void apply() override; void finish() override { } private: - QSharedPointer m_settings; + TestSettings *m_settings; QPointer m_widget; };