Item: only save fields that are set in the item

This commit is contained in:
Carl Philipp Klemm 2026-04-25 23:40:35 +02:00
parent 221cb519a2
commit a96b27c741

View file

@ -58,9 +58,9 @@ void ItemData::storeWithChanges(QJsonObject& json, const ItemFieldChanges& chang
json["Name"] = name_;
if(changes.value)
json["Value"] = static_cast<double>(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 = Actor::loadActor(actorsArray[i].toObject());
if(actor != nullptr)
addActor(actor);
if(actorsArray[i].isObject())
{
std::shared_ptr<Actor> actor = Actor::loadActor(actorsArray[i].toObject());
if(actor != nullptr)
addActor(actor);
}
}
}
}