From a96b27c7414f50030e49bf29692cd1e1768e8fcd Mon Sep 17 00:00:00 2001 From: Carl Philipp Klemm Date: Sat, 25 Apr 2026 23:40:35 +0200 Subject: [PATCH] Item: only save fields that are set in the item --- src/items/item.cpp | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/items/item.cpp b/src/items/item.cpp index 14d31b3..0ff8cd5 100644 --- a/src/items/item.cpp +++ b/src/items/item.cpp @@ -58,9 +58,9 @@ void ItemData::storeWithChanges(QJsonObject& json, const ItemFieldChanges& chang json["Name"] = name_; if(changes.value) json["Value"] = static_cast(value_); - if(changes.groupName) + if(changes.groupName && !groupName_.isEmpty() && groupName_ != "All") json["GroupName"] = groupName_; - if(changes.valueNames) + if(changes.valueNames && !valueNames_.empty()) { QJsonArray valueNamesArray; for(const QString& name : valueNames_) @@ -218,31 +218,37 @@ void Item::store(QJsonObject &json) { ItemData::store(json); json["override"] = override_; - QJsonArray actorsArray; - for(size_t i = 0; i < actors_.size(); ++i) + if(!actors_.empty()) { - if(!actors_[i]->isExausted()) + QJsonArray actorsArray; + for(size_t i = 0; i < actors_.size(); ++i) { - QJsonObject actorObject; - actors_[i]->store(actorObject); - actorsArray.append(actorObject); + if(!actors_[i]->isExausted()) + { + QJsonObject actorObject; + actors_[i]->store(actorObject); + actorsArray.append(actorObject); + } } + json["Actors"] = actorsArray; } - json["Actors"] = actorsArray; } void Item::load(const QJsonObject &json, const bool preserve) { ItemData::load(json, preserve); override_ = json["override"].toBool(false); - const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray())); - for(int i = 0; i < actorsArray.size(); ++i) + if(json.contains("Actors")) { - if(actorsArray[i].isObject()) + const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray())); + for(int i = 0; i < actorsArray.size(); ++i) { - std::shared_ptr actor = Actor::loadActor(actorsArray[i].toObject()); - if(actor != nullptr) - addActor(actor); + if(actorsArray[i].isObject()) + { + std::shared_ptr actor = Actor::loadActor(actorsArray[i].toObject()); + if(actor != nullptr) + addActor(actor); + } } } }