From f1f4df29b56d1a1dd7ed7bd2c98cfb491f4e006f Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 14 Nov 2023 18:00:23 +0100 Subject: [PATCH] Autotest: Use new construction pattern for project panel factory Change-Id: I09abb1d5dbb07a700053077b03e65a3dce4b3f1f Reviewed-by: Christian Stenger --- src/plugins/autotest/autotestplugin.cpp | 10 +--- .../autotest/projectsettingswidget.cpp | 55 ++++++++++++++++--- src/plugins/autotest/projectsettingswidget.h | 44 +-------------- 3 files changed, 51 insertions(+), 58 deletions(-) diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index 7a1da0edc22..c9b2372b0d4 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -45,7 +45,6 @@ #include #include #include -#include #include #include @@ -138,14 +137,7 @@ AutotestPluginPrivate::AutotestPluginPrivate() m_resultsPane = TestResultsPane::instance(); - auto panelFactory = new ProjectExplorer::ProjectPanelFactory(); - panelFactory->setPriority(666); -// panelFactory->setIcon(); // TODO ? - panelFactory->setDisplayName(Tr::tr("Testing")); - panelFactory->setCreateWidgetFunction([](ProjectExplorer::Project *project) { - return new ProjectTestSettingsWidget(project); - }); - ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); + setupAutotestProjectPanel(); TestFrameworkManager::activateFrameworksAndToolsFromSettings(); m_testTreeModel.synchronizeTestFrameworks(); diff --git a/src/plugins/autotest/projectsettingswidget.cpp b/src/plugins/autotest/projectsettingswidget.cpp index 53870990b5d..84b3b612f64 100644 --- a/src/plugins/autotest/projectsettingswidget.cpp +++ b/src/plugins/autotest/projectsettingswidget.cpp @@ -9,25 +9,45 @@ #include "testprojectsettings.h" #include "testtreemodel.h" +#include +#include + #include #include #include #include +#include #include -namespace Autotest { -namespace Internal { +using namespace ProjectExplorer; + +namespace Autotest::Internal { enum ItemDataRole { BaseIdRole = Qt::UserRole + 1, BaseTypeRole }; -ProjectTestSettingsWidget::ProjectTestSettingsWidget(ProjectExplorer::Project *project, - QWidget *parent) - : ProjectExplorer::ProjectSettingsWidget(parent) - , m_projectSettings(AutotestPlugin::projectSettings(project)) +class ProjectTestSettingsWidget : public ProjectSettingsWidget +{ +public: + explicit ProjectTestSettingsWidget(Project *project); + +private: + void populateFrameworks(const QHash &frameworks, + const QHash &testTools); + void onActiveFrameworkChanged(QTreeWidgetItem *item, int column); + TestProjectSettings *m_projectSettings; + QComboBox *m_useGlobalSettings = nullptr; + QTreeWidget *m_activeFrameworks = nullptr; + QComboBox *m_runAfterBuild = nullptr; + QTimer m_syncTimer; + int m_syncType = 0; +}; + +ProjectTestSettingsWidget::ProjectTestSettingsWidget(Project *project) + : m_projectSettings(AutotestPlugin::projectSettings(project)) { setGlobalSettingsId(Constants::AUTOTEST_SETTINGS_ID); @@ -131,5 +151,24 @@ void ProjectTestSettingsWidget::onActiveFrameworkChanged(QTreeWidgetItem *item, m_syncType |= type; } -} // namespace Internal -} // namespace Autotest +class AutotestProjectPanelFactory final : public ProjectPanelFactory +{ +public: + AutotestProjectPanelFactory() + { + setPriority(666); + // setIcon(); // TODO ? + setDisplayName(Tr::tr("Testing")); + setCreateWidgetFunction([](Project *project) { + return new ProjectTestSettingsWidget(project); + }); + ProjectPanelFactory::registerFactory(this); + } +}; + +void setupAutotestProjectPanel() +{ + static AutotestProjectPanelFactory theAutotestProjectPanelFactory; +} + +} // Autotest::Internal diff --git a/src/plugins/autotest/projectsettingswidget.h b/src/plugins/autotest/projectsettingswidget.h index 92dc228b983..87669b766ab 100644 --- a/src/plugins/autotest/projectsettingswidget.h +++ b/src/plugins/autotest/projectsettingswidget.h @@ -3,46 +3,8 @@ #pragma once -#include +namespace Autotest::Internal { -#include -#include +void setupAutotestProjectPanel(); -QT_BEGIN_NAMESPACE -class QComboBox; -class QTreeWidget; -class QTreeWidgetItem; -QT_END_NAMESPACE - -namespace ProjectExplorer { class Project; } - -namespace Autotest { - -class ITestFramework; -class ITestTool; - -namespace Internal { - -class TestProjectSettings; - -class ProjectTestSettingsWidget : public ProjectExplorer::ProjectSettingsWidget -{ - Q_OBJECT -public: - explicit ProjectTestSettingsWidget(ProjectExplorer::Project *project, - QWidget *parent = nullptr); - -private: - void populateFrameworks(const QHash &frameworks, - const QHash &testTools); - void onActiveFrameworkChanged(QTreeWidgetItem *item, int column); - TestProjectSettings *m_projectSettings; - QComboBox *m_useGlobalSettings = nullptr; - QTreeWidget *m_activeFrameworks = nullptr; - QComboBox *m_runAfterBuild = nullptr; - QTimer m_syncTimer; - int m_syncType = 0; -}; - -} // namespace Internal -} // namespace Autotest +} // Autotest::Internal