diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index 56d945f04b7..1b71ff5e3f2 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -11,7 +11,6 @@ #include "mesontoolkitaspect.h" #include "ninjabuildstep.h" #include "ninjatoolkitaspect.h" -#include "settings.h" #include "toolssettingsaccessor.h" #include "toolssettingspage.h" @@ -45,7 +44,6 @@ public: ~MesonProjectPluginPrivate() {} private: - Settings m_settings; ToolsSettingsPage m_toolslSettingsPage; ToolsSettingsAccessor m_toolsSettings; MesonToolKitAspect m_mesonKitAspect; diff --git a/src/plugins/mesonprojectmanager/settings.cpp b/src/plugins/mesonprojectmanager/settings.cpp index e1fe290bc5c..b233ae3c48b 100644 --- a/src/plugins/mesonprojectmanager/settings.cpp +++ b/src/plugins/mesonprojectmanager/settings.cpp @@ -6,29 +6,23 @@ #include "mesonpluginconstants.h" #include "mesonprojectmanagertr.h" +#include + #include namespace MesonProjectManager::Internal { -static Settings *s_instance; - -Settings &settings() +MesonSettings &settings() { - return *s_instance; + static MesonSettings theSettings; + return theSettings; } -Settings::Settings() +MesonSettings::MesonSettings() { - s_instance = this; - + setAutoApply(false); setSettingsGroup("MesonProjectManager"); - setId("A.MesonProjectManager.SettingsPage.General"); - setDisplayName(Tr::tr("General")); - setDisplayCategory("Meson"); - setCategory(Constants::SettingsPage::CATEGORY); - setCategoryIconPath(Constants::Icons::MESON_BW); - autorunMeson.setSettingsKey("meson.autorun"); autorunMeson.setLabelText(Tr::tr("Autorun Meson")); autorunMeson.setToolTip(Tr::tr("Automatically run Meson when needed.")); @@ -49,4 +43,20 @@ Settings::Settings() readSettings(); } +class MesonSettingsPage final : public Core::IOptionsPage +{ +public: + MesonSettingsPage() + { + setId("A.MesonProjectManager.SettingsPage.General"); + setDisplayName(Tr::tr("General")); + setDisplayCategory("Meson"); + setCategory(Constants::SettingsPage::CATEGORY); + setCategoryIconPath(Constants::Icons::MESON_BW); + setSettingsProvider([] { return &settings(); }); + } +}; + +const MesonSettingsPage settingsPage; + } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/settings.h b/src/plugins/mesonprojectmanager/settings.h index 34c2e9e97d9..8ddc5f53ece 100644 --- a/src/plugins/mesonprojectmanager/settings.h +++ b/src/plugins/mesonprojectmanager/settings.h @@ -3,21 +3,19 @@ #pragma once -#include - #include namespace MesonProjectManager::Internal { -class Settings : public Core::PagedSettings +class MesonSettings final : public Utils::AspectContainer { public: - Settings(); + MesonSettings(); Utils::BoolAspect autorunMeson{this}; Utils::BoolAspect verboseNinja{this}; }; -Settings &settings(); +MesonSettings &settings(); } // MesonProjectManager::Internal