diff options
author | hjk <hjk@qt.io> | 2023-01-20 09:10:23 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-01-23 14:49:45 +0000 |
commit | 87c3f08e52005f764efd9995b9c3524542dbaeaa (patch) | |
tree | 964ef4e9dcb413126f9ba024327a5c0f087b1ac3 | |
parent | 38faf098c8fd085833e194bb99524313b3ea43ba (diff) | |
download | qt-creator-87c3f08e52005f764efd9995b9c3524542dbaeaa.tar.gz |
CMake: Move settings storage closer to class implementation
Simpler in use.
Change-Id: I8cc929001035974b9b73566b206410bfd77f73a6
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
10 files changed, 24 insertions, 34 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 408d9b4a44..52958593bf 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -3,7 +3,6 @@ #include "cmakebuildconfiguration.h" -#include "cmakebuildconfiguration.h" #include "cmakebuildstep.h" #include "cmakebuildsystem.h" #include "cmakeconfigitem.h" @@ -11,7 +10,6 @@ #include "cmakeproject.h" #include "cmakeprojectconstants.h" #include "cmakeprojectmanagertr.h" -#include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" #include "configmodel.h" #include "configmodelitemdelegate.h" @@ -300,7 +298,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildSystem *bs) : m_showAdvancedCheckBox = new QCheckBox(Tr::tr("Advanced")); - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = CMakeSpecificSettings::instance(); m_showAdvancedCheckBox->setChecked(settings->showAdvancedOptionsByDefault.value()); connect(m_configView->selectionModel(), &QItemSelectionModel::selectionChanged, @@ -608,10 +606,10 @@ void CMakeBuildSettingsWidget::batchEditConfiguration() void CMakeBuildSettingsWidget::reconfigureWithInitialParameters() { - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = CMakeSpecificSettings::instance(); bool doNotAsk = !settings->askBeforeReConfigureInitialParams.value(); if (!doNotAsk) { - QDialogButtonBox::StandardButton reply = Utils::CheckableMessageBox::question( + QDialogButtonBox::StandardButton reply = CheckableMessageBox::question( Core::ICore::dialogParent(), Tr::tr("Re-configure with Initial Parameters"), Tr::tr("Clear CMake configuration and configure with initial parameters?"), @@ -1152,8 +1150,7 @@ static CommandLine defaultInitialCMakeCommand(const Kit *k, const QString buildT if (!buildType.isEmpty() && !CMakeGeneratorKitAspect::isMultiConfigGenerator(k)) cmd.addArg("-DCMAKE_BUILD_TYPE:STRING=" + buildType); - Internal::CMakeSpecificSettings *settings - = Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = Internal::CMakeSpecificSettings::instance(); // Package manager auto setup. The file auto-setup.cmake resides on the host, // so it's not accessible for remotely running cmakes. We need to exclude that case. @@ -2122,7 +2119,7 @@ void CMakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const if (tool && tool->cmakeExecutable().needsDevice()) return; - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = CMakeSpecificSettings::instance(); if (!settings->ninjaPath.filePath().isEmpty()) { const Utils::FilePath ninja = settings->ninjaPath.filePath(); env.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 85708ba07d..37cc9ff29f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -11,7 +11,6 @@ #include "cmakeproject.h" #include "cmakeprojectconstants.h" #include "cmakeprojectmanagertr.h" -#include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" #include "projecttreehelper.h" @@ -80,7 +79,7 @@ static void noAutoAdditionNotify(const FilePaths &filePaths, const ProjectNode * }); if (!srcPaths.empty()) { - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = CMakeSpecificSettings::instance(); switch (settings->afterAddFileSetting.value()) { case AskUser: { bool checkValue{false}; @@ -825,7 +824,7 @@ void CMakeBuildSystem::wireUpConnections() connect(project(), &Project::projectFileIsDirty, this, [this] { if (buildConfiguration()->isActive() && !isParsing()) { - auto settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = CMakeSpecificSettings::instance(); if (settings->autorunCMake.value()) { qCDebug(cmakeBuildSystemLog) << "Requesting parse due to dirty project file"; reparse(CMakeBuildSystem::REPARSE_FORCE_CMAKE_RUN); diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index 8c3415483e..fae8f9ea23 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -6,7 +6,6 @@ #include "cmakeconfigitem.h" #include "cmakeprojectconstants.h" #include "cmakeprojectmanagertr.h" -#include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" #include "cmaketool.h" #include "cmaketoolmanager.h" @@ -680,9 +679,7 @@ QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const }); if (it != known.constEnd()) { const bool hasNinja = [k, tool] { - Internal::CMakeSpecificSettings *settings - = Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); - + auto settings = Internal::CMakeSpecificSettings::instance(); if (settings->ninjaPath.filePath().isEmpty()) { auto findNinja = [](const Environment &env) -> bool { return !env.searchInPath("ninja").isEmpty(); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index eabfacbd46..e028871657 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -74,7 +74,7 @@ public: }; CMakeSettingsPage settingsPage; - CMakeSpecificSettingsPage specificSettings{CMakeProjectPlugin::projectTypeSpecificSettings()}; + CMakeSpecificSettingsPage specificSettings; CMakeManager manager; CMakeBuildStepFactory buildStepFactory; @@ -138,12 +138,6 @@ void CMakeProjectPluginPrivate::autoFormatOnSave(Core::IDocument *document) TextEditor::formatEditor(widget, command); } -CMakeSpecificSettings *CMakeProjectPlugin::projectTypeSpecificSettings() -{ - static CMakeSpecificSettings theSettings; - return &theSettings; -} - CMakeProjectPlugin::~CMakeProjectPlugin() { delete d; @@ -152,7 +146,7 @@ CMakeProjectPlugin::~CMakeProjectPlugin() void CMakeProjectPlugin::initialize() { d = new CMakeProjectPluginPrivate; - projectTypeSpecificSettings()->readSettings(ICore::settings()); + CMakeSpecificSettings::instance()->readSettings(ICore::settings()); const Context projectContext{CMakeProjectManager::Constants::CMAKE_PROJECT_ID}; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h index 86c7cf6356..26bb5d7031 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h @@ -9,15 +9,12 @@ namespace ProjectExplorer { class Node; } namespace CMakeProjectManager::Internal { -class CMakeSpecificSettings; - class CMakeProjectPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CMakeProjectManager.json") public: - static CMakeSpecificSettings *projectTypeSpecificSettings(); ~CMakeProjectPlugin(); #ifdef WITH_TESTS diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp index 07c34a3aea..fd80369ec0 100644 --- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp +++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp @@ -73,10 +73,17 @@ CMakeSpecificSettings::CMakeSpecificSettings() ::CMakeProjectManager::Tr::tr("Show advanced options by default")); } +CMakeSpecificSettings *CMakeSpecificSettings::instance() +{ + static CMakeSpecificSettings theSettings; + return &theSettings; +} + // CMakeSpecificSettingsPage -CMakeSpecificSettingsPage::CMakeSpecificSettingsPage(CMakeSpecificSettings *settings) +CMakeSpecificSettingsPage::CMakeSpecificSettingsPage() { + CMakeSpecificSettings *settings = CMakeSpecificSettings::instance(); setId(Constants::Settings::GENERAL_ID); setDisplayName(::CMakeProjectManager::Tr::tr("General")); setDisplayCategory("CMake"); diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h index 96b67c635f..d0b19bee42 100644 --- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h +++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h @@ -20,6 +20,8 @@ class CMakeSpecificSettings final : public Utils::AspectContainer public: CMakeSpecificSettings(); + static CMakeSpecificSettings *instance(); + Utils::BoolAspect autorunCMake; Utils::SelectionAspect afterAddFileSetting; Utils::StringAspect ninjaPath; @@ -32,7 +34,7 @@ public: class CMakeSpecificSettingsPage final : public Core::IOptionsPage { public: - explicit CMakeSpecificSettingsPage(CMakeSpecificSettings *settings); + CMakeSpecificSettingsPage(); }; } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp index 168c8922e5..8bc396ced1 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp @@ -4,7 +4,6 @@ #include "cmaketoolmanager.h" #include "cmakeprojectmanagertr.h" -#include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" #include "cmaketoolsettingsaccessor.h" @@ -142,7 +141,7 @@ void CMakeToolManager::restoreCMakeTools() emit m_instance->cmakeToolsLoaded(); // Store the default CMake tool "Autorun CMake" value globally - auto settings = Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); + auto settings = Internal::CMakeSpecificSettings::instance(); if (settings->autorunCMake.value() == settings->autorunCMake.defaultValue()) { CMakeTool *cmake = defaultCMakeTool(); settings->autorunCMake.setValue(cmake ? cmake->isAutoRun() : true); diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 5a3674275b..9293831fdc 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -525,9 +525,7 @@ void addCompileGroups(ProjectNode *targetRoot, const Utils::FilePath &buildDirectory, const TargetDetails &td) { - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); - const bool showSourceFolders = settings->showSourceSubFolders.value(); - + const bool showSourceFolders = CMakeSpecificSettings::instance()->showSourceSubFolders.value(); const bool inSourceBuild = (sourceDirectory == buildDirectory); std::vector<std::unique_ptr<FileNode>> toList; diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp index 0d9832c1c9..b816e885de 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -108,7 +108,7 @@ void FileApiReader::parse(bool forceCMakeRun, // * A query file is newer than the reply file const bool hasArguments = !args.isEmpty(); const bool replyFileMissing = !replyFile.exists(); - const auto settings = CMakeProjectPlugin::projectTypeSpecificSettings(); + const auto settings = CMakeSpecificSettings::instance(); const bool cmakeFilesChanged = m_parameters.cmakeTool() && settings->autorunCMake.value() && anyOf(m_cmakeFiles, [&replyFile](const CMakeFileInfo &info) { return !info.isGenerated |