Sensor: improve update handling
This commit is contained in:
parent
f2b2e8f0a0
commit
a07b019a22
1 changed files with 18 additions and 5 deletions
|
|
@ -59,20 +59,23 @@ std::vector<QString> SensorStore::allGroups() const
|
|||
void SensorStore::sensorGotState(const Sensor& sensor, sensor_update_type_t type)
|
||||
{
|
||||
bool inSensors = false;
|
||||
|
||||
qDebug()<<"Sensor update for id"<<sensor.id<<"type"<<sensor.type<<"update type"<<type<<"for"<<sensor.name<<"with group"<<sensor.groupName;
|
||||
|
||||
for(unsigned i = 0; i < sensors_.size(); ++i)
|
||||
{
|
||||
if(sensor.type == sensors_[i].type && sensor.id == sensors_[i].id)
|
||||
{
|
||||
sensors_[i].updateSeen();
|
||||
if(sensors_[i].field != sensor.field)
|
||||
{
|
||||
sensors_[i].field = sensor.field;
|
||||
bool needsUpdate = false;
|
||||
|
||||
if(type == SENSOR_UPDATE_USER)
|
||||
{
|
||||
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;
|
||||
// Also update knownSensors_
|
||||
for(Sensor& known : knownSensors_)
|
||||
{
|
||||
if(sensor.type == known.type && sensor.id == known.id)
|
||||
|
|
@ -83,10 +86,21 @@ void SensorStore::sensorGotState(const Sensor& sensor, sensor_update_type_t type
|
|||
break;
|
||||
}
|
||||
}
|
||||
needsUpdate = true;
|
||||
}
|
||||
}
|
||||
else if(sensors_[i].field != sensor.field)
|
||||
{
|
||||
needsUpdate = true;
|
||||
sensors_[i].field = sensor.field;
|
||||
}
|
||||
|
||||
if(needsUpdate)
|
||||
{
|
||||
sensorChangedState(sensors_[i], type);
|
||||
stateChenged(sensors_);
|
||||
}
|
||||
|
||||
inSensors = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -94,7 +108,6 @@ void SensorStore::sensorGotState(const Sensor& sensor, sensor_update_type_t type
|
|||
if(!inSensors)
|
||||
{
|
||||
Sensor newSensor = sensor;
|
||||
// Check knownSensors_ for matching sensor to override name and hidden state
|
||||
for(const Sensor& known : knownSensors_)
|
||||
{
|
||||
if(sensor.type == known.type && sensor.id == known.id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue