diff options
author | hjk <hjk@qt.io> | 2023-08-23 18:18:46 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-08-24 08:51:00 +0000 |
commit | 621a2850d0ff084c5ebb119aae4fc96f6224b2ef (patch) | |
tree | 58e56f9071f69efa1a1ea84ec1d194baf2c9dbc9 | |
parent | 0490266723ac0424d1b44c907797038b2f6881e8 (diff) |
Utils etc: More use of Key and Store
Change-Id: Idd2d70617f775d783aee93a2fe82544ad335a739
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
-rw-r--r-- | src/libs/utils/persistentsettings.cpp | 4 | ||||
-rw-r--r-- | src/libs/utils/settingsaccessor.cpp | 15 | ||||
-rw-r--r-- | src/libs/utils/settingsaccessor.h | 6 | ||||
-rw-r--r-- | src/libs/utils/settingsutils.h | 2 | ||||
-rw-r--r-- | src/libs/utils/store.cpp | 10 | ||||
-rw-r--r-- | src/libs/utils/store.h | 7 | ||||
-rw-r--r-- | src/libs/utils/storekey.h | 17 | ||||
-rw-r--r-- | src/plugins/coreplugin/session.cpp | 24 | ||||
-rw-r--r-- | src/plugins/coreplugin/session.h | 8 | ||||
-rw-r--r-- | src/plugins/coreplugin/session_p.h | 5 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimactions.cpp | 4 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimactions.h | 23 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildaspects.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildsteplist.cpp | 14 | ||||
-rw-r--r-- | src/plugins/projectexplorer/customwizard/customwizardpage.cpp | 4 | ||||
-rw-r--r-- | src/plugins/serialterminal/serialoutputpane.cpp | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/codestylepool.cpp | 6 | ||||
-rw-r--r-- | tests/auto/utils/persistentsettings/tst_persistentsettings.cpp | 8 | ||||
-rw-r--r-- | tests/auto/utils/settings/tst_settings.cpp | 69 |
19 files changed, 137 insertions, 95 deletions
diff --git a/src/libs/utils/persistentsettings.cpp b/src/libs/utils/persistentsettings.cpp index d73d74387f5..c95ef555b84 100644 --- a/src/libs/utils/persistentsettings.cpp +++ b/src/libs/utils/persistentsettings.cpp @@ -217,7 +217,7 @@ bool ParseContext::handleStartElement(QXmlStreamReader &r) const QStringView name = r.name(); const Element e = element(name); if (e == VariableElement) { - m_currentVariableName = r.readElementText(); + m_currentVariableName = keyFromString(r.readElementText()); return false; } if (!ParseContext::isValueElement(e)) @@ -225,7 +225,7 @@ bool ParseContext::handleStartElement(QXmlStreamReader &r) const QXmlStreamAttributes attributes = r.attributes(); const Key key = attributes.hasAttribute(keyAttribute) ? - attributes.value(keyAttribute).toString() : Key(); + keyFromString(attributes.value(keyAttribute).toString()) : Key(); switch (e) { case SimpleValueElement: { // This reads away the end element, so, handle end element right here. diff --git a/src/libs/utils/settingsaccessor.cpp b/src/libs/utils/settingsaccessor.cpp index 09ea90033f2..06dd1354c3d 100644 --- a/src/libs/utils/settingsaccessor.cpp +++ b/src/libs/utils/settingsaccessor.cpp @@ -388,7 +388,7 @@ Store VersionUpgrader::renameKeys(const QList<Change> &changes, Store map) const while (i != map.end()) { QVariant v = i.value(); if (v.type() == QVariant::Map) - i.value() = renameKeys(changes, v.value<Store>()); + i.value() = QVariant::fromValue(renameKeys(changes, v.value<Store>())); ++i; } @@ -648,7 +648,7 @@ MergingSettingsAccessor::mergeSettings(const SettingsAccessor::RestoreData &main /*! * Returns true for housekeeping related keys. */ -bool MergingSettingsAccessor::isHouseKeepingKey(const QString &key) +bool MergingSettingsAccessor::isHouseKeepingKey(const Key &key) { return key == VERSION_KEY || key == ORIGINAL_VERSION_KEY || key == SETTINGS_ID_KEY; } @@ -697,7 +697,7 @@ void setSettingsIdInMap(Store &data, const QByteArray &id) } static QVariant mergeQVariantMapsRecursion(const Store &mainTree, const Store &secondaryTree, - const QString &keyPrefix, + const Key &keyPrefix, const Store &mainSubtree, const Store &secondarySubtree, const SettingsMergeFunction &merge) { @@ -718,10 +718,11 @@ static QVariant mergeQVariantMapsRecursion(const Store &mainTree, const Store &s QPair<Key, QVariant> kv = mergeResult.value(); if (kv.second.type() == QVariant::Map) { - const QString newKeyPrefix = keyPrefix + kv.first + '/'; + const Key newKeyPrefix = keyPrefix + kv.first + '/'; kv.second = mergeQVariantMapsRecursion(mainTree, secondaryTree, newKeyPrefix, - kv.second.toMap(), secondarySubtree.value(kv.first) - .toMap(), merge); + kv.second.value<Store>(), + secondarySubtree.value(kv.first).value<Store>(), + merge); } if (!kv.second.isNull()) result.insert(kv.first, kv.second); @@ -733,7 +734,7 @@ static QVariant mergeQVariantMapsRecursion(const Store &mainTree, const Store &s QVariant mergeQVariantMaps(const Store &mainTree, const Store &secondaryTree, const SettingsMergeFunction &merge) { - return mergeQVariantMapsRecursion(mainTree, secondaryTree, QString(), + return mergeQVariantMapsRecursion(mainTree, secondaryTree, Key(), mainTree, secondaryTree, merge); } diff --git a/src/libs/utils/settingsaccessor.h b/src/libs/utils/settingsaccessor.h index b09c0958a3d..b882fbaeb78 100644 --- a/src/libs/utils/settingsaccessor.h +++ b/src/libs/utils/settingsaccessor.h @@ -41,7 +41,7 @@ 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<QPair<QString, QVariant>>; +using SettingsMergeResult = std::optional<QPair<Utils::Key, QVariant>>; // -------------------------------------------------------------------- // SettingsAccessor: @@ -206,7 +206,7 @@ public: virtual Store upgrade(const Store &data) = 0; protected: - using Change = QPair<QLatin1String, QLatin1String>; + using Change = QPair<Key, Key>; Store renameKeys(const QList<Change> &changes, Store map) const; private: @@ -271,7 +271,7 @@ protected: virtual SettingsMergeResult merge(const SettingsMergeData &global, const SettingsMergeData &local) const = 0; - static bool isHouseKeepingKey(const QString &key); + static bool isHouseKeepingKey(const Key &key); virtual Store postprocessMerge(const Store &main, const Store &secondary, const Store &result) const; diff --git a/src/libs/utils/settingsutils.h b/src/libs/utils/settingsutils.h index 97d8f285a98..f2efa39de2e 100644 --- a/src/libs/utils/settingsutils.h +++ b/src/libs/utils/settingsutils.h @@ -19,7 +19,7 @@ void fromSettings(const Key &postFix, { Store map; s->beginGroup(category + postFix); - const KeyList keys = s->allKeys(); + const KeyList keys = keyListFromStringList(s->allKeys()); for (const Key &key : keys) map.insert(key, s->value(key)); s->endGroup(); diff --git a/src/libs/utils/store.cpp b/src/libs/utils/store.cpp index b343d165fab..8775bce4ab1 100644 --- a/src/libs/utils/store.cpp +++ b/src/libs/utils/store.cpp @@ -3,7 +3,17 @@ #include "store.h" +#include "algorithm.h" namespace Utils { +KeyList keyListFromStringList(const QStringList &list) +{ +#ifdef QTC_USE_STORE + return transform(list, [](const QString &str) { return str.toUtf8(); }); +#else + return list; +#endif +} + } // Utils diff --git a/src/libs/utils/store.h b/src/libs/utils/store.h index 7037f5b4a4e..2a4663a07f3 100644 --- a/src/libs/utils/store.h +++ b/src/libs/utils/store.h @@ -11,6 +11,13 @@ namespace Utils { using KeyList = QList<Key>; + +#ifdef QTC_USE_STORE using Store = QMap<Key, QVariant>; +#else +using Store = QVariantMap; +#endif + +QTCREATOR_UTILS_EXPORT KeyList keyListFromStringList(const QStringList &list); } // Utils diff --git a/src/libs/utils/storekey.h b/src/libs/utils/storekey.h index 550bcda10cd..3b48d6c9c8b 100644 --- a/src/libs/utils/storekey.h +++ b/src/libs/utils/storekey.h @@ -3,10 +3,27 @@ #pragma once +#include "utils_global.h" + #include <QString> namespace Utils { +// Opt-in to new classes during the transition phase. +// #define QTC_USE_STORE + +#ifdef QTC_USE_STORE + +using Key = QByteArray; + +inline Key keyFromString(const QString &str) { return str.toUtf8(); } + +#else + using Key = QString; +inline Key keyFromString(const QString &str) { return str; } + +#endif + } // Utils diff --git a/src/plugins/coreplugin/session.cpp b/src/plugins/coreplugin/session.cpp index 7954b50e341..67b09d0ac45 100644 --- a/src/plugins/coreplugin/session.cpp +++ b/src/plugins/coreplugin/session.cpp @@ -156,7 +156,7 @@ bool SessionManager::isDefaultSession(const QString &session) void SessionManager::saveActiveMode(Id mode) { if (mode != Core::Constants::MODE_WELCOME) - setValue(QLatin1String("ActiveMode"), mode.toString()); + setValue("ActiveMode", mode.toString()); } bool SessionManager::isLoadingSession() @@ -169,25 +169,25 @@ bool SessionManager::isLoadingSession() within the session file. */ -void SessionManager::setValue(const QString &name, const QVariant &value) +void SessionManager::setValue(const Key &name, const QVariant &value) { if (sb_d->m_values.value(name) == value) return; sb_d->m_values.insert(name, value); } -QVariant SessionManager::value(const QString &name) +QVariant SessionManager::value(const Key &name) { auto it = sb_d->m_values.constFind(name); return (it == sb_d->m_values.constEnd()) ? QVariant() : *it; } -void SessionManager::setSessionValue(const QString &name, const QVariant &value) +void SessionManager::setSessionValue(const Key &name, const QVariant &value) { sb_d->m_sessionValues.insert(name, value); } -QVariant SessionManager::sessionValue(const QString &name, const QVariant &defaultValue) +QVariant SessionManager::sessionValue(const Key &name, const QVariant &defaultValue) { auto it = sb_d->m_sessionValues.constFind(name); return (it == sb_d->m_sessionValues.constEnd()) ? defaultValue : *it; @@ -488,16 +488,16 @@ void SessionManagerPrivate::updateSessionMenu() void SessionManagerPrivate::restoreValues(const PersistentSettingsReader &reader) { - const QStringList keys = reader.restoreValue(QLatin1String("valueKeys")).toStringList(); - for (const QString &key : keys) { - QVariant value = reader.restoreValue(QLatin1String("value-") + key); + const KeyList keys = keyListFromStringList(reader.restoreValue("valueKeys").toStringList()); + for (const Key &key : keys) { + QVariant value = reader.restoreValue("value-" + key); m_values.insert(key, value); } } void SessionManagerPrivate::restoreSessionValues(const PersistentSettingsReader &reader) { - const QVariantMap values = reader.restoreValues(); + const Store values = reader.restoreValues(); // restore toplevel items that are not restored by restoreValues const auto end = values.constEnd(); for (auto it = values.constBegin(); it != end; ++it) { @@ -680,7 +680,7 @@ bool SessionManager::saveSession() emit SessionManager::instance()->aboutToSaveSession(); const FilePath filePath = SessionManager::sessionNameToFileName(sb_d->m_sessionName); - QVariantMap data; + Store data; // See the explanation at loadSession() for how we handle the implicit default session. if (SessionManager::isDefaultVirgin()) { @@ -712,12 +712,12 @@ bool SessionManager::saveSession() } const auto end = sb_d->m_values.constEnd(); - QStringList keys; + KeyList keys; for (auto it = sb_d->m_values.constBegin(); it != end; ++it) { data.insert("value-" + it.key(), it.value()); keys << it.key(); } - data.insert("valueKeys", keys); + data.insert("valueKeys", QVariant::fromValue(keys)); if (!sb_d->m_writer || sb_d->m_writer->fileName() != filePath) { delete sb_d->m_writer; diff --git a/src/plugins/coreplugin/session.h b/src/plugins/coreplugin/session.h index 30dc70edf4d..f0c433e1cdc 100644 --- a/src/plugins/coreplugin/session.h +++ b/src/plugins/coreplugin/session.h @@ -50,13 +50,13 @@ public: // Let other plugins store persistent values within the session file // These are settings that are also saved and loaded at startup, and are taken over // to the default session when switching from implicit to explicit default session - static void setValue(const QString &name, const QVariant &value); - static QVariant value(const QString &name); + static void setValue(const Utils::Key &name, const QVariant &value); + static QVariant value(const Utils::Key &name); // These are settings that are specific to a session and are not loaded // at startup and also not taken over to the default session when switching from implicit - static void setSessionValue(const QString &name, const QVariant &value); - static QVariant sessionValue(const QString &name, const QVariant &defaultValue = {}); + static void setSessionValue(const Utils::Key &name, const QVariant &value); + static QVariant sessionValue(const Utils::Key &name, const QVariant &defaultValue = {}); static bool isLoadingSession(); static void markSessionFileDirty(); diff --git a/src/plugins/coreplugin/session_p.h b/src/plugins/coreplugin/session_p.h index 20ceecbcbc3..880e51d4db4 100644 --- a/src/plugins/coreplugin/session_p.h +++ b/src/plugins/coreplugin/session_p.h @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include <utils/persistentsettings.h> +#include <utils/store.h> #include <QFutureInterface> @@ -43,8 +44,8 @@ public: mutable QHash<QString, QDateTime> m_sessionDateTimes; QHash<QString, QDateTime> m_lastActiveTimes; - QMap<QString, QVariant> m_values; - QMap<QString, QVariant> m_sessionValues; + QMap<Utils::Key, QVariant> m_values; + QMap<Utils::Key, QVariant> m_sessionValues; QFutureInterface<void> m_future; PersistentSettingsWriter *m_writer = nullptr; diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index 77707500947..dca99a23b53 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -265,7 +265,7 @@ QString FakeVimSettings::trySetValue(const QString &name, const QString &value) void FakeVimSettings::setup(FvBaseAspect *aspect, const QVariant &value, - const QString &settingsKey, + const Key &settingsKey, const QString &shortName, const QString &labelText) { @@ -282,7 +282,7 @@ void FakeVimSettings::setup(FvBaseAspect *aspect, Q_UNUSED(labelText) #endif - const QString longName = settingsKey.toLower(); + const Key longName = settingsKey.toLower(); if (!longName.isEmpty()) { m_nameToAspect[longName] = aspect; m_aspectToName[aspect] = longName; diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h index 1d72080d9b2..18baecafecf 100644 --- a/src/plugins/fakevim/fakevimactions.h +++ b/src/plugins/fakevim/fakevimactions.h @@ -3,13 +3,15 @@ #pragma once -#ifndef FAKEVIM_STANDALONE +#ifdef FAKEVIM_STANDALONE -#include <coreplugin/dialogs/ioptionspage.h> +#include <utils/store.h> + +namespace Utils { class FilePath {}; } #else -namespace Utils { class FilePath {}; } +#include <coreplugin/dialogs/ioptionspage.h> #endif @@ -32,8 +34,11 @@ public: virtual void setDefaultVariantValue(const QVariant &) {} virtual QVariant variantValue() const { return {}; } virtual QVariant defaultVariantValue() const { return {}; } - +#ifdef QTC_USE_STORE + void setSettingsKey(const QString &group, const QByteArray &key); +#else void setSettingsKey(const QString &group, const QString &key); +#endif QString settingsKey() const; void setCheckable(bool) {} void setDisplayName(const QString &) {} @@ -155,12 +160,12 @@ public: private: void setup(FvBaseAspect *aspect, const QVariant &value, - const QString &settingsKey, - const QString &shortName, - const QString &label); + const Utils::Key &settingsKey, + const QString &shortName, + const QString &label); - QHash<QString, FvBaseAspect *> m_nameToAspect; - QHash<FvBaseAspect *, QString> m_aspectToName; + QHash<Utils::Key, FvBaseAspect *> m_nameToAspect; + QHash<FvBaseAspect *, Utils::Key> m_aspectToName; }; FakeVimSettings &settings(); diff --git a/src/plugins/projectexplorer/buildaspects.cpp b/src/plugins/projectexplorer/buildaspects.cpp index 42efc75da6f..a108558f360 100644 --- a/src/plugins/projectexplorer/buildaspects.cpp +++ b/src/plugins/projectexplorer/buildaspects.cpp @@ -72,7 +72,7 @@ BuildDirectoryAspect::~BuildDirectoryAspect() void BuildDirectoryAspect::allowInSourceBuilds(const FilePath &sourceDir) { d->sourceDir = sourceDir; - makeCheckable(CheckBoxPlacement::Top, Tr::tr("Shadow build:"), QString()); + makeCheckable(CheckBoxPlacement::Top, Tr::tr("Shadow build:"), Key()); setChecked(d->sourceDir != expandedValue()); } diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp index 085f0cd9bb8..805c1fcf5b6 100644 --- a/src/plugins/projectexplorer/buildsteplist.cpp +++ b/src/plugins/projectexplorer/buildsteplist.cpp @@ -52,17 +52,17 @@ Store BuildStepList::toMap() const const char CONFIGURATION_ID_KEY[] = "ProjectExplorer.ProjectConfiguration.Id"; const char DISPLAY_NAME_KEY[] = "ProjectExplorer.ProjectConfiguration.DisplayName"; const char DEFAULT_DISPLAY_NAME_KEY[] = "ProjectExplorer.ProjectConfiguration.DefaultDisplayName"; - map.insert(QLatin1String(CONFIGURATION_ID_KEY), m_id.toSetting()); - map.insert(QLatin1String(DISPLAY_NAME_KEY), displayName()); - map.insert(QLatin1String(DEFAULT_DISPLAY_NAME_KEY), displayName()); + map.insert(CONFIGURATION_ID_KEY, m_id.toSetting()); + map.insert(DISPLAY_NAME_KEY, displayName()); + map.insert(DEFAULT_DISPLAY_NAME_KEY, displayName()); } // Save build steps - map.insert(QString::fromLatin1(STEPS_COUNT_KEY), m_steps.count()); + map.insert(STEPS_COUNT_KEY, m_steps.count()); for (int i = 0; i < m_steps.count(); ++i) { Store data; m_steps.at(i)->toMap(data); - map.insert(QString::fromLatin1(STEPS_PREFIX) + QString::number(i), data); + map.insert(STEPS_PREFIX + Key::number(i), data); } return map; @@ -109,9 +109,9 @@ bool BuildStepList::fromMap(const Store &map) const QList<BuildStepFactory *> factories = BuildStepFactory::allBuildStepFactories(); - int maxSteps = map.value(QString::fromLatin1(STEPS_COUNT_KEY), 0).toInt(); + int maxSteps = map.value(STEPS_COUNT_KEY, 0).toInt(); for (int i = 0; i < maxSteps; ++i) { - Store bsData(map.value(QString::fromLatin1(STEPS_PREFIX) + QString::number(i)).toMap()); + Store bsData(map.value(STEPS_PREFIX + Key::number(i)).toMap()); if (bsData.isEmpty()) { qWarning() << "No step data found for" << i << "(continuing)."; continue; diff --git a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp index d25d59947e9..1e574b4815f 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp @@ -225,7 +225,7 @@ QWidget *CustomWizardFieldPage::registerPathChooser(const QString &fieldName, pathChooser->setExpectedKind(PathChooser::Command); else if (expectedKind == QLatin1String("any")) pathChooser->setExpectedKind(PathChooser::Any); - pathChooser->setHistoryCompleter(QString::fromLatin1("PE.Custom.") + m_parameters->id.toString() + QLatin1Char('.') + field.name); + pathChooser->setHistoryCompleter("PE.Custom." + m_parameters->id.name() + '.' + field.name); registerField(fieldName, pathChooser, "path", SIGNAL(rawPathChanged(QString))); // Connect to completeChanged() for derived classes that reimplement isComplete() @@ -407,7 +407,7 @@ CustomWizardPage::CustomWizardPage(const QSharedPointer<CustomWizardContext> &ct CustomWizardFieldPage(ctx, parameters, parent), m_pathChooser(new PathChooser) { - m_pathChooser->setHistoryCompleter(QLatin1String("PE.ProjectDir.History")); + m_pathChooser->setHistoryCompleter("PE.ProjectDir.History"); addRow(Tr::tr("Path:"), m_pathChooser); connect(m_pathChooser, &PathChooser::validChanged, this, &QWizardPage::completeChanged); } diff --git a/src/plugins/serialterminal/serialoutputpane.cpp b/src/plugins/serialterminal/serialoutputpane.cpp index b343ea478ee..0f11ceb9a96 100644 --- a/src/plugins/serialterminal/serialoutputpane.cpp +++ b/src/plugins/serialterminal/serialoutputpane.cpp @@ -33,6 +33,8 @@ #include <QToolButton> #include <QVBoxLayout> +using namespace Utils; + namespace SerialTerminal { namespace Internal { @@ -277,7 +279,7 @@ void SerialOutputPane::createNewOutputWindow(SerialControl *rc) static int counter = 0; Utils::Id contextId = Utils::Id(Constants::C_SERIAL_OUTPUT).withSuffix(counter++); Core::Context context(contextId); - auto ow = new Core::OutputWindow(context, QString(), m_tabWidget); + auto ow = new Core::OutputWindow(context, Key(), m_tabWidget); using TextEditor::TextEditorSettings; auto fontSettingsChanged = [ow] { ow->setBaseFont(TextEditorSettings::fontSettings().font()); diff --git a/src/plugins/texteditor/codestylepool.cpp b/src/plugins/texteditor/codestylepool.cpp index 30e74ecfca0..23b8aaccf8f 100644 --- a/src/plugins/texteditor/codestylepool.cpp +++ b/src/plugins/texteditor/codestylepool.cpp @@ -204,10 +204,10 @@ ICodeStylePreferences *CodeStylePool::loadCodeStyle(const FilePath &fileName) ICodeStylePreferences *codeStyle = nullptr; PersistentSettingsReader reader; reader.load(fileName); - QVariantMap m = reader.restoreValues(); - if (m.contains(QLatin1String(codeStyleDataKey))) { + Store m = reader.restoreValues(); + if (m.contains(codeStyleDataKey)) { const QByteArray id = fileName.completeBaseName().toUtf8(); - const QString displayName = reader.restoreValue(QLatin1String(displayNameKey)).toString(); + const QString displayName = reader.restoreValue(displayNameKey).toString(); const Store map = reader.restoreValue(codeStyleDataKey).value<Store>(); if (d->m_factory) { codeStyle = d->m_factory->createCodeStyle(); diff --git a/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp b/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp index d64867aef09..e2fde299096 100644 --- a/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp +++ b/tests/auto/utils/persistentsettings/tst_persistentsettings.cpp @@ -19,9 +19,9 @@ private slots: void tst_readwrite(); }; -static const QVariantMap generateData() +static const Store generateData() { - QVariantMap result; + Store result; QByteArray barr("I am a byte array."); QString str("I am a string."); QColor color("#8b00d1"); @@ -44,7 +44,7 @@ void PersistentSettingsTest::tst_readwrite() qDebug() << "using" << fi.absoluteFilePath(); const FilePath filePath = FilePath::fromFileInfo(fi); PersistentSettingsWriter writer(filePath, "Narf"); - const QVariantMap originalData = generateData(); + const Store originalData = generateData(); QString error; bool success = writer.save(originalData, &error); QVERIFY2(success, error.toLocal8Bit()); @@ -54,7 +54,7 @@ void PersistentSettingsTest::tst_readwrite() success = reader.load(filePath); QVERIFY(success); - const QVariantMap restored = reader.restoreValues(); + const Store restored = reader.restoreValues(); QCOMPARE(restored.size(), originalData.size()); auto restoredEnd = restored.end(); for (auto it = originalData.cbegin(), end = originalData.cend(); it != end; ++it) { diff --git a/tests/auto/utils/settings/tst_settings.cpp b/tests/auto/utils/settings/tst_settings.cpp index d45d673e4d3..70637a6437b 100644 --- a/tests/auto/utils/settings/tst_settings.cpp +++ b/tests/auto/utils/settings/tst_settings.cpp @@ -13,9 +13,9 @@ using namespace Utils; const char TESTACCESSOR_APPLICATION_DN[] = "SettingsAccessor Test (Basic)"; const char TESTACCESSOR_DEFAULT_ID[] = "testId"; -QVariantMap generateExtraData() +Store generateExtraData() { - QVariantMap extra; + Store extra; extra.insert("Foo", "Bar"); extra.insert("Int", 42); return extra; @@ -28,14 +28,14 @@ QVariantMap generateExtraData() class TestVersionUpgrader : public Utils::VersionUpgrader { public: - TestVersionUpgrader(int version) : - Utils::VersionUpgrader(version, QString("v") + QString::number(version)) + TestVersionUpgrader(int version) + : VersionUpgrader(version, "v" + QString::number(version)) { } - QVariantMap upgrade(const QVariantMap &data) final + Store upgrade(const Store &data) final { - QVariantMap result = data; - result.insert(QString("VERSION_") + QString::number(version()), version()); + Store result = data; + result.insert("VERSION_" + Key::number(version()), version()); return result; } }; @@ -52,10 +52,10 @@ public: using Utils::MergingSettingsAccessor::addVersionUpgrader; - QHash<Utils::FilePath, QVariantMap> files() const { return m_files; } - void addFile(const Utils::FilePath &path, const QVariantMap &data) const { m_files.insert(path, data); } + QHash<Utils::FilePath, Store> files() const { return m_files; } + void addFile(const Utils::FilePath &path, const Store &data) const { m_files.insert(path, data); } Utils::FilePaths fileNames() const { return m_files.keys(); } - QVariantMap fileContents(const Utils::FilePath &path) const { return m_files.value(path); } + Store fileContents(const Utils::FilePath &path) const { return m_files.value(path); } protected: RestoreData readFile(const Utils::FilePath &path) const override @@ -71,7 +71,7 @@ protected: { Q_UNUSED(global) - const QString key = local.key; + const Key key = local.key; const QVariant main = local.main.value(key); const QVariant secondary = local.secondary.value(key); @@ -85,7 +85,7 @@ protected: return qMakePair(key, secondary); } - std::optional<Issue> writeFile(const Utils::FilePath &path, const QVariantMap &data) const override + std::optional<Issue> writeFile(const Utils::FilePath &path, const Store &data) const override { if (data.isEmpty()) { return Issue("Failed to Write File", "There was nothing to write.", @@ -97,7 +97,7 @@ protected: } private: - mutable QHash<Utils::FilePath, QVariantMap> m_files; + mutable QHash<Utils::FilePath, Store> m_files; }; // -------------------------------------------------------------------- @@ -200,10 +200,9 @@ private slots: void loadSettings_pickBest(); }; -static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray(), - const QVariantMap &extra = QVariantMap()) +static Store versionedMap(int version, const QByteArray &id = {}, const Store &extra = {}) { - QVariantMap result; + Store result; result.insert("Version", version); if (!id.isEmpty()) result.insert("EnvironmentId", id); @@ -213,13 +212,13 @@ static QVariantMap versionedMap(int version, const QByteArray &id = QByteArray() } static Utils::SettingsAccessor::RestoreData restoreData(const Utils::FilePath &path, - const QVariantMap &data) + const Store &data) { return Utils::SettingsAccessor::RestoreData(path, data); } //static Utils::SettingsAccessor::RestoreData restoreData(const QByteArray &path, -// const QVariantMap &data) +// const Store &data) //{ // return restoreData(Utils::FilePath::fromUtf8(path), data); //} @@ -366,7 +365,7 @@ void tst_SettingsAccessor::RestoreDataCompare_emptyMap() { const TestSettingsAccessor accessor; - Utils::SettingsAccessor::RestoreData a = restoreData("/foo/bar", QVariantMap()); + Utils::SettingsAccessor::RestoreData a = restoreData("/foo/bar", Store()); Utils::SettingsAccessor::RestoreData b = restoreData("/foo/baz", versionedMap(7, TESTACCESSOR_DEFAULT_ID)); QCOMPARE(accessor.strategy()->compare(a, b), 1); @@ -377,8 +376,8 @@ void tst_SettingsAccessor::RestoreDataCompare_twoEmptyMaps() { const TestSettingsAccessor accessor; - Utils::SettingsAccessor::RestoreData a = restoreData("/foo/bar", QVariantMap()); - Utils::SettingsAccessor::RestoreData b = restoreData("/foo/baz", QVariantMap()); + Utils::SettingsAccessor::RestoreData a = restoreData("/foo/bar", Store()); + Utils::SettingsAccessor::RestoreData b = restoreData("/foo/baz", Store()); QCOMPARE(accessor.strategy()->compare(a, b), 0); QCOMPARE(accessor.strategy()->compare(b, a), 0); @@ -544,7 +543,7 @@ void tst_SettingsAccessor::upgradeSettings_partialUpdate() void tst_SettingsAccessor::upgradeSettings_targetVersionTooOld() { const TestSettingsAccessor accessor; - const QVariantMap extra = generateExtraData(); + const Store extra = generateExtraData(); const int startVersion = 6; const Utils::SettingsAccessor::RestoreData input = restoreData(accessor.baseFilePath(), @@ -560,7 +559,7 @@ void tst_SettingsAccessor::upgradeSettings_targetVersionTooOld() void tst_SettingsAccessor::upgradeSettings_targetVersionTooNew() { const TestSettingsAccessor accessor; - const QVariantMap extra = generateExtraData(); + const Store extra = generateExtraData(); const int startVersion = 6; const Utils::SettingsAccessor::RestoreData input = restoreData(accessor.baseFilePath(), @@ -578,7 +577,7 @@ void tst_SettingsAccessor::upgradeSettings_targetVersionTooNew() void tst_SettingsAccessor::findIssues_ok() { const TestSettingsAccessor accessor; - const QVariantMap data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); + const Store data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); const Utils::FilePath path = "/foo/baz.user"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -589,7 +588,7 @@ void tst_SettingsAccessor::findIssues_ok() void tst_SettingsAccessor::findIssues_emptyData() { const TestSettingsAccessor accessor; - const QVariantMap data; + const Store data; const Utils::FilePath path = "/foo/bar.user"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -600,7 +599,7 @@ void tst_SettingsAccessor::findIssues_emptyData() void tst_SettingsAccessor::findIssues_tooNew() { const TestSettingsAccessor accessor; - const QVariantMap data = versionedMap(42, TESTACCESSOR_DEFAULT_ID); + const Store data = versionedMap(42, TESTACCESSOR_DEFAULT_ID); const Utils::FilePath path = "/foo/bar.user"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -611,7 +610,7 @@ void tst_SettingsAccessor::findIssues_tooNew() void tst_SettingsAccessor::findIssues_tooOld() { const TestSettingsAccessor accessor; - const QVariantMap data = versionedMap(2, TESTACCESSOR_DEFAULT_ID); + const Store data = versionedMap(2, TESTACCESSOR_DEFAULT_ID); const Utils::FilePath path = "/foo/bar.user"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -622,7 +621,7 @@ void tst_SettingsAccessor::findIssues_tooOld() void tst_SettingsAccessor::findIssues_wrongId() { const TestSettingsAccessor accessor; - const QVariantMap data = versionedMap(6, "foo"); + const Store data = versionedMap(6, "foo"); const Utils::FilePath path = "/foo/bar.user"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -633,7 +632,7 @@ void tst_SettingsAccessor::findIssues_wrongId() void tst_SettingsAccessor::findIssues_nonDefaultPath() { const TestSettingsAccessor accessor; - const QVariantMap data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); + const Store data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); const Utils::FilePath path = "/foo/bar.user.foobar"; const std::optional<Utils::SettingsAccessor::Issue> info = accessor.findIssues(data, path); @@ -646,12 +645,12 @@ void tst_SettingsAccessor::saveSettings() { const FilePath baseFile = "/tmp/foo/saveSettings"; const TestSettingsAccessor accessor(baseFile); - const QVariantMap data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); + const Store data = versionedMap(6, TESTACCESSOR_DEFAULT_ID); QVERIFY(accessor.saveSettings(data, nullptr)); QCOMPARE(accessor.files().count(), 1); - const QVariantMap read = accessor.fileContents(baseFile); + const Store read = accessor.fileContents(baseFile); QVERIFY(!read.isEmpty()); for (auto it = read.cbegin(); it != read.cend(); ++it) { @@ -667,13 +666,13 @@ void tst_SettingsAccessor::saveSettings() void tst_SettingsAccessor::loadSettings() { - const QVariantMap data = versionedMap(6, "loadSettings", generateExtraData()); + const Store data = versionedMap(6, "loadSettings", generateExtraData()); const FilePath path = "/tmp/foo/loadSettings"; const TestSettingsAccessor accessor(path, "loadSettings"); accessor.addFile(path, data); QCOMPARE(accessor.files().count(), 1); // Catch changes early:-) - const QVariantMap read = accessor.restoreSettings(nullptr); + const Store read = accessor.restoreSettings(nullptr); QCOMPARE(accessor.files().count(), 1); // no files were created QVERIFY(!read.isEmpty()); @@ -700,7 +699,7 @@ void tst_SettingsAccessor::loadSettings_pickBest() const TestSettingsAccessor accessor(path, "loadSettings"); accessor.addFile(path, versionedMap(10, "loadSettings", generateExtraData())); // too new - const QVariantMap data = versionedMap(7, "loadSettings", generateExtraData()); + const Store data = versionedMap(7, "loadSettings", generateExtraData()); accessor.addFile("/tmp/foo/loadSettings.foo", data); // pick this! accessor.addFile("/tmp/foo/loadSettings.foo1", versionedMap(8, "fooSettings", generateExtraData())); // wrong environment @@ -710,7 +709,7 @@ void tst_SettingsAccessor::loadSettings_pickBest() versionedMap(1, "loadSettings", generateExtraData())); // much too old QCOMPARE(accessor.files().count(), 5); // Catch changes early:-) - const QVariantMap read = accessor.restoreSettings(nullptr); + const Store read = accessor.restoreSettings(nullptr); QCOMPARE(accessor.files().count(), 5); // no new files QVERIFY(!read.isEmpty()); |