aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2024-04-15 12:11:51 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2024-04-16 09:04:05 +0000
commit11cd22a1258959bfd1a6e26ab69373d006b86861 (patch)
tree1e73aaf0d63d62577be0167925e7bf71038debce /src/plugins
parentcaf79d6baa84f5085fe348052dc2184ae14e8bd1 (diff)
CppEditor: Hide CppCodeModelProjectSettings
Change-Id: Ie0e10610e7428f94e487261d2ffbc1cc44011f36 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.cpp35
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.h22
-rw-r--r--src/plugins/cppeditor/cppmodelmanager_test.cpp14
3 files changed, 45 insertions, 26 deletions
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp
index ff7620e22d..6a6ba6773a 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.cpp
+++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp
@@ -38,7 +38,28 @@
using namespace ProjectExplorer;
using namespace Utils;
+
namespace CppEditor {
+namespace {
+class CppCodeModelProjectSettings
+{
+public:
+ CppCodeModelProjectSettings(ProjectExplorer::Project *project);
+
+ CppCodeModelSettings settings() const;
+ void setSettings(const CppCodeModelSettings &settings);
+ bool useGlobalSettings() const { return m_useGlobalSettings; }
+ void setUseGlobalSettings(bool useGlobal);
+
+private:
+ void loadSettings();
+ void saveSettings();
+
+ ProjectExplorer::Project * const m_project;
+ CppCodeModelSettings m_customSettings;
+ bool m_useGlobalSettings = true;
+};
+} // namespace
static Key pchUsageKey() { return Constants::CPPEDITOR_MODEL_MANAGER_PCH_USAGE; }
static Key interpretAmbiguousHeadersAsCHeadersKey()
@@ -124,6 +145,20 @@ CppCodeModelSettings CppCodeModelSettings::settingsForFile(const Utils::FilePath
return settingsForProject(ProjectManager::projectForFile(file));
}
+bool CppCodeModelSettings::hasCustomSettings(const ProjectExplorer::Project *project)
+{
+ return !CppCodeModelProjectSettings(const_cast<ProjectExplorer::Project *>(project))
+ .useGlobalSettings();
+}
+
+void CppCodeModelSettings::setSettingsForProject(
+ ProjectExplorer::Project *project, const CppCodeModelSettings &settings)
+{
+ CppCodeModelProjectSettings pSettings(project);
+ pSettings.setUseGlobalSettings(false);
+ pSettings.setSettings(settings);
+}
+
void CppCodeModelSettings::setGlobal(const CppCodeModelSettings &settings)
{
if (globalInstance() == settings)
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h
index c7c7cb4e8c..71e14bbb5c 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.h
+++ b/src/plugins/cppeditor/cppcodemodelsettings.h
@@ -40,6 +40,9 @@ public:
static CppCodeModelSettings settingsForProject(const ProjectExplorer::Project *project);
static CppCodeModelSettings settingsForProject(const Utils::FilePath &projectFile);
static CppCodeModelSettings settingsForFile(const Utils::FilePath &file);
+ static bool hasCustomSettings(const ProjectExplorer::Project *project);
+ static void setSettingsForProject(ProjectExplorer::Project *project,
+ const CppCodeModelSettings &settings);
static const CppCodeModelSettings &global() { return globalInstance(); }
static void setGlobal(const CppCodeModelSettings &settings);
@@ -70,25 +73,6 @@ private:
void fromSettings(Utils::QtcSettings *s);
};
-class CppCodeModelProjectSettings
-{
-public:
- CppCodeModelProjectSettings(ProjectExplorer::Project *project);
-
- CppCodeModelSettings settings() const;
- void setSettings(const CppCodeModelSettings &settings);
- bool useGlobalSettings() const { return m_useGlobalSettings; }
- void setUseGlobalSettings(bool useGlobal);
-
-private:
- void loadSettings();
- void saveSettings();
-
- ProjectExplorer::Project * const m_project;
- CppCodeModelSettings m_customSettings;
- bool m_useGlobalSettings = true;
-};
-
namespace Internal {
void setupCppCodeModelSettingsPage();
void setupCppCodeModelProjectSettingsPanel();
diff --git a/src/plugins/cppeditor/cppmodelmanager_test.cpp b/src/plugins/cppeditor/cppmodelmanager_test.cpp
index dd0f07d80b..dadeacc05f 100644
--- a/src/plugins/cppeditor/cppmodelmanager_test.cpp
+++ b/src/plugins/cppeditor/cppmodelmanager_test.cpp
@@ -1275,9 +1275,10 @@ void ModelManagerTest::testSettingsChanges()
// as the default values are the same.
refreshCount = 0;
refreshedFiles.clear();
- CppCodeModelProjectSettings p1Settings(p1);
- QVERIFY(p1Settings.useGlobalSettings());
- p1Settings.setUseGlobalSettings(false);
+ QVERIFY(!CppCodeModelSettings::hasCustomSettings(p1));
+ CppCodeModelSettings p1Settings = CppCodeModelSettings::settingsForProject(p1);
+ CppCodeModelSettings::setSettingsForProject(p1, p1Settings);
+ QVERIFY(CppCodeModelSettings::hasCustomSettings(p1));
QCOMPARE(refreshCount, 0);
QVERIFY(!waitForRefresh());
@@ -1294,10 +1295,9 @@ void ModelManagerTest::testSettingsChanges()
// Change first project's settings. Only this project should get re-indexed.
refreshCount = 0;
refreshedFiles.clear();
- CppCodeModelSettings p1Data = p1Settings.settings();
- p1Data.ignoreFiles = true;
- p1Data.ignorePattern = "baz3.h";
- p1Settings.setSettings(p1Data);
+ p1Settings.ignoreFiles = true;
+ p1Settings.ignorePattern = "baz3.h";
+ CppCodeModelSettings::setSettingsForProject(p1, p1Settings);
if (refreshCount == 0)
QVERIFY(waitForRefresh());
QVERIFY(!waitForRefresh());