From 9567f82b75d783f124be10976af82cf282914a79 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 13 Jul 2023 18:50:58 +0200 Subject: [PATCH] WebAssembly: Use the most recent settings access pattern Includes delaying construction until its first actual use. Change-Id: Ide0f7a12250c2597f45993d6ef0fb604c974a763 Reviewed-by: Alessandro Portale --- src/plugins/webassembly/webassemblyplugin.cpp | 1 - .../webassembly/webassemblysettings.cpp | 36 +++++++++++-------- src/plugins/webassembly/webassemblysettings.h | 18 +++++----- .../webassembly/webassemblytoolchain.cpp | 4 +-- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/plugins/webassembly/webassemblyplugin.cpp b/src/plugins/webassembly/webassemblyplugin.cpp index 28227884da7..87b4283e291 100644 --- a/src/plugins/webassembly/webassemblyplugin.cpp +++ b/src/plugins/webassembly/webassemblyplugin.cpp @@ -39,7 +39,6 @@ public: WebAssemblyQtVersionFactory qtVersionFactory; EmrunRunConfigurationFactory emrunRunConfigurationFactory; EmrunRunWorkerFactory emrunRunWorkerFactory; - WebAssemblySettings settings; }; static WebAssemblyPluginPrivate *dd = nullptr; diff --git a/src/plugins/webassembly/webassemblysettings.cpp b/src/plugins/webassembly/webassemblysettings.cpp index b49c1628654..7c385e3851f 100644 --- a/src/plugins/webassembly/webassemblysettings.cpp +++ b/src/plugins/webassembly/webassemblysettings.cpp @@ -10,6 +10,7 @@ #include "webassemblytr.h" #include +#include #include #include @@ -24,13 +25,11 @@ using namespace Utils; -namespace WebAssembly { -namespace Internal { +namespace WebAssembly::Internal { -static WebAssemblySettings *theSettings = nullptr; - -WebAssemblySettings *WebAssemblySettings::instance() +WebAssemblySettings &settings() { + static WebAssemblySettings theSettings; return theSettings; } @@ -52,15 +51,9 @@ static QString environmentDisplay(const FilePath &sdkRoot) WebAssemblySettings::WebAssemblySettings() { - theSettings = this; - setSettingsGroup("WebAssembly"); + setAutoApply(false); - setId(Id(Constants::SETTINGS_ID)); - setDisplayName(Tr::tr("WebAssembly")); - setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY); - - registerAspect(&emSdk); emSdk.setSettingsKey("EmSdk"); emSdk.setExpectedKind(Utils::PathChooser::ExistingDirectory); emSdk.setDefaultValue(FileUtils::homePath()); @@ -164,5 +157,20 @@ void WebAssemblySettings::updateStatus() m_qtVersionDisplay->setVisible(WebAssemblyQtVersion::isUnsupportedQtVersionInstalled()); } -} // Internal -} // WebAssembly +// WebAssemblySettingsPage + +class WebAssemblySettingsPage final : public Core::IOptionsPage +{ +public: + WebAssemblySettingsPage() + { + setId(Id(Constants::SETTINGS_ID)); + setDisplayName(Tr::tr("WebAssembly")); + setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY); + setSettingsProvider([] { return &settings(); }); + } +}; + +const WebAssemblySettingsPage settingsPage; + +} // WebAssembly::Internal diff --git a/src/plugins/webassembly/webassemblysettings.h b/src/plugins/webassembly/webassemblysettings.h index c9e207c409c..e607e57d8f6 100644 --- a/src/plugins/webassembly/webassemblysettings.h +++ b/src/plugins/webassembly/webassemblysettings.h @@ -3,23 +3,22 @@ #pragma once -#include +#include QT_BEGIN_NAMESPACE class QTextBrowser; QT_END_NAMESPACE -namespace WebAssembly { -namespace Internal { +namespace Utils { class InfoLabel; } -class WebAssemblySettings final : public Core::PagedSettings +namespace WebAssembly::Internal { + +class WebAssemblySettings final : public Utils::AspectContainer { public: WebAssemblySettings(); - static WebAssemblySettings *instance(); - - Utils::FilePathAspect emSdk; + Utils::FilePathAspect emSdk{this}; private: QWidget *m_emSdkEnvGroupBox = nullptr; @@ -30,5 +29,6 @@ private: void updateStatus(); }; -} // namespace Internal -} // namespace WebAssmbly +WebAssemblySettings &settings(); + +} // WebAssmbly::Internal diff --git a/src/plugins/webassembly/webassemblytoolchain.cpp b/src/plugins/webassembly/webassemblytoolchain.cpp index c554ee65cd5..ef9d449bdf7 100644 --- a/src/plugins/webassembly/webassemblytoolchain.cpp +++ b/src/plugins/webassembly/webassemblytoolchain.cpp @@ -51,7 +51,7 @@ static void addRegisteredMinGWToEnvironment(Environment &env) void WebAssemblyToolChain::addToEnvironment(Environment &env) const { - const FilePath emSdk = WebAssemblySettings::instance()->emSdk(); + const FilePath emSdk = settings().emSdk(); WebAssemblyEmSdk::addToEnvironment(emSdk, env); if (env.osType() == OsTypeWindows) addRegisteredMinGWToEnvironment(env); @@ -95,7 +95,7 @@ const QVersionNumber &WebAssemblyToolChain::minimumSupportedEmSdkVersion() static Toolchains doAutoDetect(const ToolchainDetector &detector) { - const FilePath sdk = WebAssemblySettings::instance()->emSdk(); + const FilePath sdk = settings().emSdk(); if (!WebAssemblyEmSdk::isValid(sdk)) return {};