Compare commits
No commits in common. "34f129967b84ea3bd8af99ad9831aa67e8724da4" and "51193a5d0b5cea3ecbc487e4cbf281f0754be1cb" have entirely different histories.
34f129967b
...
51193a5d0b
10 changed files with 15 additions and 78 deletions
|
|
@ -67,8 +67,6 @@ 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)
|
||||
|
|
@ -109,11 +107,6 @@ 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;
|
||||
|
|
@ -149,8 +142,6 @@ 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;
|
||||
}
|
||||
|
||||
|
|
@ -206,16 +197,6 @@ 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,
|
||||
|
|
@ -236,6 +217,7 @@ Item::~Item()
|
|||
void Item::store(QJsonObject &json)
|
||||
{
|
||||
ItemData::store(json);
|
||||
json["override"] = override_;
|
||||
if(!actors_.empty())
|
||||
{
|
||||
QJsonArray actorsArray;
|
||||
|
|
@ -255,6 +237,7 @@ 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()));
|
||||
|
|
@ -323,8 +306,6 @@ 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);
|
||||
}
|
||||
|
|
@ -370,12 +351,12 @@ bool Item::removeActor(std::shared_ptr<Actor> actor)
|
|||
|
||||
void Item::setOverride(const bool in)
|
||||
{
|
||||
ItemData::setOverride(in);
|
||||
override_ = in;
|
||||
}
|
||||
|
||||
bool Item::getOverride()
|
||||
{
|
||||
return ItemData::getOverride();
|
||||
return override_;
|
||||
}
|
||||
|
||||
void Item::removeAllActors()
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ protected:
|
|||
item_value_type_t type_;
|
||||
QString groupName_;
|
||||
std::vector<QString> valueNames_;
|
||||
bool override_ = false;
|
||||
|
||||
public:
|
||||
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(),
|
||||
|
|
@ -79,8 +78,6 @@ 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);
|
||||
};
|
||||
|
|
@ -90,6 +87,7 @@ class Item: public QObject, public ItemData
|
|||
Q_OBJECT
|
||||
private:
|
||||
std::vector< std::shared_ptr<Actor> > actors_;
|
||||
bool override_ = false;
|
||||
|
||||
signals:
|
||||
void updated(ItemUpdateRequest update);
|
||||
|
|
@ -137,7 +135,6 @@ struct ItemFieldChanges
|
|||
bool groupName :1;
|
||||
bool actors :1;
|
||||
bool valueNames :1;
|
||||
bool override :1;
|
||||
ItemFieldChanges(bool defaultVal = false)
|
||||
{
|
||||
name = defaultVal;
|
||||
|
|
@ -147,11 +144,10 @@ struct ItemFieldChanges
|
|||
groupName = defaultVal;
|
||||
actors = false;
|
||||
valueNames = defaultVal;
|
||||
override = defaultVal;
|
||||
}
|
||||
inline bool isNone() const
|
||||
{
|
||||
return !name && !value && !hidden && !type && !groupName && !actors && !valueNames && !override;
|
||||
return !name && !value && !hidden && !type && !groupName && !actors && !valueNames;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -165,7 +165,6 @@ SecondaryMainObject::SecondaryMainObject(QString host, int port, QObject *parent
|
|||
{
|
||||
connect(tcpClient, &TcpClient::gotSensor, &globalSensors, &SensorStore::sensorGotState);
|
||||
globalItems.registerItemSource(tcpClient);
|
||||
connect(&globalSensors, &SensorStore::sensorChangedState, tcpClient, &TcpClient::sensorEvent);
|
||||
|
||||
if(!tcpClient->launch(QHostAddress(host), port))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -89,31 +89,6 @@ void SensorStore::sensorGotState(const Sensor& sensor, sensor_update_type_t type
|
|||
needsUpdate = true;
|
||||
}
|
||||
}
|
||||
else if(type == SENSOR_UPDATE_REMOTE)
|
||||
{
|
||||
if(sensors_[i].name != sensor.name || sensors_[i].hidden != sensor.hidden || sensors_[i].groupName != sensor.groupName)
|
||||
{
|
||||
sensors_[i].name = sensor.name;
|
||||
sensors_[i].hidden = sensor.hidden;
|
||||
sensors_[i].groupName = sensor.groupName;
|
||||
for(Sensor& known : knownSensors_)
|
||||
{
|
||||
if(sensor.type == known.type && sensor.id == known.id)
|
||||
{
|
||||
known.name = sensor.name;
|
||||
known.hidden = sensor.hidden;
|
||||
known.groupName = sensor.groupName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
needsUpdate = true;
|
||||
}
|
||||
if(sensors_[i].field != sensor.field)
|
||||
{
|
||||
needsUpdate = true;
|
||||
sensors_[i].field = sensor.field;
|
||||
}
|
||||
}
|
||||
else if(sensors_[i].field != sensor.field)
|
||||
{
|
||||
needsUpdate = true;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ signals:
|
|||
void sensorAdded(Sensor sensor, Sensor::sensor_backend_type_t backend, QJsonObject payload);
|
||||
|
||||
public slots:
|
||||
virtual void sensorEvent(Sensor sensor, sensor_update_type_t type);
|
||||
void sensorEvent(Sensor sensor, sensor_update_type_t type);
|
||||
virtual void itemUpdated(ItemUpdateRequest update);
|
||||
virtual void refresh() override;
|
||||
virtual void addSensor(Sensor sensor, Sensor::sensor_backend_type_t backend, QJsonObject payload = {});
|
||||
|
|
|
|||
|
|
@ -128,16 +128,6 @@ void TcpClient::itemUpdated(ItemUpdateRequest update)
|
|||
}
|
||||
}
|
||||
|
||||
void TcpClient::sensorEvent(Sensor sensor, sensor_update_type_t type)
|
||||
{
|
||||
// Only forward user-initiated sensor updates to the server
|
||||
// to prevent feedback loops with backend/remote updates
|
||||
if(type == SENSOR_UPDATE_USER)
|
||||
{
|
||||
Service::sensorEvent(sensor, type);
|
||||
}
|
||||
}
|
||||
|
||||
TcpClient::~TcpClient()
|
||||
{
|
||||
delete socket;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ class TcpClient : public Service
|
|||
|
||||
public slots:
|
||||
virtual void itemUpdated(ItemUpdateRequest update) override;
|
||||
virtual void sensorEvent(Sensor sensor, sensor_update_type_t type) override;
|
||||
|
||||
public:
|
||||
TcpClient(QObject* parent = nullptr);
|
||||
|
|
|
|||
|
|
@ -96,10 +96,7 @@ void ItemSettingsDialog::changeGroup()
|
|||
|
||||
void ItemSettingsDialog::changeOverride()
|
||||
{
|
||||
ItemUpdateRequest update = item_->createValueUpdateRequest(ITEM_UPDATE_USER);
|
||||
update.payload.setOverride(ui->checkBox_Override->isChecked());
|
||||
update.changes.override = true;
|
||||
item_->requestUpdate(update);
|
||||
item_->setOverride(ui->checkBox_Override->isChecked());
|
||||
}
|
||||
|
||||
void ItemSettingsDialog::loadActorList()
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ void SensorListWidget::onDoubleClick(QTreeWidgetItem *item, int column)
|
|||
{
|
||||
if(item && item->type() == 1001)
|
||||
{
|
||||
const Sensor& sensor = static_cast<SensorListItem*>(item)->getSensor();
|
||||
const Sensor& sensor = getSensorForIndex(currentIndex());
|
||||
SensorSettingsDialog diag(sensor, this);
|
||||
if(diag.exec())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -363,15 +363,15 @@ private slots:
|
|||
Sensor initialSensor(Sensor::TYPE_TEMPERATURE, 1, 20.0, "Initial Name", false);
|
||||
store.sensorGotState(initialSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Send REMOTE update with new name and hidden state (e.g., from secondary instance)
|
||||
// Send REMOTE update with new name and hidden state
|
||||
Sensor remoteUpdate(Sensor::TYPE_TEMPERATURE, 1, 25.0, "Remote Name", true);
|
||||
store.sensorGotState(remoteUpdate, SENSOR_UPDATE_REMOTE);
|
||||
|
||||
// Verify name, hidden and field were updated (remote updates should sync user-configurable fields)
|
||||
// Verify name and hidden were NOT updated
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Remote Name");
|
||||
QVERIFY(sensors->at(0).hidden == true);
|
||||
QVERIFY(sensors->at(0).name == "Initial Name");
|
||||
QVERIFY(sensors->at(0).hidden == false);
|
||||
QVERIFY(sensors->at(0).field == 25.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue