Switch to JSON-encoded store
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
This commit is contained in:
parent
7c3a810d3d
commit
d2ee023788
3 changed files with 17 additions and 16 deletions
|
@ -69,7 +69,7 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s
|
||||||
m_settings->registerSetting("lastTimePlayed", 0);
|
m_settings->registerSetting("lastTimePlayed", 0);
|
||||||
|
|
||||||
m_settings->registerSetting("linkedInstances", "[]");
|
m_settings->registerSetting("linkedInstances", "[]");
|
||||||
m_settings->registerSetting("shortcuts", QVariant::fromValue(QList<ShortcutData>{}));
|
m_settings->registerSetting("shortcuts", QVariant::fromValue(QByteArray{}));
|
||||||
|
|
||||||
// Game time override
|
// Game time override
|
||||||
auto gameTimeOverride = m_settings->registerSetting("OverrideGameTime", false);
|
auto gameTimeOverride = m_settings->registerSetting("OverrideGameTime", false);
|
||||||
|
@ -410,12 +410,26 @@ void BaseInstance::registerShortcut(const ShortcutData& data)
|
||||||
void BaseInstance::setShortcuts(const QList<ShortcutData>& shortcuts)
|
void BaseInstance::setShortcuts(const QList<ShortcutData>& shortcuts)
|
||||||
{
|
{
|
||||||
// FIXME: if no change, do not set. setting involves saving a file.
|
// FIXME: if no change, do not set. setting involves saving a file.
|
||||||
m_settings->set("shortcuts", QVariant::fromValue(shortcuts));
|
QJsonArray array;
|
||||||
|
for (const auto& elem : shortcuts) {
|
||||||
|
array.append(QJsonObject{ { "name", elem.name }, { "filePath", elem.filePath }, { "target", static_cast<int>(elem.target) } });
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonDocument document;
|
||||||
|
document.setArray(array);
|
||||||
|
m_settings->set("shortcuts", QVariant::fromValue(document.toJson(QJsonDocument::Compact)));
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ShortcutData> BaseInstance::shortcuts() const
|
QList<ShortcutData> BaseInstance::shortcuts() const
|
||||||
{
|
{
|
||||||
return m_settings->get("shortcuts").value<QList<ShortcutData>>();
|
auto data = m_settings->get("shortcuts").value<QByteArray>();
|
||||||
|
auto document = QJsonDocument::fromJson(data);
|
||||||
|
QList<ShortcutData> results;
|
||||||
|
for (const auto& elem : document.array()) {
|
||||||
|
auto dict = elem.toObject();
|
||||||
|
results.append({ dict["name"].toString(), dict["filePath"].toString(), static_cast<ShortcutTarget>(dict["target"].toInt()) });
|
||||||
|
}
|
||||||
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString BaseInstance::name() const
|
QString BaseInstance::name() const
|
||||||
|
|
|
@ -76,17 +76,6 @@ struct ShortcutData {
|
||||||
QString name;
|
QString name;
|
||||||
QString filePath;
|
QString filePath;
|
||||||
ShortcutTarget target = ShortcutTarget::Other;
|
ShortcutTarget target = ShortcutTarget::Other;
|
||||||
|
|
||||||
friend QDataStream& operator<<(QDataStream& out, const ShortcutData& data)
|
|
||||||
{
|
|
||||||
out << data.name << data.filePath << data.target;
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
friend QDataStream& operator>>(QDataStream& in, ShortcutData& data)
|
|
||||||
{
|
|
||||||
in >> data.name >> data.filePath >> data.target;
|
|
||||||
return in;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -339,6 +328,5 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(shared_qobject_ptr<BaseInstance>)
|
Q_DECLARE_METATYPE(shared_qobject_ptr<BaseInstance>)
|
||||||
Q_DECLARE_METATYPE(ShortcutData)
|
|
||||||
// Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
|
// Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
|
||||||
// Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)
|
// Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)
|
||||||
|
|
|
@ -670,7 +670,6 @@ InstancePtr InstanceList::loadInstance(const InstanceId& id)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto instanceRoot = FS::PathCombine(m_instDir, id);
|
auto instanceRoot = FS::PathCombine(m_instDir, id);
|
||||||
qRegisterMetaType<QList<ShortcutData>>("QList<ShortcutData>");
|
|
||||||
auto instanceSettings = std::make_shared<INISettingsObject>(FS::PathCombine(instanceRoot, "instance.cfg"));
|
auto instanceSettings = std::make_shared<INISettingsObject>(FS::PathCombine(instanceRoot, "instance.cfg"));
|
||||||
InstancePtr inst;
|
InstancePtr inst;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue