From a9fb3d4e52325b841368014ae81e20649b10ca8b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 17 Dec 2022 16:37:57 +0100 Subject: [PATCH] Adapted new json format changes --- jsonconverters.cpp | 18 +++++++++++++++++- jsonconverters.h | 1 + presets.h | 3 +++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/jsonconverters.cpp b/jsonconverters.cpp index 31ea86f..b7b1cad 100755 --- a/jsonconverters.cpp +++ b/jsonconverters.cpp @@ -69,6 +69,20 @@ std::vector parseIntVector(const QJsonValue &jsonValue) return vector; } +std::vector parseIntVectorIgnoreNulls(const QJsonValue &jsonValue) +{ + if (!jsonValue.isArray()) + throw std::runtime_error{"json value for int vector is not an array"}; + + std::vector vector; + + for (const auto &jsonValue : jsonValue.toArray()) + if (!jsonValue.isNull()) + vector.emplace_back(parseInt(jsonValue)); + + return vector; +} + presets::PresetsConfig parsePresetsConfig(const QJsonObject &jsonObj) { presets::PresetsConfig presetConfig; @@ -216,6 +230,8 @@ presets::Preset parsePreset(const QJsonValue &jsonValue) preset.beatSchool = parseSequenceVectorMap(iter.value()); else if (key == "easyPlay") preset.easyPlay = parseSequenceVectorMap(iter.value()); + else if (key == "timestamp") + preset.timestamp = QDateTime::fromSecsSinceEpoch(iter.value().toDouble()); else if (key == "middleDescription") {} else @@ -318,7 +334,7 @@ presets::Sequence parseSequence(const QJsonValue &jsonValue) else if (key == "pads") sequence.pads = parseSequencePadVectorMap(iter.value()); else if (key == "embientPads") - sequence.embientPads = parseIntVector(iter.value()); + sequence.embientPads = parseIntVectorIgnoreNulls(iter.value()); else throw std::runtime_error{QString{"unknown key %0 for Sequence"}.arg(key).toStdString()}; } diff --git a/jsonconverters.h b/jsonconverters.h index 9470b94..970d629 100755 --- a/jsonconverters.h +++ b/jsonconverters.h @@ -15,6 +15,7 @@ std::vector parseStringVector(const QJsonValue &jsonValue); int parseInt(const QJsonValue &jsonValue); bool parseBool(const QJsonValue &jsonValue); std::vector parseIntVector(const QJsonValue &jsonValue); +std::vector parseIntVectorIgnoreNulls(const QJsonValue &jsonValue); presets::PresetsConfig parsePresetsConfig(const QJsonObject &jsonObj); std::vector parseCategoryVector(const QJsonValue &jsonValue); diff --git a/presets.h b/presets.h index a53244a..bf2539e 100755 --- a/presets.h +++ b/presets.h @@ -3,8 +3,10 @@ #include #include #include +#include #include +#include namespace presets { @@ -74,6 +76,7 @@ struct Preset std::optional> files; std::optional>> beatSchool; std::optional>> easyPlay; + std::optional timestamp; }; struct PresetsConfig