CppEditor: Use Utils::Store in CppCodeModelSettings

Preparation for introducing a per-project variant.

Change-Id: I40897f3ad5261e0d28e6c1332a6951f61f5e749b
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2024-02-20 15:41:42 +01:00
parent ad30de78d6
commit 68cc7f11b7
2 changed files with 52 additions and 43 deletions

View File

@@ -18,6 +18,7 @@
#include <utils/macroexpander.h> #include <utils/macroexpander.h>
#include <utils/process.h> #include <utils/process.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/store.h>
#include <QDateTime> #include <QDateTime>
#include <QDir> #include <QDir>
@@ -72,56 +73,59 @@ static FilePath fallbackClangdFilePath()
void CppCodeModelSettings::fromSettings(QtcSettings *s) void CppCodeModelSettings::fromSettings(QtcSettings *s)
{ {
s->beginGroup(Constants::CPPEDITOR_SETTINGSGROUP); fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s));
const CppCodeModelSettings def;
setEnableLowerClazyLevels(
s->value(enableLowerClazyLevelsKey(), def.enableLowerClazyLevels()).toBool());
setPCHUsage(static_cast<PCHUsage>(s->value(pchUsageKey(), def.pchUsage()).toInt()));
setInterpretAmbigiousHeadersAsCHeaders(s->value(interpretAmbiguousHeadersAsCHeadersKey(),
def.interpretAmbigiousHeadersAsCHeaders())
.toBool());
setSkipIndexingBigFiles(
s->value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles()).toBool());
setIgnoreFiles(s->value(ignoreFilesKey(), def.ignoreFiles()).toBool());
setIgnorePattern(s->value(ignorePatternKey(), def.ignorePattern()).toString());
setUseBuiltinPreprocessor(
s->value(useBuiltinPreprocessorKey(), def.useBuiltinPreprocessor()).toBool());
setIndexerFileSizeLimitInMb(
s->value(indexerFileSizeLimitKey(), def.indexerFileSizeLimitInMb()).toInt());
s->endGroup();
emit changed(); emit changed();
} }
void CppCodeModelSettings::toSettings(QtcSettings *s) void CppCodeModelSettings::toSettings(QtcSettings *s)
{ {
s->beginGroup(Constants::CPPEDITOR_SETTINGSGROUP); storeToSettings(Constants::CPPEDITOR_SETTINGSGROUP, s, toMap());
emit changed(); // TODO: Why?
}
Store CppCodeModelSettings::toMap() const
{
const CppCodeModelSettings def; const CppCodeModelSettings def;
s->setValueWithDefault(enableLowerClazyLevelsKey(), Store store;
store.insertValueWithDefault(enableLowerClazyLevelsKey(),
enableLowerClazyLevels(), enableLowerClazyLevels(),
def.enableLowerClazyLevels()); def.enableLowerClazyLevels());
s->setValueWithDefault(pchUsageKey(), pchUsage(), def.pchUsage()); store.insertValueWithDefault(pchUsageKey(), pchUsage(), def.pchUsage());
s->setValueWithDefault(interpretAmbiguousHeadersAsCHeadersKey(), store.insertValueWithDefault(interpretAmbiguousHeadersAsCHeadersKey(),
interpretAmbigiousHeadersAsCHeaders(), interpretAmbigiousHeadersAsCHeaders(),
def.interpretAmbigiousHeadersAsCHeaders()); def.interpretAmbigiousHeadersAsCHeaders());
s->setValueWithDefault(skipIndexingBigFilesKey(), store.insertValueWithDefault(skipIndexingBigFilesKey(),
skipIndexingBigFiles(), skipIndexingBigFiles(),
def.skipIndexingBigFiles()); def.skipIndexingBigFiles());
s->setValueWithDefault(ignoreFilesKey(), ignoreFiles(), def.ignoreFiles()); store.insertValueWithDefault(ignoreFilesKey(), ignoreFiles(), def.ignoreFiles());
s->setValueWithDefault(ignorePatternKey(), ignorePattern(), def.ignorePattern()); store.insertValueWithDefault(ignorePatternKey(), ignorePattern(), def.ignorePattern());
s->setValueWithDefault(useBuiltinPreprocessorKey(), store.insertValueWithDefault(useBuiltinPreprocessorKey(),
useBuiltinPreprocessor(), useBuiltinPreprocessor(),
def.useBuiltinPreprocessor()); def.useBuiltinPreprocessor());
s->setValueWithDefault(indexerFileSizeLimitKey(), store.insertValueWithDefault(indexerFileSizeLimitKey(),
indexerFileSizeLimitInMb(), indexerFileSizeLimitInMb(),
def.indexerFileSizeLimitInMb()); def.indexerFileSizeLimitInMb());
return store;
}
s->endGroup(); void CppCodeModelSettings::fromMap(const Utils::Store &store)
{
emit changed(); const CppCodeModelSettings def;
setEnableLowerClazyLevels(
store.value(enableLowerClazyLevelsKey(), def.enableLowerClazyLevels()).toBool());
setPCHUsage(static_cast<PCHUsage>(store.value(pchUsageKey(), def.pchUsage()).toInt()));
setInterpretAmbigiousHeadersAsCHeaders(store
.value(interpretAmbiguousHeadersAsCHeadersKey(),
def.interpretAmbigiousHeadersAsCHeaders())
.toBool());
setSkipIndexingBigFiles(
store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles()).toBool());
setIgnoreFiles(store.value(ignoreFilesKey(), def.ignoreFiles()).toBool());
setIgnorePattern(store.value(ignorePatternKey(), def.ignorePattern()).toString());
setUseBuiltinPreprocessor(
store.value(useBuiltinPreprocessorKey(), def.useBuiltinPreprocessor()).toBool());
setIndexerFileSizeLimitInMb(
store.value(indexerFileSizeLimitKey(), def.indexerFileSizeLimitInMb()).toInt());
} }
CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsage() const CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsage() const

View File

@@ -17,7 +17,10 @@
#include <QVersionNumber> #include <QVersionNumber>
namespace ProjectExplorer { class Project; } namespace ProjectExplorer { class Project; }
namespace Utils { class MacroExpander; } namespace Utils {
class MacroExpander;
class Store;
} // namespace Utils
namespace CppEditor { namespace CppEditor {
@@ -68,6 +71,8 @@ signals:
private: private:
CppCodeModelSettings() = default; CppCodeModelSettings() = default;
void fromSettings(Utils::QtcSettings *s); void fromSettings(Utils::QtcSettings *s);
Utils::Store toMap() const;
void fromMap(const Utils::Store &store);
PCHUsage m_pchUsage = PchUse_BuildSystem; PCHUsage m_pchUsage = PchUse_BuildSystem;
bool m_interpretAmbigiousHeadersAsCHeaders = false; bool m_interpretAmbigiousHeadersAsCHeaders = false;