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("linkedInstances", "[]");
|
||||
m_settings->registerSetting("shortcuts", QVariant::fromValue(QList<ShortcutData>{}));
|
||||
m_settings->registerSetting("shortcuts", QVariant::fromValue(QByteArray{}));
|
||||
|
||||
// Game time override
|
||||
auto gameTimeOverride = m_settings->registerSetting("OverrideGameTime", false);
|
||||
|
@ -410,12 +410,26 @@ void BaseInstance::registerShortcut(const ShortcutData& data)
|
|||
void BaseInstance::setShortcuts(const QList<ShortcutData>& shortcuts)
|
||||
{
|
||||
// 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
|
||||
{
|
||||
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
|
||||
|
|
|
@ -76,17 +76,6 @@ struct ShortcutData {
|
|||
QString name;
|
||||
QString filePath;
|
||||
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(ShortcutData)
|
||||
// Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
|
||||
// Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)
|
||||
|
|
|
@ -670,7 +670,6 @@ InstancePtr InstanceList::loadInstance(const InstanceId& id)
|
|||
}
|
||||
|
||||
auto instanceRoot = FS::PathCombine(m_instDir, id);
|
||||
qRegisterMetaType<QList<ShortcutData>>("QList<ShortcutData>");
|
||||
auto instanceSettings = std::make_shared<INISettingsObject>(FS::PathCombine(instanceRoot, "instance.cfg"));
|
||||
InstancePtr inst;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue