Utils/TextEditor: More use of Store and Key

Change-Id: I2feb47b2e6af7a299912b0c73a0c5d8a0e18a8aa
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
hjk
2023-08-23 18:32:14 +02:00
parent 2bf886ed73
commit 0667bdaedc
8 changed files with 126 additions and 125 deletions

View File

@@ -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<ParseValueStackEntry> 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<int>(variant.type())) {
case static_cast<int>(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<Store>();
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());

View File

@@ -6,6 +6,7 @@
#include "utils_global.h"
#include "filepath.h"
#include "store.h"
#include <QVariant>
@@ -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<QString, QVariant> 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<QString, QVariant> m_savedData;
mutable Store m_savedData;
};
} // namespace Utils

View File

@@ -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::Issue> 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<PersistentSettingsWriter>(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::Issue> 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<FilePath> BackUpStrategy::backupName(const QVariantMap &oldData,
std::optional<FilePath> 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<SettingsAccessor::Issue> 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<FilePath> VersionedBackUpStrategy::backupName(const QVariantMap &oldData,
std::optional<FilePath> 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<Change> &changes, QVariantMap map) const
Store VersionUpgrader::renameKeys(const QList<Change> &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<Change> &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<Store>());
++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<Store>();
// 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<QString> allKeys = filteredUnique(mainSubtree.keys() + secondarySubtree.keys());
Store result;
const QList<Key> 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<QPair<QString, QVariant>> mergeResult = merge(global, local);
std::optional<QPair<Key, QVariant>> mergeResult = merge(global, local);
if (!mergeResult)
continue;
QPair<QString, QVariant> kv = mergeResult.value();
QPair<Key, QVariant> 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(),

View File

@@ -6,10 +6,10 @@
#include "utils_global.h"
#include "filepath.h"
#include "store.h"
#include <QHash>
#include <QMessageBox>
#include <QVariantMap>
#include <memory>
#include <optional>
@@ -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<QPair<QString, QVariant>>;
@@ -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> 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<Issue> 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<Issue> writeFile(const FilePath &path, const QVariantMap &data) const;
virtual std::optional<Issue> 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<FilePath> backupName(const QVariantMap &oldData,
virtual std::optional<FilePath> 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<Issue> 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<BackUpStrategy> m_strategy;
};
@@ -183,9 +183,9 @@ public:
int compare(const SettingsAccessor::RestoreData &data1,
const SettingsAccessor::RestoreData &data2) const override;
std::optional<FilePath> backupName(const QVariantMap &oldData,
std::optional<FilePath> 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<QLatin1String, QLatin1String>;
QVariantMap renameKeys(const QList<Change> &changes, QVariantMap map) const;
Store renameKeys(const QList<Change> &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<SettingsAccessor> m_secondaryAccessor;
@@ -282,7 +282,7 @@ private:
using SettingsMergeFunction = std::function<SettingsMergeResult(const MergingSettingsAccessor::SettingsMergeData &,
const MergingSettingsAccessor::SettingsMergeData &)>;
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

View File

@@ -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<Store>();
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());

View File

@@ -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}

View File

@@ -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;

View File

@@ -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?