From b9f9d2574e9e3b7f14af47af6a4180b77b78f726 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 24 Aug 2023 16:14:26 +0200 Subject: [PATCH] Utils/ProjectExplorer: More Key and Store Change-Id: Ic9cc3a36b320c7413c362d1a1cdf024298d25027 Reviewed-by: Marcus Tillmanns --- src/libs/utils/settingsutils.h | 2 +- src/libs/utils/store.cpp | 13 ++-- src/libs/utils/store.h | 3 +- src/plugins/coreplugin/session.cpp | 2 +- src/plugins/projectexplorer/msvctoolchain.cpp | 17 ++-- src/plugins/projectexplorer/project.cpp | 38 ++++----- .../projectexplorer/projectmanager.cpp | 7 +- src/plugins/projectexplorer/runcontrol.cpp | 10 +-- src/plugins/projectexplorer/runcontrol.h | 6 +- .../projectexplorer/selectablefilesmodel.cpp | 6 +- .../projectexplorer/selectablefilesmodel.h | 5 +- src/plugins/projectexplorer/target.cpp | 8 +- src/plugins/projectexplorer/toolchain.cpp | 30 +++---- src/plugins/projectexplorer/toolchain.h | 12 +-- .../toolchainsettingsaccessor.cpp | 14 ++-- .../toolchainsettingsaccessor.h | 2 +- .../projectexplorer/userfileaccessor.cpp | 78 +++++++++---------- .../projectexplorer/userfileaccessor.h | 3 +- 18 files changed, 130 insertions(+), 126 deletions(-) diff --git a/src/libs/utils/settingsutils.h b/src/libs/utils/settingsutils.h index f2efa39de2e..694d17503dd 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 = keyListFromStringList(s->allKeys()); + const KeyList keys = keysFromStrings(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 8775bce4ab1..0fa2857742f 100644 --- a/src/libs/utils/store.cpp +++ b/src/libs/utils/store.cpp @@ -7,13 +7,14 @@ namespace Utils { -KeyList keyListFromStringList(const QStringList &list) +KeyList keysFromStrings(const QStringList &list) { -#ifdef QTC_USE_STORE - return transform(list, [](const QString &str) { return str.toUtf8(); }); -#else - return list; -#endif + return transform(list, &keyFromString); +} + +QStringList stringsFromKeys(const KeyList &list) +{ + return transform(list, &stringFromKey); } } // Utils diff --git a/src/libs/utils/store.h b/src/libs/utils/store.h index 2a4663a07f3..fdb4b36b301 100644 --- a/src/libs/utils/store.h +++ b/src/libs/utils/store.h @@ -18,6 +18,7 @@ using Store = QMap; using Store = QVariantMap; #endif -QTCREATOR_UTILS_EXPORT KeyList keyListFromStringList(const QStringList &list); +QTCREATOR_UTILS_EXPORT KeyList keysFromStrings(const QStringList &list); +QTCREATOR_UTILS_EXPORT QStringList stringsFromKeys(const KeyList &list); } // Utils diff --git a/src/plugins/coreplugin/session.cpp b/src/plugins/coreplugin/session.cpp index 67b09d0ac45..2ad04e71fb3 100644 --- a/src/plugins/coreplugin/session.cpp +++ b/src/plugins/coreplugin/session.cpp @@ -488,7 +488,7 @@ void SessionManagerPrivate::updateSessionMenu() void SessionManagerPrivate::restoreValues(const PersistentSettingsReader &reader) { - const KeyList keys = keyListFromStringList(reader.restoreValue("valueKeys").toStringList()); + const KeyList keys = keysFromStrings(reader.restoreValue("valueKeys").toStringList()); for (const Key &key : keys) { QVariant value = reader.restoreValue("value-" + key); m_values.insert(key, value); diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index e8f3292217a..ad73c5e041d 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -981,12 +981,11 @@ Abis MsvcToolChain::supportedAbis() const void MsvcToolChain::toMap(Store &data) const { ToolChain::toMap(data); - data.insert(QLatin1String(varsBatKeyC), m_vcvarsBat); + data.insert(varsBatKeyC, m_vcvarsBat); if (!m_varsBatArg.isEmpty()) - data.insert(QLatin1String(varsBatArgKeyC), m_varsBatArg); - Utils::EnvironmentItem::sort(&m_environmentModifications); - data.insert(QLatin1String(environModsKeyC), - Utils::EnvironmentItem::toVariantList(m_environmentModifications)); + data.insert(varsBatArgKeyC, m_varsBatArg); + EnvironmentItem::sort(&m_environmentModifications); + data.insert(environModsKeyC, EnvironmentItem::toVariantList(m_environmentModifications)); } void MsvcToolChain::fromMap(const Store &data) @@ -996,11 +995,11 @@ void MsvcToolChain::fromMap(const Store &data) g_availableMsvcToolchains.removeOne(this); return; } - m_vcvarsBat = QDir::fromNativeSeparators(data.value(QLatin1String(varsBatKeyC)).toString()); - m_varsBatArg = data.value(QLatin1String(varsBatArgKeyC)).toString(); + m_vcvarsBat = QDir::fromNativeSeparators(data.value(varsBatKeyC).toString()); + m_varsBatArg = data.value(varsBatArgKeyC).toString(); - m_environmentModifications = Utils::EnvironmentItem::itemsFromVariantList( - data.value(QLatin1String(environModsKeyC)).toList()); + m_environmentModifications = EnvironmentItem::itemsFromVariantList( + data.value(environModsKeyC).toList()); rescanForCompiler(); initEnvModWatcher(Utils::asyncRun(envModThreadPool(), &MsvcToolChain::environmentModifications, diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index e47a26a3dfb..a41f9b0be5d 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -184,7 +184,7 @@ public: Target *m_activeTarget = nullptr; EditorConfiguration m_editorConfiguration; Context m_projectLanguages; - QVariantMap m_pluginSettings; + Store m_pluginSettings; std::unique_ptr m_accessor; QHash>> m_generators; @@ -194,7 +194,7 @@ public: FilePath m_rootProjectDirectory; mutable QVector m_sortedNodeList; - QVariantMap m_extraData; + Store m_extraData; }; ProjectPrivate::~ProjectPrivate() @@ -635,7 +635,7 @@ void Project::saveSettings() if (!d->m_accessor) d->m_accessor = std::make_unique(this); if (!targets().isEmpty()) { - QVariantMap map; + Store map; toMap(map); d->m_accessor->saveSettings(map, ICore::dialogParent()); } @@ -645,7 +645,7 @@ Project::RestoreResult Project::restoreSettings(QString *errorMessage) { if (!d->m_accessor) d->m_accessor = std::make_unique(this); - QVariantMap map(d->m_accessor->restoreSettings(ICore::dialogParent())); + Store map(d->m_accessor->restoreSettings(ICore::dialogParent())); RestoreResult result = fromMap(map, errorMessage); if (result == RestoreResult::Ok) emit settingsLoaded(); @@ -681,7 +681,7 @@ FilePaths Project::files(const NodeMatcher &filter) const } /*! - Serializes all data into a QVariantMap. + Serializes all data into a Store. This map is then saved in the .user file of the project. Just put all your data into the map. @@ -695,14 +695,14 @@ void Project::toMap(Store &map) const { const QList ts = targets(); - map.insert(QLatin1String(ACTIVE_TARGET_KEY), ts.indexOf(d->m_activeTarget)); - map.insert(QLatin1String(TARGET_COUNT_KEY), ts.size()); + map.insert(ACTIVE_TARGET_KEY, ts.indexOf(d->m_activeTarget)); + map.insert(TARGET_COUNT_KEY, ts.size()); for (int i = 0; i < ts.size(); ++i) - map.insert(QString::fromLatin1(TARGET_KEY_PREFIX) + QString::number(i), ts.at(i)->toMap()); + map.insert(TARGET_KEY_PREFIX + Key::number(i), QVariant::fromValue(ts.at(i)->toMap())); - map.insert(QLatin1String(EDITOR_SETTINGS_KEY), d->m_editorConfiguration.toMap()); + map.insert(EDITOR_SETTINGS_KEY, QVariant::fromValue(d->m_editorConfiguration.toMap())); if (!d->m_pluginSettings.isEmpty()) - map.insert(QLatin1String(PLUGIN_SETTINGS_KEY), d->m_pluginSettings); + map.insert(PLUGIN_SETTINGS_KEY, QVariant::fromValue(d->m_pluginSettings)); } /*! @@ -767,19 +767,19 @@ ContainerNode *Project::containerNode() const Project::RestoreResult Project::fromMap(const Store &map, QString *errorMessage) { Q_UNUSED(errorMessage) - if (map.contains(QLatin1String(EDITOR_SETTINGS_KEY))) { - QVariantMap values(map.value(QLatin1String(EDITOR_SETTINGS_KEY)).toMap()); + if (map.contains(EDITOR_SETTINGS_KEY)) { + Store values(map.value(EDITOR_SETTINGS_KEY).value()); d->m_editorConfiguration.fromMap(values); } - if (map.contains(QLatin1String(PLUGIN_SETTINGS_KEY))) - d->m_pluginSettings = map.value(QLatin1String(PLUGIN_SETTINGS_KEY)).toMap(); + if (map.contains(PLUGIN_SETTINGS_KEY)) + d->m_pluginSettings = map.value(PLUGIN_SETTINGS_KEY).toMap(); bool ok; - int maxI(map.value(QLatin1String(TARGET_COUNT_KEY), 0).toInt(&ok)); + int maxI(map.value(TARGET_COUNT_KEY, 0).toInt(&ok)); if (!ok || maxI < 0) maxI = 0; - int active(map.value(QLatin1String(ACTIVE_TARGET_KEY), 0).toInt(&ok)); + int active(map.value(ACTIVE_TARGET_KEY, 0).toInt(&ok)); if (!ok || active < 0 || active >= maxI) active = 0; @@ -799,13 +799,13 @@ Project::RestoreResult Project::fromMap(const Store &map, QString *errorMessage) return RestoreResult::Ok; } -void Project::createTargetFromMap(const QVariantMap &map, int index) +void Project::createTargetFromMap(const Store &map, int index) { - const QString key = QString::fromLatin1(TARGET_KEY_PREFIX) + QString::number(index); + const Key key = TARGET_KEY_PREFIX + Key::number(index); if (!map.contains(key)) return; - const QVariantMap targetMap = map.value(key).toMap(); + const Store targetMap = map.value(key).toMap(); Id id = idFromMap(targetMap); if (target(id)) { diff --git a/src/plugins/projectexplorer/projectmanager.cpp b/src/plugins/projectexplorer/projectmanager.cpp index 007efe13332..3f2f9cee749 100644 --- a/src/plugins/projectexplorer/projectmanager.cpp +++ b/src/plugins/projectexplorer/projectmanager.cpp @@ -349,7 +349,7 @@ void ProjectManagerPrivate::saveSession() depMap.insert(key, values); ++i; } - SessionManager::setSessionValue(QLatin1String("ProjectDependencies"), QVariant(depMap)); + SessionManager::setSessionValue("ProjectDependencies", QVariant(depMap)); } /*! @@ -654,7 +654,7 @@ void ProjectManagerPrivate::loadSession() d->m_casadeSetActive = false; // not ideal that this is in ProjectManager - Id modeId = Id::fromSetting(SessionManager::value(QLatin1String("ActiveMode"))); + Id modeId = Id::fromSetting(SessionManager::value("ActiveMode")); if (!modeId.isValid()) modeId = Id(Core::Constants::MODE_EDIT); @@ -705,8 +705,7 @@ FilePaths ProjectManager::projectsForSessionName(const QString &session) return {}; } } - return transform(reader.restoreValue(QLatin1String("ProjectList")).toStringList(), - &FilePath::fromUserInput); + return transform(reader.restoreValue("ProjectList").toStringList(), &FilePath::fromUserInput); } #ifdef WITH_TESTS diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 6624a8b2918..8eb6f5e6ba0 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -202,7 +202,7 @@ public: QList stopDependencies; QString id; - QVariantMap data; + Store data; bool supportsReRunning = true; bool essential = false; }; @@ -241,7 +241,7 @@ public: const MacroExpander *macroExpander = nullptr; AspectContainerData aspectData; QString buildKey; - QMap settingsData; + QMap settingsData; Id runConfigId; BuildTargetInfo buildTargetInfo; FilePath buildDirectory; @@ -947,7 +947,7 @@ const BaseAspect::Data *RunControl::aspect(BaseAspect::Data::ClassId classId) co return d->aspectData.aspect(classId); } -QVariantMap RunControl::settingsData(Id id) const +Store RunControl::settingsData(Id id) const { return d->settingsData.value(id); } @@ -1738,12 +1738,12 @@ void RunWorker::setId(const QString &id) d->id = id; } -void RunWorker::recordData(const QString &channel, const QVariant &data) +void RunWorker::recordData(const Key &channel, const QVariant &data) { d->data[channel] = data; } -QVariant RunWorker::recordedData(const QString &channel) const +QVariant RunWorker::recordedData(const Key &channel) const { return d->data[channel]; } diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index b1b9f83cf52..b31aa21fc47 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -54,8 +54,8 @@ public: void setId(const QString &id); - void recordData(const QString &channel, const QVariant &data); - QVariant recordedData(const QString &channel) const; + void recordData(const Utils::Key &channel, const QVariant &data); + QVariant recordedData(const Utils::Key &channel) const; // Part of read-only interface of RunControl for convenience. void appendMessage(const QString &msg, Utils::OutputFormat format, bool appendNewLine = true); @@ -191,7 +191,7 @@ public: Utils::FilePath buildDirectory() const; Utils::Environment buildEnvironment() const; - QVariantMap settingsData(Utils::Id id) const; + Utils::Store settingsData(Utils::Id id) const; Utils::FilePath targetFilePath() const; Utils::FilePath projectFilePath() const; diff --git a/src/plugins/projectexplorer/selectablefilesmodel.cpp b/src/plugins/projectexplorer/selectablefilesmodel.cpp index 4bdc973e1b1..5c34bd1d9b6 100644 --- a/src/plugins/projectexplorer/selectablefilesmodel.cpp +++ b/src/plugins/projectexplorer/selectablefilesmodel.cpp @@ -22,6 +22,8 @@ #include #include +using namespace Utils; + namespace ProjectExplorer { const char HIDE_FILE_FILTER_DEFAULT[] = "Makefile*; *.o; *.lo; *.la; *.obj; *~; *.files;" @@ -534,7 +536,7 @@ SelectableFilesWidget::SelectableFilesWidget(QWidget *parent) : layout->setContentsMargins(0, 0, 0, 0); m_baseDirLabel->setText(Tr::tr("Source directory:")); - m_baseDirChooser->setHistoryCompleter(QLatin1String("PE.AddToProjectDir.History")); + m_baseDirChooser->setHistoryCompleter("PE.AddToProjectDir.History"); m_startParsingButton->setText(Tr::tr("Start Parsing")); layout->addWidget(m_baseDirLabel, static_cast(SelectableFilesWidgetRows::BaseDirectory), 0); layout->addWidget(m_baseDirChooser->lineEdit(), static_cast(SelectableFilesWidgetRows::BaseDirectory), 1); @@ -638,7 +640,7 @@ void SelectableFilesWidget::cancelParsing() m_model->cancel(); } -void SelectableFilesWidget::enableFilterHistoryCompletion(const QString &keyPrefix) +void SelectableFilesWidget::enableFilterHistoryCompletion(const Key &keyPrefix) { m_selectFilesFilterEdit->setHistoryCompleter(keyPrefix + ".select", true); m_hideFilesFilterEdit->setHistoryCompleter(keyPrefix + ".hide", true); diff --git a/src/plugins/projectexplorer/selectablefilesmodel.h b/src/plugins/projectexplorer/selectablefilesmodel.h index 8c47fbd990b..38553c375ac 100644 --- a/src/plugins/projectexplorer/selectablefilesmodel.h +++ b/src/plugins/projectexplorer/selectablefilesmodel.h @@ -5,7 +5,8 @@ #include "projectexplorer_export.h" -#include +#include +#include #include #include @@ -178,7 +179,7 @@ public: void resetModel(const Utils::FilePath &path, const Utils::FilePaths &files); void cancelParsing(); - void enableFilterHistoryCompletion(const QString &keyPrefix); + void enableFilterHistoryCompletion(const Utils::Key &keyPrefix); signals: void selectedFilesChanged(); diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 54e0ade00b0..b050e11eeb9 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -627,7 +627,7 @@ Store Target::toMap() const } if (!d->m_pluginSettings.isEmpty()) - map.insert(PLUGIN_SETTINGS_KEY, d->m_pluginSettings); + map.insert(PLUGIN_SETTINGS_KEY, QVariant::fromValue(d->m_pluginSettings)); return map; } @@ -903,7 +903,7 @@ bool Target::fromMap(const Store &map) const Key key = BC_KEY_PREFIX + Key::number(i); if (!map.contains(key)) return false; - const Store valueMap = map.value(key).toMap(); + const Store valueMap = map.value(key).value(); BuildConfiguration *bc = BuildConfigurationFactory::restore(this, valueMap); if (!bc) { qWarning("No factory found to restore build configuration!"); @@ -964,7 +964,7 @@ bool Target::fromMap(const Store &map) if (!rc) continue; const Utils::Id theIdFromMap = ProjectExplorer::idFromMap(valueMap); - if (!theIdFromMap.toString().contains("///::///")) { // Hack for cmake 4.10 -> 4.11 + if (!theIdFromMap.name().contains("///::///")) { // Hack for cmake 4.10 -> 4.11 QTC_CHECK(rc->id().withSuffix(rc->buildKey()) == theIdFromMap); } addRunConfiguration(rc); @@ -973,7 +973,7 @@ bool Target::fromMap(const Store &map) } if (map.contains(PLUGIN_SETTINGS_KEY)) - d->m_pluginSettings = map.value(PLUGIN_SETTINGS_KEY).toMap(); + d->m_pluginSettings = map.value(PLUGIN_SETTINGS_KEY).value(); return true; } diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 8cbf17f35f4..0c70b0cccb1 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -309,7 +309,7 @@ void ToolChain::setTargetAbiNoSignal(const Abi &abi) d->m_targetAbi = abi; } -void ToolChain::setTargetAbiKey(const QString &abiKey) +void ToolChain::setTargetAbiKey(const Key &abiKey) { d->m_targetAbiKey = abiKey; } @@ -334,7 +334,7 @@ bool ToolChain::matchesCompilerCommand(const FilePath &command) const return compilerCommand().isSameExecutable(command); } -void ToolChain::setCompilerCommandKey(const QString &commandKey) +void ToolChain::setCompilerCommandKey(const Key &commandKey) { d->m_compilerCommandKey = commandKey; } @@ -354,16 +354,16 @@ void ToolChain::fromMap(const Store &data) { AspectContainer::fromMap(data); - d->m_displayName = data.value(QLatin1String(DISPLAY_NAME_KEY)).toString(); + d->m_displayName = data.value(DISPLAY_NAME_KEY).toString(); // make sure we have new style ids: - const QString id = data.value(QLatin1String(ID_KEY)).toString(); + const QString id = data.value(ID_KEY).toString(); int pos = id.indexOf(QLatin1Char(':')); QTC_ASSERT(pos > 0, reportError(); return); d->m_typeId = Id::fromString(id.left(pos)); d->m_id = id.mid(pos + 1).toUtf8(); - const bool autoDetect = data.value(QLatin1String(AUTODETECT_KEY), false).toBool(); + const bool autoDetect = data.value(AUTODETECT_KEY, false).toBool(); d->m_detection = autoDetect ? AutoDetection : ManualDetection; d->m_detectionSource = data.value(DETECTION_SOURCE_KEY).toString(); @@ -372,14 +372,14 @@ void ToolChain::fromMap(const Store &data) if (data.contains(LANGUAGE_KEY_V2)) { // remove hack to trim language id in 4.4: This is to fix up broken language // ids that happened in 4.3 master branch - const QString langId = data.value(QLatin1String(LANGUAGE_KEY_V2)).toString(); + const QString langId = data.value(LANGUAGE_KEY_V2).toString(); const int pos = langId.lastIndexOf('.'); if (pos >= 0) d->m_language = Id::fromString(langId.mid(pos + 1)); else d->m_language = Id::fromString(langId); } else if (data.contains(LANGUAGE_KEY_V1)) { // Import from old settings - d->m_language = Internal::fromLanguageV1(data.value(QLatin1String(LANGUAGE_KEY_V1)).toInt()); + d->m_language = Internal::fromLanguageV1(data.value(LANGUAGE_KEY_V1).toInt()); } if (!d->m_language.isValid()) @@ -612,7 +612,7 @@ ToolChain *ToolChainFactory::restore(const Store &data) static QPair rawIdData(const Store &data) { - const QString raw = data.value(QLatin1String(ID_KEY)).toString(); + const QString raw = data.value(ID_KEY).toString(); const int pos = raw.indexOf(QLatin1Char(':')); QTC_ASSERT(pos > 0, return qMakePair(QString::fromLatin1("unknown"), QString::fromLatin1("unknown"))); return {raw.mid(0, pos), raw.mid(pos + 1)}; @@ -630,7 +630,7 @@ Id ToolChainFactory::typeIdFromMap(const Store &data) void ToolChainFactory::autoDetectionToMap(Store &data, bool detected) { - data.insert(QLatin1String(AUTODETECT_KEY), detected); + data.insert(AUTODETECT_KEY, detected); } ToolChain *ToolChainFactory::createToolChain(Id toolChainType) @@ -700,9 +700,9 @@ BadToolchain::BadToolchain(const FilePath &filePath, const FilePath &symlinkTarg {} -static QString badToolchainFilePathKey() { return {"FilePath"}; } -static QString badToolchainSymlinkTargetKey() { return {"TargetFilePath"}; } -static QString badToolchainTimestampKey() { return {"Timestamp"}; } +static Key badToolchainFilePathKey() { return {"FilePath"}; } +static Key badToolchainSymlinkTargetKey() { return {"TargetFilePath"}; } +static Key badToolchainTimestampKey() { return {"Timestamp"}; } Store BadToolchain::toMap() const { @@ -737,13 +737,15 @@ bool BadToolchains::isBadToolchain(const FilePath &toolchain) const QVariant BadToolchains::toVariant() const { - return Utils::transform(toolchains, &BadToolchain::toMap); + return Utils::transform(toolchains, [](const BadToolchain &bdc) { + return QVariant::fromValue(bdc.toMap()); + }); } BadToolchains BadToolchains::fromVariant(const QVariant &v) { return Utils::transform>(v.toList(), - [](const QVariant &e) { return BadToolchain::fromMap(e.toMap()); }); + [](const QVariant &e) { return BadToolchain::fromMap(e.value()); }); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 40f619260f5..ddbfff1be7d 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -170,9 +170,9 @@ protected: void setTypeDisplayName(const QString &typeName); void setTargetAbiNoSignal(const Abi &abi); - void setTargetAbiKey(const QString &abiKey); + void setTargetAbiKey(const Utils::Key &abiKey); - void setCompilerCommandKey(const QString &commandKey); + void setCompilerCommandKey(const Utils::Key &commandKey); const MacrosCache &predefinedMacrosCache() const; const HeaderPathsCache &headerPathsCache() const; @@ -265,11 +265,11 @@ public: virtual bool canCreate() const; virtual ToolChain *create() const; - ToolChain *restore(const QVariantMap &data); + ToolChain *restore(const Utils::Store &data); - static QByteArray idFromMap(const QVariantMap &data); - static Utils::Id typeIdFromMap(const QVariantMap &data); - static void autoDetectionToMap(QVariantMap &data, bool detected); + static QByteArray idFromMap(const Utils::Store &data); + static Utils::Id typeIdFromMap(const Utils::Store &data); + static void autoDetectionToMap(Utils::Store &data, bool detected); static ToolChain *createToolChain(Utils::Id toolChainType); diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp index 3d369aba3fc..be152de187f 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp @@ -34,7 +34,7 @@ public: ToolChainSettingsUpgraderV0() : Utils::VersionUpgrader(0, "4.6") { } // NOOP - QVariantMap upgrade(const QVariantMap &data) final { return data; } + Store upgrade(const Store &data) final { return data; } }; // -------------------------------------------------------------------- @@ -214,17 +214,17 @@ Toolchains ToolChainSettingsAccessor::restoreToolChains(QWidget *parent) const void ToolChainSettingsAccessor::saveToolChains(const Toolchains &toolchains, QWidget *parent) { - QVariantMap data; + Store data; int count = 0; for (const ToolChain *tc : toolchains) { if (!tc || (!tc->isValid() && tc->isAutoDetected())) continue; - QVariantMap tmp; + Store tmp; tc->toMap(tmp); if (tmp.isEmpty()) continue; - data.insert(QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(count), tmp); + data.insert(TOOLCHAIN_DATA_KEY + Key::number(count), QVariant::fromValue(tmp)); ++count; } data.insert(TOOLCHAIN_COUNT_KEY, count); @@ -234,18 +234,18 @@ void ToolChainSettingsAccessor::saveToolChains(const Toolchains &toolchains, QWi saveSettings(data, parent); } -Toolchains ToolChainSettingsAccessor::toolChains(const QVariantMap &data) const +Toolchains ToolChainSettingsAccessor::toolChains(const Store &data) const { Toolchains result; const QList factories = ToolChainFactory::allToolChainFactories(); const int count = data.value(TOOLCHAIN_COUNT_KEY, 0).toInt(); for (int i = 0; i < count; ++i) { - const QString key = QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(i); + const Key key = TOOLCHAIN_DATA_KEY + Key::number(i); if (!data.contains(key)) break; - const QVariantMap tcMap = data.value(key).toMap(); + const Store tcMap = data.value(key).value(); bool restored = false; const Utils::Id tcType = ToolChainFactory::typeIdFromMap(tcMap); diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.h b/src/plugins/projectexplorer/toolchainsettingsaccessor.h index 418a6ea3eef..aa2b44bc650 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.h +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.h @@ -23,7 +23,7 @@ public: void saveToolChains(const QList &toolchains, QWidget *parent); private: - QList toolChains(const QVariantMap &data) const; + QList toolChains(const Utils::Store &data) const; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index 568b5af7cf9..7163778ee6d 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -323,9 +323,9 @@ SettingsMergeResult UserFileAccessor::merge(const MergingSettingsAccessor::SettingsMergeData &global, const MergingSettingsAccessor::SettingsMergeData &local) const { - const QStringList stickyKeys = global.main.value(USER_STICKY_KEYS_KEY).toStringList(); + const KeyList stickyKeys = keyFromString(global.main.value(USER_STICKY_KEYS_KEY).toStringList()); - const QString key = local.key; + const Key key = local.key; const QVariant mainValue = local.main.value(key); const QVariant secondaryValue = local.secondary.value(key); @@ -350,11 +350,11 @@ UserFileAccessor::merge(const MergingSettingsAccessor::SettingsMergeData &global // Although this approach is more flexible than permanent/forever sticky settings, it has // the side-effect that if a particular value unintentionally becomes the same in both // the .user and .shared files, this setting will "unstick". -SettingsMergeFunction UserFileAccessor::userStickyTrackerFunction(QStringList &stickyKeys) const +SettingsMergeFunction UserFileAccessor::userStickyTrackerFunction(KeyList &stickyKeys) const { return [&stickyKeys](const SettingsMergeData &global, const SettingsMergeData &local) -> SettingsMergeResult { - const QString key = local.key; + const Key key = local.key; const QVariant main = local.main.value(key); const QVariant secondary = local.secondary.value(key); @@ -402,10 +402,10 @@ FilePath UserFileAccessor::sharedFile() const } Store UserFileAccessor::postprocessMerge(const Store &main, - const Store &secondary, - const Store &result) const + const Store &secondary, + const Store &result) const { - project()->setProperty(SHARED_SETTINGS, secondary); + project()->setProperty(SHARED_SETTINGS, QVariant::fromValue(secondary)); return MergingSettingsAccessor::postprocessMerge(main, secondary, result); } @@ -416,7 +416,7 @@ Store UserFileAccessor::preprocessReadSettings(const Store &data) const // Move from old Version field to new one: // This cannot be done in a normal upgrader since the version information is needed // to decide which upgraders to run - const QString obsoleteKey = OBSOLETE_VERSION_KEY; + const Key obsoleteKey = OBSOLETE_VERSION_KEY; const int obsoleteVersion = tmp.value(obsoleteKey, -1).toInt(); if (obsoleteVersion > versionFromMap(tmp)) @@ -429,13 +429,13 @@ Store UserFileAccessor::preprocessReadSettings(const Store &data) const Store UserFileAccessor::prepareToWriteSettings(const Store &data) const { const Store tmp = MergingSettingsAccessor::prepareToWriteSettings(data); - const Store shared = retrieveSharedSettings().toMap(); + const Store shared = retrieveSharedSettings().value(); Store result; if (!shared.isEmpty()) { - QStringList stickyKeys; + KeyList stickyKeys; SettingsMergeFunction merge = userStickyTrackerFunction(stickyKeys); - result = mergeQVariantMaps(tmp, shared, merge).toMap(); - result.insert(USER_STICKY_KEYS_KEY, stickyKeys); + result = mergeQVariantMaps(tmp, shared, merge).value(); + result.insert(USER_STICKY_KEYS_KEY, stringFromKey(stickyKeys)); } else { result = tmp; } @@ -454,7 +454,7 @@ Store UserFileVersion14Upgrader::upgrade(const Store &map) Store result; for (auto it = map.cbegin(), end = map.cend(); it != end; ++it) { if (it.value().typeId() == QVariant::Map) - result.insert(it.key(), upgrade(it.value().toMap())); + result.insert(it.key(), upgrade(it.value().value())); else if (it.key() == "AutotoolsProjectManager.AutotoolsBuildConfiguration.BuildDirectory" || it.key() == "CMakeProjectManager.CMakeBuildConfiguration.BuildDirectory" || it.key() == "GenericProjectManager.GenericBuildConfiguration.BuildDirectory" @@ -473,11 +473,11 @@ Store UserFileVersion14Upgrader::upgrade(const Store &map) Store UserFileVersion15Upgrader::upgrade(const Store &map) { - const QList changes{{QLatin1String("ProjectExplorer.Project.Updater.EnvironmentId"), - QLatin1String("EnvironmentId")}, - {QLatin1String("ProjectExplorer.Project.UserStickyKeys"), - QLatin1String("UserStickyKeys")}}; - return renameKeys(changes, Store(map)); + const QList changes{ + {"ProjectExplorer.Project.Updater.EnvironmentId", "EnvironmentId"}, + {"ProjectExplorer.Project.UserStickyKeys", "UserStickyKeys"} + }; + return renameKeys(changes, map); } // -------------------------------------------------------------------- @@ -489,12 +489,12 @@ UserFileVersion16Upgrader::OldStepMaps UserFileVersion16Upgrader::extractStepMap OldStepMaps result; result.defaultDisplayName = deployMap.value("ProjectExplorer.ProjectConfiguration.DefaultDisplayName").toString(); result.displayName = deployMap.value("ProjectExplorer.ProjectConfiguration.DisplayName").toString(); - const QString stepListKey = "ProjectExplorer.BuildConfiguration.BuildStepList.0"; - Store stepListMap = deployMap.value(stepListKey).toMap(); + const Key stepListKey = "ProjectExplorer.BuildConfiguration.BuildStepList.0"; + Store stepListMap = deployMap.value(stepListKey).value(); int stepCount = stepListMap.value("ProjectExplorer.BuildStepList.StepsCount", 0).toInt(); - QString stepKey = "ProjectExplorer.BuildStepList.Step."; + Key stepKey = "ProjectExplorer.BuildStepList.Step."; for (int i = 0; i < stepCount; ++i) { - Store stepMap = stepListMap.value(stepKey + QString::number(i)).toMap(); + Store stepMap = stepListMap.value(stepKey + Key::number(i)).value(); const QString id = stepMap.value("ProjectExplorer.ProjectConfiguration.Id").toString(); if (id == "Qt4ProjectManager.AndroidDeployQtStep") result.androidDeployQt = stepMap; @@ -509,14 +509,14 @@ UserFileVersion16Upgrader::OldStepMaps UserFileVersion16Upgrader::extractStepMap Store UserFileVersion16Upgrader::removeAndroidPackageStep(Store deployMap) { - const QString stepListKey = "ProjectExplorer.BuildConfiguration.BuildStepList.0"; - Store stepListMap = deployMap.value(stepListKey).toMap(); + const Key stepListKey = "ProjectExplorer.BuildConfiguration.BuildStepList.0"; + Store stepListMap = deployMap.value(stepListKey).value(); const QString stepCountKey = "ProjectExplorer.BuildStepList.StepsCount"; int stepCount = stepListMap.value(stepCountKey, 0).toInt(); QString stepKey = "ProjectExplorer.BuildStepList.Step."; int targetPosition = 0; for (int sourcePosition = 0; sourcePosition < stepCount; ++sourcePosition) { - Store stepMap = stepListMap.value(stepKey + QString::number(sourcePosition)).toMap(); + Store stepMap = stepListMap.value(stepKey + QString::number(sourcePosition)).value(); if (stepMap.value("ProjectExplorer.ProjectConfiguration.Id").toString() != "Qt4ProjectManager.AndroidPackageInstallationStep") { stepListMap.insert(stepKey + QString::number(targetPosition), stepMap); @@ -543,7 +543,7 @@ Store UserFileVersion16Upgrader::insertSteps(Store buildConfigurationMap, const QString bslKey = "ProjectExplorer.BuildConfiguration.BuildStepList."; const QString bslTypeKey = "ProjectExplorer.ProjectConfiguration.Id"; for (int bslNumber = 0; bslNumber < stepListCount; ++bslNumber) { - Store buildStepListMap = buildConfigurationMap.value(bslKey + QString::number(bslNumber)).toMap(); + Store buildStepListMap = buildConfigurationMap.value(bslKey + QString::number(bslNumber)).value(); if (buildStepListMap.value(bslTypeKey) != "ProjectExplorer.BuildSteps.Build") continue; @@ -638,7 +638,7 @@ Store UserFileVersion16Upgrader::upgrade(const Store &data) for (int i = 0; i < targetCount; ++i) { QString targetKey = QLatin1String("ProjectExplorer.Project.Target.") + QString::number(i); - Store targetMap = data.value(targetKey).toMap(); + Store targetMap = data.value(targetKey).value(); const QString dcCountKey = "ProjectExplorer.Target.DeployConfigurationCount"; int deployconfigurationCount = targetMap.value(dcCountKey).toInt(); @@ -651,7 +651,7 @@ Store UserFileVersion16Upgrader::upgrade(const Store &data) QString deployKey = "ProjectExplorer.Target.DeployConfiguration."; for (int j = 0; j < deployconfigurationCount; ++j) { Store deployConfigurationMap - = targetMap.value(deployKey + QString::number(j)).toMap(); + = targetMap.value(deployKey + QString::number(j)).value(); OldStepMaps oldStep = extractStepMaps(deployConfigurationMap); if (!oldStep.isEmpty()) { oldSteps.append(oldStep); @@ -672,7 +672,7 @@ Store UserFileVersion16Upgrader::upgrade(const Store &data) QString bcKey = "ProjectExplorer.Target.BuildConfiguration."; for (int j = 0; j < buildConfigurationCount; ++j) { - Store oldBuildConfigurationMap = targetMap.value(bcKey + QString::number(j)).toMap(); + Store oldBuildConfigurationMap = targetMap.value(bcKey + QString::number(j)).value(); oldBuildConfigurations.append(oldBuildConfigurationMap); } @@ -703,7 +703,7 @@ Store UserFileVersion17Upgrader::upgrade(const Store &map) m_sticky = map.value(USER_STICKY_KEYS_KEY).toList(); if (m_sticky.isEmpty()) return map; - return process(map).toMap(); + return process(map).value(); } QVariant UserFileVersion17Upgrader::process(const QVariant &entry) @@ -716,7 +716,7 @@ QVariant UserFileVersion17Upgrader::process(const QVariant &entry) return result; } case QVariant::Map: { - Store result = entry.toMap(); + Store result = entry.value(); for (Store::iterator i = result.begin(), end = result.end(); i != end; ++i) { QVariant &v = i.value(); v = process(v); @@ -731,7 +731,7 @@ QVariant UserFileVersion17Upgrader::process(const QVariant &entry) Store UserFileVersion18Upgrader::upgrade(const Store &map) { - return process(map).toMap(); + return process(map).value(); } QVariant UserFileVersion18Upgrader::process(const QVariant &entry) @@ -741,7 +741,7 @@ QVariant UserFileVersion18Upgrader::process(const QVariant &entry) return Utils::transform(entry.toList(), &UserFileVersion18Upgrader::process); case QVariant::Map: return Utils::transform>( - entry.toMap().toStdMap(), [](const StringVariantPair &item) -> StringVariantPair { + entry.value().toStdMap(), [](const StringVariantPair &item) -> StringVariantPair { const QString key = (item.first == "AutotoolsProjectManager.MakeStep.AdditionalArguments" ? QString("AutotoolsProjectManager.MakeStep.MakeArguments") @@ -755,7 +755,7 @@ QVariant UserFileVersion18Upgrader::process(const QVariant &entry) Store UserFileVersion19Upgrader::upgrade(const Store &map) { - return process(map, QStringList()).toMap(); + return process(map, QStringList()).value(); } QVariant UserFileVersion19Upgrader::process(const QVariant &entry, const QStringList &path) @@ -795,7 +795,7 @@ QVariant UserFileVersion19Upgrader::process(const QVariant &entry, const QString return Utils::transform(entry.toList(), std::bind(&UserFileVersion19Upgrader::process, std::placeholders::_1, path)); case QVariant::Map: - return Utils::transform(entry.toMap().toStdMap(), + return Utils::transform(entry.value().toStdMap(), [&](const StringVariantPair &item) -> StringVariantPair { if (path.size() == 2 && path.at(1).startsWith("ProjectExplorer.Target.RunConfiguration.")) { if (argsKeys.contains(item.first)) @@ -820,7 +820,7 @@ QVariant UserFileVersion19Upgrader::process(const QVariant &entry, const QString Store UserFileVersion20Upgrader::upgrade(const Store &map) { - return process(map).toMap(); + return process(map).value(); } QVariant UserFileVersion20Upgrader::process(const QVariant &entry) @@ -830,7 +830,7 @@ QVariant UserFileVersion20Upgrader::process(const QVariant &entry) return Utils::transform(entry.toList(), &UserFileVersion20Upgrader::process); case QVariant::Map: return Utils::transform>( - entry.toMap().toStdMap(), [](const StringVariantPair &item) { + entry.value().toStdMap(), [](const StringVariantPair &item) { StringVariantPair res = {item.first, item.second}; if (item.first == "ProjectExplorer.ProjectConfiguration.Id" && item.second == "Qbs.Deploy") @@ -846,7 +846,7 @@ QVariant UserFileVersion20Upgrader::process(const QVariant &entry) Store UserFileVersion21Upgrader::upgrade(const Store &map) { - return process(map).toMap(); + return process(map).value(); } QVariant UserFileVersion21Upgrader::process(const QVariant &entry) @@ -855,7 +855,7 @@ QVariant UserFileVersion21Upgrader::process(const QVariant &entry) case QVariant::List: return Utils::transform(entry.toList(), &UserFileVersion21Upgrader::process); case QVariant::Map: { - Store entryMap = entry.toMap(); + Store entryMap = entry.value(); if (entryMap.value("ProjectExplorer.ProjectConfiguration.Id").toString() == "DeployToGenericLinux") { entryMap.insert("_checkMakeInstall", true); diff --git a/src/plugins/projectexplorer/userfileaccessor.h b/src/plugins/projectexplorer/userfileaccessor.h index b4ed20b498c..3c37da84b22 100644 --- a/src/plugins/projectexplorer/userfileaccessor.h +++ b/src/plugins/projectexplorer/userfileaccessor.h @@ -6,7 +6,6 @@ #include #include -#include namespace ProjectExplorer { @@ -38,7 +37,7 @@ protected: Utils::SettingsMergeResult merge(const SettingsMergeData &global, const SettingsMergeData &local) const final; private: - Utils::SettingsMergeFunction userStickyTrackerFunction(QStringList &stickyKeys) const; + Utils::SettingsMergeFunction userStickyTrackerFunction(Utils::KeyList &stickyKeys) const; Project *m_project; };