Item: propagate override flag via item update requests
This commit is contained in:
parent
51193a5d0b
commit
da50a89866
3 changed files with 33 additions and 7 deletions
|
|
@ -67,6 +67,8 @@ void ItemData::storeWithChanges(QJsonObject& json, const ItemFieldChanges& chang
|
|||
valueNamesArray.append(name);
|
||||
json["ValueNames"] = valueNamesArray;
|
||||
}
|
||||
if(changes.override)
|
||||
json["override"] = override_;
|
||||
}
|
||||
|
||||
void ItemData::load(const QJsonObject &json, const bool preserve)
|
||||
|
|
@ -107,6 +109,11 @@ ItemFieldChanges ItemData::loadWithChanges(const QJsonObject& json, const bool p
|
|||
valueNames_.push_back(valueNamesArray[i].toString());
|
||||
changes.valueNames = true;
|
||||
}
|
||||
if(json.contains("override"))
|
||||
{
|
||||
override_ = json["override"].toBool(false);
|
||||
changes.override = true;
|
||||
}
|
||||
itemId_ = static_cast<uint32_t>(json["ItemId"].toDouble(0));
|
||||
}
|
||||
return changes;
|
||||
|
|
@ -142,6 +149,8 @@ bool ItemData::hasChanged(const ItemData& other, const ItemFieldChanges& changes
|
|||
return true;
|
||||
if(changes.valueNames && other.getValueNames() != getValueNames())
|
||||
return true;
|
||||
if(changes.override && other.getOverride() != getOverride())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -197,6 +206,16 @@ QString ItemData::indexToValueName(int index) const
|
|||
return QString();
|
||||
}
|
||||
|
||||
bool ItemData::getOverride() const
|
||||
{
|
||||
return override_;
|
||||
}
|
||||
|
||||
void ItemData::setOverride(bool overrideVal)
|
||||
{
|
||||
override_ = overrideVal;
|
||||
}
|
||||
|
||||
//item
|
||||
|
||||
Item::Item(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name,
|
||||
|
|
@ -217,7 +236,6 @@ Item::~Item()
|
|||
void Item::store(QJsonObject &json)
|
||||
{
|
||||
ItemData::store(json);
|
||||
json["override"] = override_;
|
||||
if(!actors_.empty())
|
||||
{
|
||||
QJsonArray actorsArray;
|
||||
|
|
@ -237,7 +255,6 @@ void Item::store(QJsonObject &json)
|
|||
void Item::load(const QJsonObject &json, const bool preserve)
|
||||
{
|
||||
ItemData::load(json, preserve);
|
||||
override_ = json["override"].toBool(false);
|
||||
if(json.contains("Actors"))
|
||||
{
|
||||
const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray()));
|
||||
|
|
@ -306,6 +323,8 @@ void Item::requestUpdate(ItemUpdateRequest update)
|
|||
}
|
||||
if(update.changes.valueNames)
|
||||
valueNames_ = update.payload.getValueNames();
|
||||
if(update.changes.override)
|
||||
override_ = update.payload.getOverride();
|
||||
update.payload = *this;
|
||||
updated(update);
|
||||
}
|
||||
|
|
@ -351,12 +370,12 @@ bool Item::removeActor(std::shared_ptr<Actor> actor)
|
|||
|
||||
void Item::setOverride(const bool in)
|
||||
{
|
||||
override_ = in;
|
||||
ItemData::setOverride(in);
|
||||
}
|
||||
|
||||
bool Item::getOverride()
|
||||
{
|
||||
return override_;
|
||||
return ItemData::getOverride();
|
||||
}
|
||||
|
||||
void Item::removeAllActors()
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ protected:
|
|||
item_value_type_t type_;
|
||||
QString groupName_;
|
||||
std::vector<QString> valueNames_;
|
||||
bool override_ = false;
|
||||
|
||||
public:
|
||||
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(),
|
||||
|
|
@ -78,6 +79,8 @@ public:
|
|||
void storeWithChanges(QJsonObject& json, const ItemFieldChanges& changes);
|
||||
ItemFieldChanges loadWithChanges(const QJsonObject& json, const bool preserve = false);
|
||||
virtual QString getName() const;
|
||||
bool getOverride() const;
|
||||
void setOverride(bool overrideVal);
|
||||
virtual void store(QJsonObject& json);
|
||||
virtual void load(const QJsonObject& json, const bool preserve = false);
|
||||
};
|
||||
|
|
@ -87,7 +90,6 @@ class Item: public QObject, public ItemData
|
|||
Q_OBJECT
|
||||
private:
|
||||
std::vector< std::shared_ptr<Actor> > actors_;
|
||||
bool override_ = false;
|
||||
|
||||
signals:
|
||||
void updated(ItemUpdateRequest update);
|
||||
|
|
@ -135,6 +137,7 @@ struct ItemFieldChanges
|
|||
bool groupName :1;
|
||||
bool actors :1;
|
||||
bool valueNames :1;
|
||||
bool override :1;
|
||||
ItemFieldChanges(bool defaultVal = false)
|
||||
{
|
||||
name = defaultVal;
|
||||
|
|
@ -144,10 +147,11 @@ struct ItemFieldChanges
|
|||
groupName = defaultVal;
|
||||
actors = false;
|
||||
valueNames = defaultVal;
|
||||
override = defaultVal;
|
||||
}
|
||||
inline bool isNone() const
|
||||
{
|
||||
return !name && !value && !hidden && !type && !groupName && !actors && !valueNames;
|
||||
return !name && !value && !hidden && !type && !groupName && !actors && !valueNames && !override;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,10 @@ void ItemSettingsDialog::changeGroup()
|
|||
|
||||
void ItemSettingsDialog::changeOverride()
|
||||
{
|
||||
item_->setOverride(ui->checkBox_Override->isChecked());
|
||||
ItemUpdateRequest update = item_->createValueUpdateRequest(ITEM_UPDATE_USER);
|
||||
update.payload.setOverride(ui->checkBox_Override->isChecked());
|
||||
update.changes.override = true;
|
||||
item_->requestUpdate(update);
|
||||
}
|
||||
|
||||
void ItemSettingsDialog::loadActorList()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue