diff --git a/src/libs/utils/persistentsettings.cpp b/src/libs/utils/persistentsettings.cpp index 2daf2934c51..d73d74387f5 100644 --- a/src/libs/utils/persistentsettings.cpp +++ b/src/libs/utils/persistentsettings.cpp @@ -110,21 +110,21 @@ struct Context // Basic context containing element name string constants. struct ParseValueStackEntry { - explicit ParseValueStackEntry(QVariant::Type t = QVariant::Invalid, const QString &k = QString()) : type(t), key(k) {} - explicit ParseValueStackEntry(const QVariant &aSimpleValue, const QString &k); + explicit ParseValueStackEntry(QVariant::Type t = QVariant::Invalid, const Key &k = {}) : type(t), key(k) {} + explicit ParseValueStackEntry(const QVariant &aSimpleValue, const Key &k); QVariant value() const; - void addChild(const QString &key, const QVariant &v); + void addChild(const Key &key, const QVariant &v); QVariant::Type type; - QString key; + Key key; QVariant simpleValue; QVariantList listValue; - QVariantMap mapValue; + Store mapValue; }; -ParseValueStackEntry::ParseValueStackEntry(const QVariant &aSimpleValue, const QString &k) : - type(aSimpleValue.type()), key(k), simpleValue(aSimpleValue) +ParseValueStackEntry::ParseValueStackEntry(const QVariant &aSimpleValue, const Key &k) + : type(aSimpleValue.type()), key(k), simpleValue(aSimpleValue) { QTC_ASSERT(simpleValue.isValid(), return); } @@ -135,7 +135,7 @@ QVariant ParseValueStackEntry::value() const case QVariant::Invalid: return QVariant(); case QVariant::Map: - return QVariant(mapValue); + return QVariant::fromValue(mapValue); case QVariant::List: return QVariant(listValue); default: @@ -144,7 +144,7 @@ QVariant ParseValueStackEntry::value() const return simpleValue; } -void ParseValueStackEntry::addChild(const QString &key, const QVariant &v) +void ParseValueStackEntry::addChild(const Key &key, const QVariant &v) { switch (type) { case QVariant::Map: @@ -163,7 +163,7 @@ void ParseValueStackEntry::addChild(const QString &key, const QVariant &v) class ParseContext : public Context { public: - QVariantMap parse(const FilePath &file); + Store parse(const FilePath &file); private: enum Element { QtCreatorElement, DataElement, VariableElement, @@ -180,11 +180,11 @@ private: static QString formatWarning(const QXmlStreamReader &r, const QString &message); QStack m_valueStack; - QVariantMap m_result; - QString m_currentVariableName; + Store m_result; + Key m_currentVariableName; }; -QVariantMap ParseContext::parse(const FilePath &file) +Store ParseContext::parse(const FilePath &file) { QXmlStreamReader r(file.fileContents().value_or(QByteArray())); @@ -204,7 +204,7 @@ QVariantMap ParseContext::parse(const FilePath &file) case QXmlStreamReader::Invalid: qWarning("Error reading %s:%d: %s", qPrintable(file.fileName()), int(r.lineNumber()), qPrintable(r.errorString())); - return QVariantMap(); + return Store(); default: break; } // switch token @@ -224,8 +224,8 @@ bool ParseContext::handleStartElement(QXmlStreamReader &r) return false; const QXmlStreamAttributes attributes = r.attributes(); - const QString key = attributes.hasAttribute(keyAttribute) ? - attributes.value(keyAttribute).toString() : QString(); + const Key key = attributes.hasAttribute(keyAttribute) ? + attributes.value(keyAttribute).toString() : Key(); switch (e) { case SimpleValueElement: { // This reads away the end element, so, handle end element right here. @@ -318,14 +318,14 @@ QVariant ParseContext::readSimpleValue(QXmlStreamReader &r, const QXmlStreamAttr PersistentSettingsReader::PersistentSettingsReader() = default; -QVariant PersistentSettingsReader::restoreValue(const QString &variable, const QVariant &defaultValue) const +QVariant PersistentSettingsReader::restoreValue(const Key &variable, const QVariant &defaultValue) const { if (m_valueMap.contains(variable)) return m_valueMap.value(variable); return defaultValue; } -QVariantMap PersistentSettingsReader::restoreValues() const +Store PersistentSettingsReader::restoreValues() const { return m_valueMap; } @@ -352,13 +352,13 @@ FilePath PersistentSettingsReader::filePath() \class Utils::PersistentSettingsWriter \inmodule QtCreator - \brief The PersistentSettingsWriter class serializes a QVariantMap of + \brief The PersistentSettingsWriter class serializes a Store of arbitrary, nested data structures to an XML file. \sa Utils::PersistentSettingsReader */ static void writeVariantValue(QXmlStreamWriter &w, const Context &ctx, - const QVariant &variant, const QString &key = QString()) + const QVariant &variant, const Key &key = {}) { switch (static_cast(variant.type())) { case static_cast(QVariant::StringList): @@ -378,9 +378,9 @@ static void writeVariantValue(QXmlStreamWriter &w, const Context &ctx, w.writeAttribute(ctx.typeAttribute, QLatin1String(QVariant::typeToName(QVariant::Map))); if (!key.isEmpty()) w.writeAttribute(ctx.keyAttribute, key); - const QVariantMap varMap = variant.toMap(); - const QVariantMap::const_iterator cend = varMap.constEnd(); - for (QVariantMap::const_iterator i = varMap.constBegin(); i != cend; ++i) + const Store varMap = variant.value(); + const Store::const_iterator cend = varMap.constEnd(); + for (Store::const_iterator i = varMap.constBegin(); i != cend; ++i) writeVariantValue(w, ctx, i.value(), i.key()); w.writeEndElement(); } @@ -410,7 +410,7 @@ PersistentSettingsWriter::PersistentSettingsWriter(const FilePath &fileName, con m_fileName(fileName), m_docType(docType) { } -bool PersistentSettingsWriter::save(const QVariantMap &data, QString *errorString) const +bool PersistentSettingsWriter::save(const Store &data, QString *errorString) const { if (data == m_savedData) return true; @@ -418,7 +418,7 @@ bool PersistentSettingsWriter::save(const QVariantMap &data, QString *errorStrin } #ifdef QT_GUI_LIB -bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) const +bool PersistentSettingsWriter::save(const Store &data, QWidget *parent) const { QString errorString; const bool success = save(data, &errorString); @@ -432,12 +432,12 @@ FilePath PersistentSettingsWriter::fileName() const { return m_fileName; } //** * @brief Set contents of file (e.g. from data read from it). */ -void PersistentSettingsWriter::setContents(const QVariantMap &data) +void PersistentSettingsWriter::setContents(const Store &data) { m_savedData = data; } -bool PersistentSettingsWriter::write(const QVariantMap &data, QString *errorString) const +bool PersistentSettingsWriter::write(const Store &data, QString *errorString) const { m_fileName.parentDir().ensureWritableDir(); FileSaver saver(m_fileName, QIODevice::Text); @@ -453,8 +453,8 @@ bool PersistentSettingsWriter::write(const QVariantMap &data, QString *errorStri QCoreApplication::applicationVersion(), QDateTime::currentDateTime().toString(Qt::ISODate))); w.writeStartElement(ctx.qtCreatorElement); - const QVariantMap::const_iterator cend = data.constEnd(); - for (QVariantMap::const_iterator it = data.constBegin(); it != cend; ++it) { + const Store::const_iterator cend = data.constEnd(); + for (Store::const_iterator it = data.constBegin(); it != cend; ++it) { w.writeStartElement(ctx.dataElement); w.writeTextElement(ctx.variableElement, it.key()); writeVariantValue(w, ctx, it.value()); diff --git a/src/libs/utils/persistentsettings.h b/src/libs/utils/persistentsettings.h index 7e07f0237c6..4997433ef68 100644 --- a/src/libs/utils/persistentsettings.h +++ b/src/libs/utils/persistentsettings.h @@ -6,6 +6,7 @@ #include "utils_global.h" #include "filepath.h" +#include "store.h" #include @@ -19,13 +20,13 @@ class QTCREATOR_UTILS_EXPORT PersistentSettingsReader { public: PersistentSettingsReader(); - QVariant restoreValue(const QString &variable, const QVariant &defaultValue = QVariant()) const; - QVariantMap restoreValues() const; + QVariant restoreValue(const Key &variable, const QVariant &defaultValue = {}) const; + Store restoreValues() const; bool load(const FilePath &fileName); FilePath filePath(); private: - QMap m_valueMap; + Store m_valueMap; FilePath m_filePath; }; @@ -34,21 +35,21 @@ class QTCREATOR_UTILS_EXPORT PersistentSettingsWriter public: PersistentSettingsWriter(const FilePath &fileName, const QString &docType); - bool save(const QVariantMap &data, QString *errorString) const; + bool save(const Store &data, QString *errorString) const; #ifdef QT_GUI_LIB - bool save(const QVariantMap &data, QWidget *parent) const; + bool save(const Store &data, QWidget *parent) const; #endif FilePath fileName() const; - void setContents(const QVariantMap &data); + void setContents(const Store &data); private: - bool write(const QVariantMap &data, QString *errorString) const; + bool write(const Store &data, QString *errorString) const; const FilePath m_fileName; const QString m_docType; - mutable QMap m_savedData; + mutable Store m_savedData; }; } // namespace Utils diff --git a/src/libs/utils/settingsaccessor.cpp b/src/libs/utils/settingsaccessor.cpp index 275290674fd..09ea90033f2 100644 --- a/src/libs/utils/settingsaccessor.cpp +++ b/src/libs/utils/settingsaccessor.cpp @@ -46,9 +46,9 @@ SettingsAccessor::~SettingsAccessor() = default; /*! * Restore settings from disk and report any issues in a message box centered on \a parent. */ -QVariantMap SettingsAccessor::restoreSettings(QWidget *parent) const +Store SettingsAccessor::restoreSettings(QWidget *parent) const { - QTC_ASSERT(!m_baseFilePath.isEmpty(), return QVariantMap()); + QTC_ASSERT(!m_baseFilePath.isEmpty(), return Store()); return restoreSettings(m_baseFilePath, parent); } @@ -56,7 +56,7 @@ QVariantMap SettingsAccessor::restoreSettings(QWidget *parent) const /*! * Save \a data to disk and report any issues in a message box centered on \a parent. */ -bool SettingsAccessor::saveSettings(const QVariantMap &data, QWidget *parent) const +bool SettingsAccessor::saveSettings(const Store &data, QWidget *parent) const { QTC_CHECK(!m_docType.isEmpty()); QTC_CHECK(!m_applicationDisplayName.isEmpty()); @@ -83,14 +83,14 @@ SettingsAccessor::RestoreData SettingsAccessor::readData(const FilePath &path, Q * Store the \a data in \a path on disk. Do all the necessary preprocessing of the data. */ std::optional SettingsAccessor::writeData(const FilePath &path, - const QVariantMap &data, + const Store &data, QWidget *parent) const { Q_UNUSED(parent) return writeFile(path, prepareToWriteSettings(data)); } -QVariantMap SettingsAccessor::restoreSettings(const FilePath &settingsPath, QWidget *parent) const +Store SettingsAccessor::restoreSettings(const FilePath &settingsPath, QWidget *parent) const { QTC_CHECK(!m_docType.isEmpty()); QTC_CHECK(!m_applicationDisplayName.isEmpty()); @@ -99,7 +99,7 @@ QVariantMap SettingsAccessor::restoreSettings(const FilePath &settingsPath, QWid const ProceedInfo pi = result.hasIssue() ? reportIssues(result.issue.value(), result.path, parent) : ProceedInfo::Continue; - return pi == ProceedInfo::DiscardAndContinue ? QVariantMap() : result.data; + return pi == ProceedInfo::DiscardAndContinue ? Store() : result.data; } /*! @@ -116,7 +116,7 @@ SettingsAccessor::RestoreData SettingsAccessor::readFile(const FilePath &path) c .arg(path.toUserOutput()), Issue::Type::ERROR)); } - const QVariantMap data = reader.restoreValues(); + const Store data = reader.restoreValues(); if (!m_readOnly && path == m_baseFilePath) { if (!m_writer) m_writer = std::make_unique(m_baseFilePath, m_docType); @@ -132,7 +132,7 @@ SettingsAccessor::RestoreData SettingsAccessor::readFile(const FilePath &path) c * This method does not do *any* processing of the file contents. */ std::optional SettingsAccessor::writeFile(const FilePath &path, - const QVariantMap &data) const + const Store &data) const { if (data.isEmpty()) { return Issue(Tr::tr("Failed to Write File"), @@ -175,7 +175,7 @@ SettingsAccessor::reportIssues(const Issue &issue, const FilePath &path, QWidget /*! * This method is called right after reading data from disk and modifies \a data. */ -QVariantMap SettingsAccessor::preprocessReadSettings(const QVariantMap &data) const +Store SettingsAccessor::preprocessReadSettings(const Store &data) const { return data; } @@ -183,7 +183,7 @@ QVariantMap SettingsAccessor::preprocessReadSettings(const QVariantMap &data) co /*! * This method is called right before writing data to disk and modifies \a data. */ -QVariantMap SettingsAccessor::prepareToWriteSettings(const QVariantMap &data) const +Store SettingsAccessor::prepareToWriteSettings(const Store &data) const { return data; } @@ -212,9 +212,9 @@ int BackUpStrategy::compare(const SettingsAccessor::RestoreData &data1, return 0; } -std::optional BackUpStrategy::backupName(const QVariantMap &oldData, +std::optional BackUpStrategy::backupName(const Store &oldData, const FilePath &path, - const QVariantMap &data) const + const Store &data) const { if (oldData == data) return std::nullopt; @@ -230,7 +230,7 @@ BackingUpSettingsAccessor::readData(const FilePath &path, QWidget *parent) const { const FilePaths fileList = readFileCandidates(path); if (fileList.isEmpty()) // No settings found at all. - return RestoreData(path, QVariantMap()); + return RestoreData(path, Store()); RestoreData result = bestReadFileData(fileList, parent); if (result.path.isEmpty()) @@ -253,7 +253,7 @@ BackingUpSettingsAccessor::readData(const FilePath &path, QWidget *parent) const } std::optional BackingUpSettingsAccessor::writeData(const FilePath &path, - const QVariantMap &data, + const Store &data, QWidget *parent) const { if (data.isEmpty()) @@ -290,7 +290,7 @@ BackingUpSettingsAccessor::bestReadFileData(const FilePaths &candidates, QWidget return bestMatch; } -void BackingUpSettingsAccessor::backupFile(const FilePath &path, const QVariantMap &data, +void BackingUpSettingsAccessor::backupFile(const FilePath &path, const Store &data, QWidget *parent) const { RestoreData oldSettings = SettingsAccessor::readData(path, parent); @@ -331,9 +331,9 @@ int VersionedBackUpStrategy::compare(const SettingsAccessor::RestoreData &data1, return -1; } -std::optional VersionedBackUpStrategy::backupName(const QVariantMap &oldData, +std::optional VersionedBackUpStrategy::backupName(const Store &oldData, const FilePath &path, - const QVariantMap &data) const + const Store &data) const { Q_UNUSED(data) FilePath backupName = path; @@ -374,7 +374,7 @@ QString VersionUpgrader::backupExtension() const /*! * Performs a simple renaming of the listed keys in \a changes recursively on \a map. */ -QVariantMap VersionUpgrader::renameKeys(const QList &changes, QVariantMap map) const +Store VersionUpgrader::renameKeys(const QList &changes, Store map) const { for (const Change &change : changes) { const auto oldSetting = map.constFind(change.first); @@ -384,11 +384,11 @@ QVariantMap VersionUpgrader::renameKeys(const QList &changes, QVariantMa } } - QVariantMap::iterator i = map.begin(); + Store::iterator i = map.begin(); while (i != map.end()) { QVariant v = i.value(); if (v.type() == QVariant::Map) - i.value() = renameKeys(changes, v.toMap()); + i.value() = renameKeys(changes, v.value()); ++i; } @@ -433,9 +433,9 @@ SettingsAccessor::RestoreData UpgradingSettingsAccessor::readData(const FilePath return upgradeSettings(BackingUpSettingsAccessor::readData(path, parent), currentVersion()); } -QVariantMap UpgradingSettingsAccessor::prepareToWriteSettings(const QVariantMap &data) const +Store UpgradingSettingsAccessor::prepareToWriteSettings(const Store &data) const { - QVariantMap tmp = BackingUpSettingsAccessor::prepareToWriteSettings(data); + Store tmp = BackingUpSettingsAccessor::prepareToWriteSettings(data); setVersionInMap(tmp,currentVersion()); if (!m_id.isEmpty()) @@ -639,7 +639,7 @@ MergingSettingsAccessor::mergeSettings(const SettingsAccessor::RestoreData &main = [this](const SettingsMergeData &global, const SettingsMergeData &local) { return merge(global, local); }; - const QVariantMap result = mergeQVariantMaps(main.data, secondary.data, mergeFunction).toMap(); + const Store result = mergeQVariantMaps(main.data, secondary.data, mergeFunction).value(); // Update from the base version to Creator's version. return RestoreData(main.path, postprocessMerge(main.data, secondary.data, result)); @@ -653,9 +653,9 @@ bool MergingSettingsAccessor::isHouseKeepingKey(const QString &key) return key == VERSION_KEY || key == ORIGINAL_VERSION_KEY || key == SETTINGS_ID_KEY; } -QVariantMap MergingSettingsAccessor::postprocessMerge(const QVariantMap &main, - const QVariantMap &secondary, - const QVariantMap &result) const +Store MergingSettingsAccessor::postprocessMerge(const Store &main, + const Store &secondary, + const Store &result) const { Q_UNUSED(main) Q_UNUSED(secondary) @@ -666,56 +666,56 @@ QVariantMap MergingSettingsAccessor::postprocessMerge(const QVariantMap &main, // Helper functions: // -------------------------------------------------------------------- -int versionFromMap(const QVariantMap &data) +int versionFromMap(const Store &data) { return data.value(VERSION_KEY, -1).toInt(); } -int originalVersionFromMap(const QVariantMap &data) +int originalVersionFromMap(const Store &data) { return data.value(ORIGINAL_VERSION_KEY, versionFromMap(data)).toInt(); } -QByteArray settingsIdFromMap(const QVariantMap &data) +QByteArray settingsIdFromMap(const Store &data) { return data.value(SETTINGS_ID_KEY).toByteArray(); } -void setOriginalVersionInMap(QVariantMap &data, int version) +void setOriginalVersionInMap(Store &data, int version) { data.insert(ORIGINAL_VERSION_KEY, version); } -void setVersionInMap(QVariantMap &data, int version) +void setVersionInMap(Store &data, int version) { data.insert(VERSION_KEY, version); } -void setSettingsIdInMap(QVariantMap &data, const QByteArray &id) +void setSettingsIdInMap(Store &data, const QByteArray &id) { data.insert(SETTINGS_ID_KEY, id); } -static QVariant mergeQVariantMapsRecursion(const QVariantMap &mainTree, const QVariantMap &secondaryTree, +static QVariant mergeQVariantMapsRecursion(const Store &mainTree, const Store &secondaryTree, const QString &keyPrefix, - const QVariantMap &mainSubtree, const QVariantMap &secondarySubtree, + const Store &mainSubtree, const Store &secondarySubtree, const SettingsMergeFunction &merge) { - QVariantMap result; - const QList allKeys = filteredUnique(mainSubtree.keys() + secondarySubtree.keys()); + Store result; + const QList allKeys = filteredUnique(mainSubtree.keys() + secondarySubtree.keys()); - MergingSettingsAccessor::SettingsMergeData global = {mainTree, secondaryTree, QString()}; - MergingSettingsAccessor::SettingsMergeData local = {mainSubtree, secondarySubtree, QString()}; + MergingSettingsAccessor::SettingsMergeData global = {mainTree, secondaryTree, Key()}; + MergingSettingsAccessor::SettingsMergeData local = {mainSubtree, secondarySubtree, Key()}; - for (const QString &key : allKeys) { + for (const Key &key : allKeys) { global.key = keyPrefix + key; local.key = key; - std::optional> mergeResult = merge(global, local); + std::optional> mergeResult = merge(global, local); if (!mergeResult) continue; - QPair kv = mergeResult.value(); + QPair kv = mergeResult.value(); if (kv.second.type() == QVariant::Map) { const QString newKeyPrefix = keyPrefix + kv.first + '/'; @@ -727,10 +727,10 @@ static QVariant mergeQVariantMapsRecursion(const QVariantMap &mainTree, const QV result.insert(kv.first, kv.second); } - return result; + return QVariant::fromValue(result); } -QVariant mergeQVariantMaps(const QVariantMap &mainTree, const QVariantMap &secondaryTree, +QVariant mergeQVariantMaps(const Store &mainTree, const Store &secondaryTree, const SettingsMergeFunction &merge) { return mergeQVariantMapsRecursion(mainTree, secondaryTree, QString(), diff --git a/src/libs/utils/settingsaccessor.h b/src/libs/utils/settingsaccessor.h index 683743ac62f..b09c0958a3d 100644 --- a/src/libs/utils/settingsaccessor.h +++ b/src/libs/utils/settingsaccessor.h @@ -6,10 +6,10 @@ #include "utils_global.h" #include "filepath.h" +#include "store.h" #include #include -#include #include #include @@ -20,25 +20,25 @@ namespace Utils { // Helper: // ----------------------------------------------------------------------------- -QTCREATOR_UTILS_EXPORT int versionFromMap(const QVariantMap &data); -QTCREATOR_UTILS_EXPORT int originalVersionFromMap(const QVariantMap &data); -QTCREATOR_UTILS_EXPORT QByteArray settingsIdFromMap(const QVariantMap &data); +QTCREATOR_UTILS_EXPORT int versionFromMap(const Store &data); +QTCREATOR_UTILS_EXPORT int originalVersionFromMap(const Store &data); +QTCREATOR_UTILS_EXPORT QByteArray settingsIdFromMap(const Store &data); -QTCREATOR_UTILS_EXPORT void setVersionInMap(QVariantMap &data, int version); -QTCREATOR_UTILS_EXPORT void setOriginalVersionInMap(QVariantMap &data, int version); -QTCREATOR_UTILS_EXPORT void setSettingsIdInMap(QVariantMap &data, const QByteArray &id); +QTCREATOR_UTILS_EXPORT void setVersionInMap(Store &data, int version); +QTCREATOR_UTILS_EXPORT void setOriginalVersionInMap(Store &data, int version); +QTCREATOR_UTILS_EXPORT void setSettingsIdInMap(Store &data, const QByteArray &id); // -------------------------------------------------------------------- // Helpers: // -------------------------------------------------------------------- -QTCREATOR_UTILS_EXPORT int versionFromMap(const QVariantMap &data); -QTCREATOR_UTILS_EXPORT int originalVersionFromMap(const QVariantMap &data); -QTCREATOR_UTILS_EXPORT QByteArray settingsIdFromMap(const QVariantMap &data); +QTCREATOR_UTILS_EXPORT int versionFromMap(const Store &data); +QTCREATOR_UTILS_EXPORT int originalVersionFromMap(const Store &data); +QTCREATOR_UTILS_EXPORT QByteArray settingsIdFromMap(const Store &data); -QTCREATOR_UTILS_EXPORT void setVersionInMap(QVariantMap &data, int version); -QTCREATOR_UTILS_EXPORT void setOriginalVersionInMap(QVariantMap &data, int version); -QTCREATOR_UTILS_EXPORT void setSettingsIdInMap(QVariantMap &data, const QByteArray &id); +QTCREATOR_UTILS_EXPORT void setVersionInMap(Store &data, int version); +QTCREATOR_UTILS_EXPORT void setOriginalVersionInMap(Store &data, int version); +QTCREATOR_UTILS_EXPORT void setSettingsIdInMap(Store &data, const QByteArray &id); class PersistentSettingsWriter; using SettingsMergeResult = std::optional>; @@ -76,7 +76,7 @@ public: class RestoreData { public: RestoreData() = default; - RestoreData(const FilePath &path, const QVariantMap &data) : path{path}, data{data} { } + RestoreData(const FilePath &path, const Store &data) : path{path}, data{data} { } RestoreData(const QString &title, const QString &message, const Issue::Type type) : RestoreData(Issue(title, message, type)) { } @@ -87,12 +87,12 @@ public: bool hasWarning() const { return hasIssue() && issue.value().type == Issue::Type::WARNING; } FilePath path; - QVariantMap data; + Store data; std::optional issue; }; - QVariantMap restoreSettings(QWidget *parent) const; - bool saveSettings(const QVariantMap &data, QWidget *parent) const; + Store restoreSettings(QWidget *parent) const; + bool saveSettings(const Store &data, QWidget *parent) const; void setBaseFilePath(const FilePath &baseFilePath) { m_baseFilePath = baseFilePath; } void setReadOnly() { m_readOnly = true; } @@ -100,7 +100,7 @@ public: virtual RestoreData readData(const FilePath &path, QWidget *parent) const; virtual std::optional writeData(const FilePath &path, - const QVariantMap &data, + const Store &data, QWidget *parent) const; void setDocType(const QString &docType) { m_docType = docType; } @@ -108,14 +108,14 @@ public: protected: // Report errors: - QVariantMap restoreSettings(const FilePath &settingsPath, QWidget *parent) const; + Store restoreSettings(const FilePath &settingsPath, QWidget *parent) const; static ProceedInfo reportIssues(const Issue &issue, const FilePath &path, QWidget *parent); - virtual QVariantMap preprocessReadSettings(const QVariantMap &data) const; - virtual QVariantMap prepareToWriteSettings(const QVariantMap &data) const; + virtual Store preprocessReadSettings(const Store &data) const; + virtual Store prepareToWriteSettings(const Store &data) const; virtual RestoreData readFile(const FilePath &path) const; - virtual std::optional writeFile(const FilePath &path, const QVariantMap &data) const; + virtual std::optional writeFile(const FilePath &path, const Store &data) const; QString m_docType; QString m_applicationDisplayName; @@ -141,9 +141,9 @@ public: virtual int compare(const SettingsAccessor::RestoreData &data1, const SettingsAccessor::RestoreData &data2) const; - virtual std::optional backupName(const QVariantMap &oldData, + virtual std::optional backupName(const Store &oldData, const FilePath &path, - const QVariantMap &data) const; + const Store &data) const; }; class QTCREATOR_UTILS_EXPORT BackingUpSettingsAccessor : public SettingsAccessor @@ -153,7 +153,7 @@ public: RestoreData readData(const FilePath &path, QWidget *parent) const override; std::optional writeData(const FilePath &path, - const QVariantMap &data, + const Store &data, QWidget *parent) const override; BackUpStrategy *strategy() const { return m_strategy.get(); } @@ -162,7 +162,7 @@ public: private: FilePaths readFileCandidates(const FilePath &path) const; RestoreData bestReadFileData(const FilePaths &candidates, QWidget *parent) const; - void backupFile(const FilePath &path, const QVariantMap &data, QWidget *parent) const; + void backupFile(const FilePath &path, const Store &data, QWidget *parent) const; std::unique_ptr m_strategy; }; @@ -183,9 +183,9 @@ public: int compare(const SettingsAccessor::RestoreData &data1, const SettingsAccessor::RestoreData &data2) const override; - std::optional backupName(const QVariantMap &oldData, + std::optional backupName(const Store &oldData, const FilePath &path, - const QVariantMap &data) const override; + const Store &data) const override; const UpgradingSettingsAccessor *accessor() const { return m_accessor; } @@ -193,7 +193,7 @@ protected: const UpgradingSettingsAccessor *m_accessor = nullptr; }; -// Handles updating a QVariantMap from version() to version() + 1 +// Handles updating a Store from version() to version() + 1 class QTCREATOR_UTILS_EXPORT VersionUpgrader { public: @@ -203,11 +203,11 @@ public: int version() const; QString backupExtension() const; - virtual QVariantMap upgrade(const QVariantMap &data) = 0; + virtual Store upgrade(const Store &data) = 0; protected: using Change = QPair; - QVariantMap renameKeys(const QList &changes, QVariantMap map) const; + Store renameKeys(const QList &changes, Store map) const; private: const int m_version; @@ -233,7 +233,7 @@ public: RestoreData readData(const FilePath &path, QWidget *parent) const override; protected: - QVariantMap prepareToWriteSettings(const QVariantMap &data) const override; + Store prepareToWriteSettings(const Store &data) const override; void setSettingsId(const QByteArray &id) { m_id = id; } @@ -254,9 +254,9 @@ class QTCREATOR_UTILS_EXPORT MergingSettingsAccessor : public UpgradingSettingsA { public: struct SettingsMergeData { - QVariantMap main; - QVariantMap secondary; - QString key; + Store main; + Store secondary; + Key key; }; MergingSettingsAccessor(); @@ -273,8 +273,8 @@ protected: const SettingsMergeData &local) const = 0; static bool isHouseKeepingKey(const QString &key); - virtual QVariantMap postprocessMerge(const QVariantMap &main, const QVariantMap &secondary, - const QVariantMap &result) const; + virtual Store postprocessMerge(const Store &main, const Store &secondary, + const Store &result) const; private: std::unique_ptr m_secondaryAccessor; @@ -282,7 +282,7 @@ private: using SettingsMergeFunction = std::function; -QTCREATOR_UTILS_EXPORT QVariant mergeQVariantMaps(const QVariantMap &mainTree, const QVariantMap &secondaryTree, +QTCREATOR_UTILS_EXPORT QVariant mergeQVariantMaps(const Store &mainTree, const Store &secondaryTree, const SettingsMergeFunction &merge); } // namespace Utils diff --git a/src/plugins/texteditor/codestylepool.cpp b/src/plugins/texteditor/codestylepool.cpp index 573d5ea456e..30e74ecfca0 100644 --- a/src/plugins/texteditor/codestylepool.cpp +++ b/src/plugins/texteditor/codestylepool.cpp @@ -208,7 +208,7 @@ ICodeStylePreferences *CodeStylePool::loadCodeStyle(const FilePath &fileName) if (m.contains(QLatin1String(codeStyleDataKey))) { const QByteArray id = fileName.completeBaseName().toUtf8(); const QString displayName = reader.restoreValue(QLatin1String(displayNameKey)).toString(); - const QVariantMap map = reader.restoreValue(QLatin1String(codeStyleDataKey)).toMap(); + const Store map = reader.restoreValue(codeStyleDataKey).value(); if (d->m_factory) { codeStyle = d->m_factory->createCodeStyle(); codeStyle->setId(id); @@ -242,10 +242,10 @@ void CodeStylePool::saveCodeStyle(ICodeStylePreferences *codeStyle) const void CodeStylePool::exportCodeStyle(const FilePath &fileName, ICodeStylePreferences *codeStyle) const { - const QVariantMap map = codeStyle->toMap(); - const QVariantMap tmp = { + const Store map = codeStyle->toMap(); + const Store tmp = { {displayNameKey, codeStyle->displayName()}, - {codeStyleDataKey, map} + {codeStyleDataKey, QVariant::fromValue(map)} }; PersistentSettingsWriter writer(fileName, QLatin1String(codeStyleDocKey)); writer.save(tmp, Core::ICore::dialogParent()); diff --git a/src/plugins/texteditor/extraencodingsettings.cpp b/src/plugins/texteditor/extraencodingsettings.cpp index 91587f19464..dd724488ad8 100644 --- a/src/plugins/texteditor/extraencodingsettings.cpp +++ b/src/plugins/texteditor/extraencodingsettings.cpp @@ -38,7 +38,7 @@ void ExtraEncodingSettings::fromSettings(const Key &category) Utils::fromSettings(kGroupPostfix, Key(), Core::ICore::settings(), this); } -QVariantMap ExtraEncodingSettings::toMap() const +Store ExtraEncodingSettings::toMap() const { return { {kUtf8BomBehaviorKey, m_utf8BomSetting} diff --git a/src/plugins/texteditor/extraencodingsettings.h b/src/plugins/texteditor/extraencodingsettings.h index 7f64dd09938..6dcff332e4e 100644 --- a/src/plugins/texteditor/extraencodingsettings.h +++ b/src/plugins/texteditor/extraencodingsettings.h @@ -15,7 +15,7 @@ public: ExtraEncodingSettings(); ~ExtraEncodingSettings(); - void toSettings(const QString &category) const; + void toSettings(const Utils::Key &category) const; void fromSettings(const Utils::Key &category); Utils::Store toMap() const; diff --git a/src/plugins/texteditor/icodestylepreferences.h b/src/plugins/texteditor/icodestylepreferences.h index 1305e0679a6..450941997f8 100644 --- a/src/plugins/texteditor/icodestylepreferences.h +++ b/src/plugins/texteditor/icodestylepreferences.h @@ -65,7 +65,7 @@ public: void setCurrentDelegate(const QByteArray &id); void setSettingsSuffix(const Utils::Key &suffix); - void toSettings(const QString &category) const; + void toSettings(const Utils::Key &category) const; void fromSettings(const Utils::Key &category); // make below 2 protected?