summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-01-20 09:10:23 +0100
committerhjk <hjk@qt.io>2023-01-23 14:49:45 +0000
commit87c3f08e52005f764efd9995b9c3524542dbaeaa (patch)
tree964ef4e9dcb413126f9ba024327a5c0f087b1ac3
parent38faf098c8fd085833e194bb99524313b3ea43ba (diff)
downloadqt-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>
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp13
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp5
-rw-r--r--src/plugins/cmakeprojectmanager/cmakekitinformation.cpp5
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp10
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectplugin.h3
-rw-r--r--src/plugins/cmakeprojectmanager/cmakespecificsettings.cpp9
-rw-r--r--src/plugins/cmakeprojectmanager/cmakespecificsettings.h4
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp3
-rw-r--r--src/plugins/cmakeprojectmanager/fileapidataextractor.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.cpp2
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