aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2024-04-12 12:30:30 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2024-04-15 08:57:58 +0000
commitac4bf6901b2902789b13c0534426e9edfbb06f5a (patch)
tree987731ba44e0da695f248111e7ee043580f2dc9b
parentd51128fb8a2d42cf70974356dcb95922f612d7c3 (diff)
CppEditor: Simplify CppCodeModelSettings
We don't need the QObject wrapper. Change-Id: Ief0e1314db40cb403c56fe0e660c5dffa326f83c Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/plugins/clangtools/clangfileinfo.h4
-rw-r--r--src/plugins/cppeditor/baseeditordocumentprocessor.cpp4
-rw-r--r--src/plugins/cppeditor/builtineditordocumentprocessor.cpp2
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.cpp117
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.h66
-rw-r--r--src/plugins/cppeditor/cppeditorplugin.cpp2
-rw-r--r--src/plugins/cppeditor/cppmodelmanager.cpp13
-rw-r--r--src/plugins/cppeditor/cppmodelmanager.h3
-rw-r--r--src/plugins/cppeditor/cppmodelmanager_test.cpp9
-rw-r--r--src/plugins/cppeditor/projectinfo.cpp8
10 files changed, 103 insertions, 125 deletions
diff --git a/src/plugins/clangtools/clangfileinfo.h b/src/plugins/clangtools/clangfileinfo.h
index deb53f6058..bc54de3dc2 100644
--- a/src/plugins/clangtools/clangfileinfo.h
+++ b/src/plugins/clangtools/clangfileinfo.h
@@ -24,7 +24,7 @@ public:
CppEditor::ProjectPart::ConstPtr projectPart)
: file(std::move(file))
, kind(kind)
- , settings(settings.data())
+ , settings(settings)
, projectPart(projectPart)
{}
@@ -34,7 +34,7 @@ public:
Utils::FilePath file;
CppEditor::ProjectFile::Kind kind;
- CppEditor::CppCodeModelSettings::Data settings;
+ CppEditor::CppCodeModelSettings settings;
CppEditor::ProjectPart::ConstPtr projectPart;
};
using FileInfos = std::vector<FileInfo>;
diff --git a/src/plugins/cppeditor/baseeditordocumentprocessor.cpp b/src/plugins/cppeditor/baseeditordocumentprocessor.cpp
index 786999223e..e2c600681d 100644
--- a/src/plugins/cppeditor/baseeditordocumentprocessor.cpp
+++ b/src/plugins/cppeditor/baseeditordocumentprocessor.cpp
@@ -37,10 +37,10 @@ BaseEditorDocumentProcessor::~BaseEditorDocumentProcessor() = default;
void BaseEditorDocumentProcessor::run(bool projectsUpdated)
{
if (projectsUpdated)
- m_settings.setData(CppCodeModelSettings::settingsForFile(m_filePath).data());
+ m_settings = CppCodeModelSettings::settingsForFile(m_filePath);
const Utils::Language languagePreference
- = m_settings.interpretAmbigiousHeadersAsC() ? Utils::Language::C : Utils::Language::Cxx;
+ = m_settings.interpretAmbigiousHeadersAsC ? Utils::Language::C : Utils::Language::Cxx;
runImpl({CppModelManager::workingCopy(),
ProjectExplorer::ProjectManager::startupProject(),
diff --git a/src/plugins/cppeditor/builtineditordocumentprocessor.cpp b/src/plugins/cppeditor/builtineditordocumentprocessor.cpp
index 5f827c74ce..33f415fe6b 100644
--- a/src/plugins/cppeditor/builtineditordocumentprocessor.cpp
+++ b/src/plugins/cppeditor/builtineditordocumentprocessor.cpp
@@ -151,7 +151,7 @@ BuiltinEditorDocumentProcessor::BuiltinEditorDocumentProcessor(TextEditor::TextD
using namespace Internal;
BaseEditorDocumentParser::Configuration config = m_parser->configuration();
- config.usePrecompiledHeaders = settings().pchUsage() != CppCodeModelSettings::PchUse_None;
+ config.usePrecompiledHeaders = settings().pchUsage != CppCodeModelSettings::PchUse_None;
m_parser->setConfiguration(config);
m_semanticHighlighter->setHighlightingRunner(
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp
index 4791fd528e..f24baaf8be 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.cpp
+++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp
@@ -6,6 +6,7 @@
#include "compileroptionsbuilder.h"
#include "cppeditorconstants.h"
#include "cppeditortr.h"
+#include "cppmodelmanager.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <coreplugin/icore.h>
@@ -49,19 +50,19 @@ static Key useBuiltinPreprocessorKey() { return Constants::CPPEDITOR_USE_BUILTIN
static Key indexerFileSizeLimitKey() { return Constants::CPPEDITOR_INDEXER_FILE_SIZE_LIMIT; }
static Key useGlobalSettingsKey() { return "useGlobalSettings"; }
-bool operator==(const CppEditor::CppCodeModelSettings::Data &s1,
- const CppEditor::CppCodeModelSettings::Data &s2)
+bool operator==(const CppEditor::CppCodeModelSettings &s1,
+ const CppEditor::CppCodeModelSettings &s2)
{
return s1.pchUsage == s2.pchUsage
&& s1.interpretAmbigiousHeadersAsC == s2.interpretAmbigiousHeadersAsC
&& s1.skipIndexingBigFiles == s2.skipIndexingBigFiles
&& s1.useBuiltinPreprocessor == s2.useBuiltinPreprocessor
&& s1.indexerFileSizeLimitInMb == s2.indexerFileSizeLimitInMb
- && s1.categorizeFindReferences == s2.categorizeFindReferences
+ && s1.m_categorizeFindReferences == s2.m_categorizeFindReferences
&& s1.ignoreFiles == s2.ignoreFiles && s1.ignorePattern == s2.ignorePattern;
}
-Store CppCodeModelSettings::Data::toMap() const
+Store CppCodeModelSettings::toMap() const
{
Store store;
store.insert(pchUsageKey(), pchUsage);
@@ -74,15 +75,15 @@ Store CppCodeModelSettings::Data::toMap() const
return store;
}
-void CppCodeModelSettings::Data::fromMap(const Utils::Store &store)
+void CppCodeModelSettings::fromMap(const Utils::Store &store)
{
- const CppCodeModelSettings::Data def;
+ const CppCodeModelSettings def;
pchUsage = static_cast<PCHUsage>(store.value(pchUsageKey(), def.pchUsage).toInt());
- interpretAmbigiousHeadersAsC = store
- .value(interpretAmbiguousHeadersAsCHeadersKey(),
- def.interpretAmbigiousHeadersAsC)
- .toBool();
- skipIndexingBigFiles = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool();
+ interpretAmbigiousHeadersAsC
+ = store.value(interpretAmbiguousHeadersAsCHeadersKey(), def.interpretAmbigiousHeadersAsC)
+ .toBool();
+ skipIndexingBigFiles
+ = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool();
ignoreFiles = store.value(ignoreFilesKey(), def.ignoreFiles).toBool();
ignorePattern = store.value(ignorePatternKey(), def.ignorePattern).toString();
useBuiltinPreprocessor
@@ -93,12 +94,13 @@ void CppCodeModelSettings::Data::fromMap(const Utils::Store &store)
void CppCodeModelSettings::fromSettings(QtcSettings *s)
{
- m_data.fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s));
+ fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s));
}
void CppCodeModelSettings::toSettings(QtcSettings *s)
{
- storeToSettingsWithDefault(Constants::CPPEDITOR_SETTINGSGROUP, s, m_data.toMap(), Data().toMap());
+ storeToSettingsWithDefault(
+ Constants::CPPEDITOR_SETTINGSGROUP, s, toMap(), CppCodeModelSettings().toMap());
}
CppCodeModelSettings &CppCodeModelSettings::globalInstance()
@@ -109,7 +111,7 @@ CppCodeModelSettings &CppCodeModelSettings::globalInstance()
CppCodeModelSettings CppCodeModelSettings::settingsForProject(const ProjectExplorer::Project *project)
{
- return {CppCodeModelProjectSettings(const_cast<ProjectExplorer::Project *>(project)).data()};
+ return {CppCodeModelProjectSettings(const_cast<ProjectExplorer::Project *>(project)).settings()};
}
CppCodeModelSettings CppCodeModelSettings::settingsForProject(const Utils::FilePath &projectFile)
@@ -122,25 +124,25 @@ CppCodeModelSettings CppCodeModelSettings::settingsForFile(const Utils::FilePath
return settingsForProject(ProjectManager::projectForFile(file));
}
-void CppCodeModelSettings::setGlobalData(const Data &data)
+void CppCodeModelSettings::setGlobal(const CppCodeModelSettings &settings)
{
- if (globalInstance().m_data == data)
+ if (globalInstance() == settings)
return;
- globalInstance().m_data = data;
+ globalInstance() = settings;
globalInstance().toSettings(Core::ICore::settings());
- emit globalInstance().changed(nullptr);
+ CppModelManager::handleSettingsChange(nullptr);
}
-CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsage(const Project *project)
+CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsageForProject(const Project *project)
{
- return CppCodeModelSettings::settingsForProject(project).pchUsage();
+ return CppCodeModelSettings::settingsForProject(project).pchUsage;
}
UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders() const
{
- return pchUsage() == CppCodeModelSettings::PchUse_None ? UsePrecompiledHeaders::No
- : UsePrecompiledHeaders::Yes;
+ return pchUsage == CppCodeModelSettings::PchUse_None ? UsePrecompiledHeaders::No
+ : UsePrecompiledHeaders::Yes;
}
UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders(const Project *project)
@@ -150,17 +152,17 @@ UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders(const Project
int CppCodeModelSettings::effectiveIndexerFileSizeLimitInMb() const
{
- return skipIndexingBigFiles() ? indexerFileSizeLimitInMb() : -1;
+ return skipIndexingBigFiles ? indexerFileSizeLimitInMb : -1;
}
bool CppCodeModelSettings::categorizeFindReferences()
{
- return globalInstance().m_data.categorizeFindReferences;
+ return globalInstance().m_categorizeFindReferences;
}
void CppCodeModelSettings::setCategorizeFindReferences(bool categorize)
{
- globalInstance().m_data.categorizeFindReferences = categorize;
+ globalInstance().m_categorizeFindReferences = categorize;
}
CppCodeModelProjectSettings::CppCodeModelProjectSettings(ProjectExplorer::Project *project)
@@ -169,23 +171,23 @@ CppCodeModelProjectSettings::CppCodeModelProjectSettings(ProjectExplorer::Projec
loadSettings();
}
-CppCodeModelSettings::Data CppCodeModelProjectSettings::data() const
+CppCodeModelSettings CppCodeModelProjectSettings::settings() const
{
- return m_useGlobalSettings ? CppCodeModelSettings::globalInstance().data() : m_customSettings;
+ return m_useGlobalSettings ? CppCodeModelSettings::globalInstance() : m_customSettings;
}
-void CppCodeModelProjectSettings::setData(const CppCodeModelSettings::Data &data)
+void CppCodeModelProjectSettings::setSettings(const CppCodeModelSettings &settings)
{
- m_customSettings = data;
+ m_customSettings = settings;
saveSettings();
- emit CppCodeModelSettings::globalInstance().changed(m_project);
+ CppModelManager::handleSettingsChange(m_project);
}
void CppCodeModelProjectSettings::setUseGlobalSettings(bool useGlobal)
{
m_useGlobalSettings = useGlobal;
saveSettings();
- emit CppCodeModelSettings::globalInstance().changed(m_project);
+ CppModelManager::handleSettingsChange(m_project);
}
void CppCodeModelProjectSettings::loadSettings()
@@ -212,15 +214,14 @@ class CppCodeModelSettingsWidget final : public Core::IOptionsPageWidget
{
Q_OBJECT
public:
- CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data);
-
- CppCodeModelSettings::Data data() const;
+ CppCodeModelSettingsWidget(const CppCodeModelSettings &settings);
+ CppCodeModelSettings settings() const;
signals:
void settingsDataChanged();
private:
- void apply() final { CppCodeModelSettings::globalInstance().setGlobalData(data()); }
+ void apply() final { CppCodeModelSettings::globalInstance().setGlobal(settings()); }
QCheckBox *m_interpretAmbiguousHeadersAsCHeaders;
QCheckBox *m_ignorePchCheckBox;
@@ -231,18 +232,18 @@ private:
QPlainTextEdit *m_ignorePatternTextEdit;
};
-CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data)
+CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSettings &settings)
{
m_interpretAmbiguousHeadersAsCHeaders
= new QCheckBox(Tr::tr("Interpret ambiguous headers as C headers"));
m_skipIndexingBigFilesCheckBox = new QCheckBox(Tr::tr("Do not index files greater than"));
- m_skipIndexingBigFilesCheckBox->setChecked(data.skipIndexingBigFiles);
+ m_skipIndexingBigFilesCheckBox->setChecked(settings.skipIndexingBigFiles);
m_bigFilesLimitSpinBox = new QSpinBox;
m_bigFilesLimitSpinBox->setSuffix(Tr::tr("MB"));
m_bigFilesLimitSpinBox->setRange(1, 500);
- m_bigFilesLimitSpinBox->setValue(data.indexerFileSizeLimitInMb);
+ m_bigFilesLimitSpinBox->setValue(settings.indexerFileSizeLimitInMb);
m_ignoreFilesCheckBox = new QCheckBox(Tr::tr("Ignore files"));
m_ignoreFilesCheckBox->setToolTip(
@@ -250,8 +251,8 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting
+ Tr::tr("Ignore files that match these wildcard patterns, one wildcard per line.")
+ "</p></body></html>");
- m_ignoreFilesCheckBox->setChecked(data.ignoreFiles);
- m_ignorePatternTextEdit = new QPlainTextEdit(data.ignorePattern);
+ m_ignoreFilesCheckBox->setChecked(settings.ignoreFiles);
+ m_ignorePatternTextEdit = new QPlainTextEdit(settings.ignorePattern);
m_ignorePatternTextEdit->setToolTip(m_ignoreFilesCheckBox->toolTip());
m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked());
@@ -271,9 +272,9 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting
(Tr::tr("Uncheck this to invoke the actual compiler "
"to show a pre-processed source file in the editor."));
- m_interpretAmbiguousHeadersAsCHeaders->setChecked(data.interpretAmbigiousHeadersAsC);
- m_ignorePchCheckBox->setChecked(data.pchUsage == CppCodeModelSettings::PchUse_None);
- m_useBuiltinPreprocessorCheckBox->setChecked(data.useBuiltinPreprocessor);
+ m_interpretAmbiguousHeadersAsCHeaders->setChecked(settings.interpretAmbigiousHeadersAsC);
+ m_ignorePchCheckBox->setChecked(settings.pchUsage == CppCodeModelSettings::PchUse_None);
+ m_useBuiltinPreprocessorCheckBox->setChecked(settings.useBuiltinPreprocessor);
using namespace Layouting;
@@ -309,18 +310,18 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting
timer, qOverload<>(&QTimer::start));
}
-CppCodeModelSettings::Data CppCodeModelSettingsWidget::data() const
+CppCodeModelSettings CppCodeModelSettingsWidget::settings() const
{
- CppCodeModelSettings::Data data;
- data.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked();
- data.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked();
- data.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked();
- data.ignoreFiles = m_ignoreFilesCheckBox->isChecked();
- data.ignorePattern = m_ignorePatternTextEdit->toPlainText();
- data.indexerFileSizeLimitInMb = m_bigFilesLimitSpinBox->value();
- data.pchUsage = m_ignorePchCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None
- : CppCodeModelSettings::PchUse_BuildSystem;
- return data;
+ CppCodeModelSettings settings;
+ settings.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked();
+ settings.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked();
+ settings.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked();
+ settings.ignoreFiles = m_ignoreFilesCheckBox->isChecked();
+ settings.ignorePattern = m_ignorePatternTextEdit->toPlainText();
+ settings.indexerFileSizeLimitInMb = m_bigFilesLimitSpinBox->value();
+ settings.pchUsage = m_ignorePchCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None
+ : CppCodeModelSettings::PchUse_BuildSystem;
+ return settings;
}
class CppCodeModelSettingsPage final : public Core::IOptionsPage
@@ -334,7 +335,7 @@ public:
setDisplayCategory(Tr::tr("C++"));
setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png");
setWidgetCreator(
- [] { return new CppCodeModelSettingsWidget(CppCodeModelSettings::globalInstance().data()); });
+ [] { return new CppCodeModelSettingsWidget(CppCodeModelSettings::globalInstance()); });
}
};
@@ -347,7 +348,7 @@ class CppCodeModelProjectSettingsWidget : public ProjectSettingsWidget
{
public:
CppCodeModelProjectSettingsWidget(const CppCodeModelProjectSettings &settings)
- : m_settings(settings), m_widget(settings.data())
+ : m_settings(settings), m_widget(settings.settings())
{
setGlobalSettingsId(Constants::CPP_CODE_MODEL_SETTINGS_ID);
const auto layout = new QVBoxLayout(this);
@@ -361,11 +362,11 @@ public:
m_widget.setEnabled(!checked);
m_settings.setUseGlobalSettings(checked);
if (!checked)
- m_settings.setData(m_widget.data());
+ m_settings.setSettings(m_widget.settings());
});
connect(&m_widget, &CppCodeModelSettingsWidget::settingsDataChanged,
- this, [this] { m_settings.setData(m_widget.data()); });
+ this, [this] { m_settings.setSettings(m_widget.settings()); });
}
private:
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h
index eedc01402b..c7d414edce 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.h
+++ b/src/plugins/cppeditor/cppcodemodelsettings.h
@@ -10,7 +10,6 @@
#include <utils/store.h>
#include <utils/qtcsettings.h>
-#include <QObject>
#include <QStringList>
namespace ProjectExplorer { class Project; }
@@ -18,75 +17,56 @@ namespace ProjectExplorer { class Project; }
namespace CppEditor {
enum class UsePrecompiledHeaders;
-class CPPEDITOR_EXPORT CppCodeModelSettings : public QObject
+class CPPEDITOR_EXPORT CppCodeModelSettings
{
- Q_OBJECT
-
public:
enum PCHUsage {
PchUse_None = 1,
PchUse_BuildSystem = 2
};
- class Data
+ CppCodeModelSettings() = default;
+ CppCodeModelSettings(const Utils::Store &store) { fromMap(store); }
+
+ friend bool operator==(const CppCodeModelSettings &s1, const CppCodeModelSettings &s2);
+ friend bool operator!=(const CppCodeModelSettings &s1, const CppCodeModelSettings &s2)
{
- public:
- Data() = default;
- Data(const Utils::Store &store) { fromMap(store); }
- Utils::Store toMap() const;
- void fromMap(const Utils::Store &store);
-
- friend bool operator==(const Data &s1, const Data &s2);
- friend bool operator!=(const Data &s1, const Data &s2) { return !(s1 == s2); }
-
- PCHUsage pchUsage = PchUse_BuildSystem;
- bool interpretAmbigiousHeadersAsC = false;
- bool skipIndexingBigFiles = true;
- bool useBuiltinPreprocessor = true;
- int indexerFileSizeLimitInMb = 5;
- bool categorizeFindReferences = false; // Ephemeral!
- bool ignoreFiles = false;
- QString ignorePattern;
- };
+ return !(s1 == s2);
+ }
- CppCodeModelSettings(const Data &data) : m_data(data) {}
+ Utils::Store toMap() const;
+ void fromMap(const Utils::Store &store);
static CppCodeModelSettings &globalInstance(); // TODO: Make inaccessible.
static CppCodeModelSettings settingsForProject(const ProjectExplorer::Project *project);
static CppCodeModelSettings settingsForProject(const Utils::FilePath &projectFile);
static CppCodeModelSettings settingsForFile(const Utils::FilePath &file);
- static void setGlobalData(const Data &data); // TODO: Make inaccessible.
- void setData(const Data &data) { m_data = data; }
- Data data() const { return m_data; }
+ static void setGlobal(const CppCodeModelSettings &settings); // TODO: Make inaccessible.
- PCHUsage pchUsage() const { return m_data.pchUsage; }
- static PCHUsage pchUsage(const ProjectExplorer::Project *project);
+ static PCHUsage pchUsageForProject(const ProjectExplorer::Project *project);
UsePrecompiledHeaders usePrecompiledHeaders() const;
static UsePrecompiledHeaders usePrecompiledHeaders(const ProjectExplorer::Project *project);
- bool interpretAmbigiousHeadersAsC() const { return m_data.interpretAmbigiousHeadersAsC; }
- bool skipIndexingBigFiles() const { return m_data.skipIndexingBigFiles; }
- bool useBuiltinPreprocessor() const { return m_data.useBuiltinPreprocessor; }
- int indexerFileSizeLimitInMb() const { return m_data.indexerFileSizeLimitInMb; }
int effectiveIndexerFileSizeLimitInMb() const;
- bool ignoreFiles() const { return m_data.ignoreFiles; }
- QString ignorePattern() const { return m_data.ignorePattern; }
static bool categorizeFindReferences();
static void setCategorizeFindReferences(bool categorize);
-signals:
- void changed(ProjectExplorer::Project *project);
+ QString ignorePattern;
+ PCHUsage pchUsage = PchUse_BuildSystem;
+ int indexerFileSizeLimitInMb = 5;
+ bool interpretAmbigiousHeadersAsC = false;
+ bool skipIndexingBigFiles = true;
+ bool useBuiltinPreprocessor = true;
+ bool ignoreFiles = false;
+ bool m_categorizeFindReferences = false; // Ephemeral!
private:
- CppCodeModelSettings() = default;
CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); }
void toSettings(Utils::QtcSettings *s);
void fromSettings(Utils::QtcSettings *s);
-
- Data m_data;
};
class CppCodeModelProjectSettings
@@ -94,8 +74,8 @@ class CppCodeModelProjectSettings
public:
CppCodeModelProjectSettings(ProjectExplorer::Project *project);
- CppCodeModelSettings::Data data() const;
- void setData(const CppCodeModelSettings::Data &data);
+ CppCodeModelSettings settings() const;
+ void setSettings(const CppCodeModelSettings &settings);
bool useGlobalSettings() const { return m_useGlobalSettings; }
void setUseGlobalSettings(bool useGlobal);
@@ -104,7 +84,7 @@ private:
void saveSettings();
ProjectExplorer::Project * const m_project;
- CppCodeModelSettings::Data m_customSettings;
+ CppCodeModelSettings m_customSettings;
bool m_useGlobalSettings = true;
};
diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp
index 96a476c523..6718d4cbc8 100644
--- a/src/plugins/cppeditor/cppeditorplugin.cpp
+++ b/src/plugins/cppeditor/cppeditorplugin.cpp
@@ -204,7 +204,7 @@ void CppEditorPlugin::initialize()
setupCppQuickFixSettings();
setupCppCodeModelSettingsPage();
provideCppSettingsRetriever([](const Project *p) {
- return CppCodeModelSettings::settingsForProject(p).data().toMap();
+ return CppCodeModelSettings::settingsForProject(p).toMap();
});
setupCppOutline();
setupCppCodeStyleSettings();
diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp
index d5d6842e00..4a2d4778b9 100644
--- a/src/plugins/cppeditor/cppmodelmanager.cpp
+++ b/src/plugins/cppeditor/cppmodelmanager.cpp
@@ -407,7 +407,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit)
saveAndOpen(outFilePath, content.append(preprocessedDoc->utf8Source()), inNextSplit);
};
- if (CppCodeModelSettings::settingsForFile(filePath).useBuiltinPreprocessor()) {
+ if (CppCodeModelSettings::settingsForFile(filePath).useBuiltinPreprocessor) {
useBuiltinPreprocessor();
return;
}
@@ -1023,9 +1023,6 @@ CppModelManager::CppModelManager()
connect(ICore::instance(), &ICore::coreAboutToClose,
this, &CppModelManager::onCoreAboutToClose);
- connect(&CppCodeModelSettings::globalInstance(), &CppCodeModelSettings::changed,
- this, &CppModelManager::onSettingsChange);
-
d->m_fallbackProjectPartTimer.setSingleShot(true);
d->m_fallbackProjectPartTimer.setInterval(5000);
connect(&d->m_fallbackProjectPartTimer, &QTimer::timeout,
@@ -1360,8 +1357,8 @@ QFuture<void> CppModelManager::updateSourceFiles(const QSet<FilePath> &sourceFil
const CppCodeModelSettings settings = CppCodeModelSettings::settingsForProject(it.key());
filteredFiles.unite(filteredFilesRemoved(it.value(),
settings.effectiveIndexerFileSizeLimitInMb(),
- settings.ignoreFiles(),
- settings.ignorePattern()));
+ settings.ignoreFiles,
+ settings.ignorePattern));
}
return d->m_internalIndexingSupport->refreshSourceFiles(filteredFiles, mode);
@@ -2013,7 +2010,7 @@ void CppModelManager::onCoreAboutToClose()
d->m_enableGC = false;
}
-void CppModelManager::onSettingsChange(Project *project)
+void CppModelManager::handleSettingsChange(Project *project)
{
ProjectInfoList info;
if (project)
@@ -2023,7 +2020,7 @@ void CppModelManager::onSettingsChange(Project *project)
for (const ProjectInfo::ConstPtr &pi : std::as_const(info)) {
const CppCodeModelSettings newSettings = CppCodeModelSettings::settingsForProject(
pi->projectFilePath());
- if (pi->settings().data() != newSettings.data())
+ if (pi->settings() != newSettings)
updateProjectInfo(ProjectInfo::cloneWithNewSettings(pi, newSettings));
}
}
diff --git a/src/plugins/cppeditor/cppmodelmanager.h b/src/plugins/cppeditor/cppmodelmanager.h
index d1a558ce9c..c22a8a9da0 100644
--- a/src/plugins/cppeditor/cppmodelmanager.h
+++ b/src/plugins/cppeditor/cppmodelmanager.h
@@ -110,6 +110,8 @@ public:
static QFuture<void> updateProjectInfo(const ProjectInfo::ConstPtr &newProjectInfo,
const QSet<Utils::FilePath> &additionalFiles = {});
+ static void handleSettingsChange(ProjectExplorer::Project *project);
+
/// \return The project part with the given project file
static ProjectPart::ConstPtr projectPartForId(const QString &projectPartId);
/// \return All project parts that mention the given file name as one of the sources/headers.
@@ -288,7 +290,6 @@ private:
static void onSourceFilesRefreshed();
static void onCurrentEditorChanged(Core::IEditor *editor);
static void onCoreAboutToClose();
- static void onSettingsChange(ProjectExplorer::Project *project);
static void setupFallbackProjectPart();
static void delayedGC();
diff --git a/src/plugins/cppeditor/cppmodelmanager_test.cpp b/src/plugins/cppeditor/cppmodelmanager_test.cpp
index 4ac39de737..dd0f07d80b 100644
--- a/src/plugins/cppeditor/cppmodelmanager_test.cpp
+++ b/src/plugins/cppeditor/cppmodelmanager_test.cpp
@@ -1283,10 +1283,9 @@ void ModelManagerTest::testSettingsChanges()
// Change global settings. Only the second project should get re-indexed, as the first one
// has its own settings, which are still the same.
- CppCodeModelSettings::Data globalSettings
- = CppCodeModelSettings::settingsForProject(nullptr).data();
+ CppCodeModelSettings globalSettings = CppCodeModelSettings::settingsForProject(nullptr);
globalSettings.indexerFileSizeLimitInMb = 1;
- CppCodeModelSettings::setGlobalData(globalSettings);
+ CppCodeModelSettings::setGlobal(globalSettings);
if (refreshCount == 0)
QVERIFY(waitForRefresh());
QVERIFY(!waitForRefresh());
@@ -1295,10 +1294,10 @@ void ModelManagerTest::testSettingsChanges()
// Change first project's settings. Only this project should get re-indexed.
refreshCount = 0;
refreshedFiles.clear();
- CppCodeModelSettings::Data p1Data = p1Settings.data();
+ CppCodeModelSettings p1Data = p1Settings.settings();
p1Data.ignoreFiles = true;
p1Data.ignorePattern = "baz3.h";
- p1Settings.setData(p1Data);
+ p1Settings.setSettings(p1Data);
if (refreshCount == 0)
QVERIFY(waitForRefresh());
QVERIFY(!waitForRefresh());
diff --git a/src/plugins/cppeditor/projectinfo.cpp b/src/plugins/cppeditor/projectinfo.cpp
index 8a393df6d3..9561310f32 100644
--- a/src/plugins/cppeditor/projectinfo.cpp
+++ b/src/plugins/cppeditor/projectinfo.cpp
@@ -33,7 +33,7 @@ bool ProjectInfo::operator ==(const ProjectInfo &other) const
&& m_projectParts == other.m_projectParts
&& m_headerPaths == other.m_headerPaths
&& m_sourceFiles == other.m_sourceFiles
- && m_settings.data() == other.m_settings.data()
+ && m_settings == other.m_settings
&& m_defines == other.m_defines;
}
@@ -50,7 +50,7 @@ bool ProjectInfo::definesChanged(const ProjectInfo &other) const
bool ProjectInfo::configurationChanged(const ProjectInfo &other) const
{
return definesChanged(other) || m_headerPaths != other.m_headerPaths
- || m_settings.data() != other.settings().data();
+ || m_settings != other.settings();
}
bool ProjectInfo::configurationOrFilesChanged(const ProjectInfo &other) const
@@ -98,7 +98,7 @@ ProjectInfo::ProjectInfo(const ProjectExplorer::ProjectUpdateInfo &updateInfo,
m_headerPaths(getHeaderPaths(projectParts)),
m_sourceFiles(getSourceFiles(projectParts)),
m_defines(getDefines(projectParts)),
- m_settings(CppCodeModelSettings::Data(updateInfo.cppSettings))
+ m_settings(updateInfo.cppSettings)
{
}
@@ -110,7 +110,7 @@ ProjectInfo::ProjectInfo(const ConstPtr &pi, const CppCodeModelSettings &setting
m_headerPaths(pi->m_headerPaths),
m_sourceFiles(pi->sourceFiles()),
m_defines(pi->m_defines),
- m_settings(settings.data())
+ m_settings(settings)
{
}