diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index d2f2d33d228..df153e1503c 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -110,11 +109,8 @@ void AxivionPlugin::initialize() { dd = new AxivionPluginPrivate; - auto panelFactory = new ProjectExplorer::ProjectPanelFactory; - panelFactory->setPriority(250); - panelFactory->setDisplayName(Tr::tr("Axivion")); - panelFactory->setCreateWidgetFunction(&AxivionProjectSettings::createSettingsWidget); - ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); + AxivionProjectSettings::setupProjectPanel(); + connect(ProjectExplorer::ProjectManager::instance(), &ProjectExplorer::ProjectManager::startupProjectChanged, dd, &AxivionPluginPrivate::onStartupProjectChanged); diff --git a/src/plugins/axivion/axivionprojectsettings.cpp b/src/plugins/axivion/axivionprojectsettings.cpp index d92a601435d..659933c3bf0 100644 --- a/src/plugins/axivion/axivionprojectsettings.cpp +++ b/src/plugins/axivion/axivionprojectsettings.cpp @@ -10,6 +10,7 @@ #include "axiviontr.h" #include +#include #include #include @@ -248,9 +249,23 @@ void AxivionProjectSettingsWidget::updateEnabledStates() } } -ProjectSettingsWidget *AxivionProjectSettings::createSettingsWidget(ProjectExplorer::Project *project) +class AxivionProjectPanelFactory : public ProjectExplorer::ProjectPanelFactory { - return new AxivionProjectSettingsWidget(project); +public: + AxivionProjectPanelFactory() + { + setPriority(250); + setDisplayName(Tr::tr("Axivion")); + setCreateWidgetFunction([](ProjectExplorer::Project *project) { + return new AxivionProjectSettingsWidget(project); + }); + ProjectExplorer::ProjectPanelFactory::registerFactory(this); + } +}; + +void AxivionProjectSettings::setupProjectPanel() +{ + static AxivionProjectPanelFactory theAxivionProjectPanelFactory; } } // Axivion::Internal diff --git a/src/plugins/axivion/axivionprojectsettings.h b/src/plugins/axivion/axivionprojectsettings.h index d11b001d9f3..7cbdfbbf472 100644 --- a/src/plugins/axivion/axivionprojectsettings.h +++ b/src/plugins/axivion/axivionprojectsettings.h @@ -5,10 +5,7 @@ #include -namespace ProjectExplorer { -class Project; -class ProjectSettingsWidget; -} +namespace ProjectExplorer { class Project; } namespace Axivion::Internal { @@ -22,7 +19,7 @@ public: static AxivionProjectSettings *projectSettings(ProjectExplorer::Project *project); static void destroyProjectSettings(); - static ProjectExplorer::ProjectSettingsWidget *createSettingsWidget(ProjectExplorer::Project *project); + static void setupProjectPanel(); private: void load();