Finish lerge refactor of systems
This commit is contained in:
parent
6d742e60db
commit
913d7df56d
36 changed files with 614 additions and 634 deletions
|
|
@ -7,10 +7,14 @@
|
|||
#include "relay.h"
|
||||
#include "messageitem.h"
|
||||
#include "systemitem.h"
|
||||
#include "auxitem.h"
|
||||
#include "poweritem.h"
|
||||
#include "rgbitem.h"
|
||||
|
||||
#include <QJsonArray>
|
||||
|
||||
ItemData::ItemData(uint32_t itemIdIn, QString name, uint8_t value): name_(name), value_(value), itemId_(itemIdIn)
|
||||
ItemData::ItemData(uint32_t itemIdIn, QString name, uint8_t value, bool loaded, bool hidden, item_value_type_t type):
|
||||
name_(name), value_(value), itemId_(itemIdIn), loaded_(loaded), hidden_(hidden), type_(type)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -48,9 +52,47 @@ void ItemData::load(const QJsonObject &json, const bool preserve)
|
|||
{
|
||||
name_ = json["Name"].toString(name_);
|
||||
itemId_ = static_cast<uint32_t>(json["ItemId"].toDouble(0));
|
||||
value_ = json["Value"].toInt();
|
||||
}
|
||||
}
|
||||
|
||||
bool ItemData::getLoaded() const
|
||||
{
|
||||
return loaded_;
|
||||
}
|
||||
|
||||
void ItemData::setLoaded(bool loaded)
|
||||
{
|
||||
loaded_ = loaded;
|
||||
}
|
||||
|
||||
bool ItemData::hasChanged(const ItemData& other)
|
||||
{
|
||||
if(other != *this)
|
||||
return false;
|
||||
if(other.getName() != getName())
|
||||
return true;
|
||||
if(other.getValue() != getValue())
|
||||
return true;
|
||||
if(other.getLoaded() != getLoaded())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ItemData::isHidden()
|
||||
{
|
||||
return hidden_;
|
||||
}
|
||||
|
||||
void ItemData::setHidden(bool hidden)
|
||||
{
|
||||
hidden_ = hidden;
|
||||
}
|
||||
|
||||
item_value_type_t ItemData::getValueType()
|
||||
{
|
||||
return type_;
|
||||
}
|
||||
|
||||
//item
|
||||
|
||||
|
|
@ -96,7 +138,8 @@ void Item::load(const QJsonObject &json, const bool preserve)
|
|||
if(actorsArray[i].isObject())
|
||||
{
|
||||
std::shared_ptr<Actor> actor = Actor::loadActor(actorsArray[i].toObject());
|
||||
if(actor != nullptr) addActor(actor);
|
||||
if(actor != nullptr)
|
||||
addActor(actor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -109,6 +152,7 @@ void Item::actorSetValue(uint8_t value)
|
|||
|
||||
void Item::setValue(uint8_t value)
|
||||
{
|
||||
qDebug()<<__func__;
|
||||
informValue(value);
|
||||
if(programMode == PROGRAM_MODE_PRIMARY || programMode == PROGRAM_MODE_HEADLESS_PRIMARY)
|
||||
enactValue(value);
|
||||
|
|
@ -116,9 +160,12 @@ void Item::setValue(uint8_t value)
|
|||
|
||||
void Item::informValue(uint8_t value)
|
||||
{
|
||||
value_ = value;
|
||||
valueChanged(value_);
|
||||
updated(*this);
|
||||
if(value_ != value)
|
||||
{
|
||||
value_ = value;
|
||||
valueChanged(value_);
|
||||
updated(*this);
|
||||
}
|
||||
}
|
||||
|
||||
void Item::enactValue(uint8_t value)
|
||||
|
|
@ -135,14 +182,16 @@ void Item::addActor(std::shared_ptr<Actor> actor)
|
|||
connect(this, &Item::valueChanged, actor.get(), &Actor::onValueChanged);
|
||||
|
||||
std::shared_ptr<SensorActor> sensorActor = std::dynamic_pointer_cast<SensorActor>(actor);
|
||||
if(sensorActor)connect(&globalSensors, &SensorStore::sensorChangedState, sensorActor.get(), &SensorActor::sensorEvent);
|
||||
if(sensorActor)
|
||||
connect(&globalSensors, &SensorStore::sensorChangedState, sensorActor.get(), &SensorActor::sensorEvent);
|
||||
|
||||
std::shared_ptr<Regulator> regulator = std::dynamic_pointer_cast<Regulator>(actor);
|
||||
if(regulator)connect(&globalSensors, &SensorStore::sensorChangedState, regulator.get(), &Regulator::sensorEvent);
|
||||
if(regulator)
|
||||
connect(&globalSensors, &SensorStore::sensorChangedState, regulator.get(), &Regulator::sensorEvent);
|
||||
|
||||
std::shared_ptr<PolynomalActor> polynomalActor = std::dynamic_pointer_cast<PolynomalActor>(actor);
|
||||
if(polynomalActor != nullptr )connect(&globalSensors, &SensorStore::sensorChangedState, polynomalActor.get(),
|
||||
&PolynomalActor::sensorEvent);
|
||||
if(polynomalActor != nullptr )
|
||||
connect(&globalSensors, &SensorStore::sensorChangedState, polynomalActor.get(), &PolynomalActor::sensorEvent);
|
||||
}
|
||||
|
||||
bool Item::removeActor(std::shared_ptr<Actor> actor)
|
||||
|
|
@ -189,6 +238,14 @@ void Item::setActorsActive(bool in)
|
|||
in ? actors_[i]->makeActive() : actors_[i]->makeInactive();
|
||||
}
|
||||
|
||||
void Item::mergeLoaded(Item& item)
|
||||
{
|
||||
name_ = item.name_;
|
||||
actors_.clear();
|
||||
for(std::shared_ptr<Actor> actor : item.actors_)
|
||||
addActor(actor);
|
||||
}
|
||||
|
||||
std::shared_ptr<Item> Item::loadItem(const QJsonObject& json)
|
||||
{
|
||||
std::shared_ptr<Item> newItem = nullptr;
|
||||
|
|
@ -206,8 +263,21 @@ std::shared_ptr<Item> Item::loadItem(const QJsonObject& json)
|
|||
}
|
||||
else if(json["Type"].toString("") == "Aux")
|
||||
{
|
||||
newItem = std::shared_ptr<AuxItem>(new AuxItem);
|
||||
}
|
||||
else if(json["Type"].toString("") == "Power")
|
||||
{
|
||||
newItem = std::shared_ptr<PowerItem>(new PowerItem);
|
||||
}
|
||||
else if(json["Type"].toString("") == "Rgb")
|
||||
{
|
||||
newItem = std::shared_ptr<RgbItem>(new RgbItem);
|
||||
}
|
||||
if(newItem)
|
||||
{
|
||||
newItem->load(json);
|
||||
newItem->setLoaded(true);
|
||||
}
|
||||
return newItem;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue