diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2024-04-15 12:11:51 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2024-04-16 09:04:05 +0000 |
commit | 11cd22a1258959bfd1a6e26ab69373d006b86861 (patch) | |
tree | 1e73aaf0d63d62577be0167925e7bf71038debce /src | |
parent | caf79d6baa84f5085fe348052dc2184ae14e8bd1 (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')
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.cpp | 35 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.h | 22 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppmodelmanager_test.cpp | 14 |
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()); |