mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 15:45:46 +08:00
refs #784 Use CMemoTable to implement a compact JSON schema for CAircraftModelList.
This commit is contained in:
committed by
Klaus Basan
parent
f6f2d38821
commit
45bb9a2737
@@ -109,6 +109,28 @@ namespace BlackMisc
|
||||
return QJsonDocument(this->toDatabaseJson()).toJson(format);
|
||||
}
|
||||
|
||||
QJsonObject CAircraftModel::toMemoizedJson(MemoHelper::CMemoizer &helper) const
|
||||
{
|
||||
QJsonObject json;
|
||||
auto meta = introspect<CAircraftModel>().without(MetaFlags<DisabledForJson>());
|
||||
meta.forEachMemberName(*this, [ & ](const auto & member, CExplicitLatin1String name)
|
||||
{
|
||||
auto &&maybeMemo = helper.maybeMemoize(member);
|
||||
json << std::make_pair(name.toJsonKey(), std::cref(maybeMemo));
|
||||
});
|
||||
return json;
|
||||
}
|
||||
|
||||
void CAircraftModel::convertFromMemoizedJson(const QJsonObject &json, const MemoHelper::CUnmemoizer &helper)
|
||||
{
|
||||
auto meta = introspect<CAircraftModel>().without(MetaFlags<DisabledForJson>());
|
||||
meta.forEachMemberName(*this, [ & ](auto & member, CExplicitLatin1String name)
|
||||
{
|
||||
auto it = json.find(name);
|
||||
if (it != json.end()) { it.value() >> helper.maybeUnmemoize(member).get(); }
|
||||
});
|
||||
}
|
||||
|
||||
QString CAircraftModel::asHtmlSummary() const
|
||||
{
|
||||
const QString html = "Model: %1<br>Aircraft ICAO: %2<br>Livery: %3";
|
||||
|
||||
Reference in New Issue
Block a user