diff --git a/ksgrd2/SensorDaemonInterface.cpp b/ksgrd2/SensorDaemonInterface.cpp index 87bd493..b757c51 100644 --- a/ksgrd2/SensorDaemonInterface.cpp +++ b/ksgrd2/SensorDaemonInterface.cpp @@ -49,6 +49,8 @@ void SensorDaemonInterface::requestMetaData(const QStringList& sensorIds) connect(watcher, &QDBusPendingCallWatcher::finished, watcher, [=](QDBusPendingCallWatcher *self) { self->deleteLater(); + qDebug() << "fetched!"; + const QDBusPendingReply reply = *self; if (reply.isError()) { return; @@ -56,6 +58,7 @@ void SensorDaemonInterface::requestMetaData(const QStringList& sensorIds) const auto infos = reply.value(); for (auto itr = infos.begin(); itr != infos.end(); ++itr) { + qDebug() << itr.key(); Q_EMIT metaDataChanged(itr.key(), itr.value()); } }); diff --git a/ksgrd2/SensorDataModel.cpp b/ksgrd2/SensorDataModel.cpp index 7abf564..43b9e2a 100644 --- a/ksgrd2/SensorDataModel.cpp +++ b/ksgrd2/SensorDataModel.cpp @@ -102,6 +102,7 @@ QVariant SensorDataModel::data(const QModelIndex &index, int role) const case Minimum: return info.min; case Maximum: + qDebug() << "query data max" << info.max; return info.max; case Type: return info.variantType; @@ -145,6 +146,7 @@ QVariant SensorDataModel::headerData(int section, Qt::Orientation orientation, i case Minimum: return info.min; case Maximum: + qDebug() << "query header max" << info.max; return info.max; case Type: return info.variantType; @@ -194,6 +196,7 @@ qreal SensorDataModel::maximum() const auto result = std::max_element(d->sensorInfos.cbegin(), d->sensorInfos.cend(), [](const SensorInfo &first, const SensorInfo &second) { return first.max < second.max; }); + qDebug() << "************* querying max" << (*result).max; return (*result).max; } @@ -252,7 +255,6 @@ void SensorDataModel::Private::addSensor(const QString &id) } qCDebug(LIBKSYSGUARD_KSGRD2) << "Add Sensor" << id; - sensors.append(id); SensorDaemonInterface::instance()->requestMetaData(id); } @@ -295,6 +297,7 @@ void SensorDataModel::onMetaDataChanged(const QString &sensorId, const SensorInf // Simple case: Just an update for a sensor's metadata if (d->sensorInfos.contains(sensorId)) { d->sensorInfos[sensorId] = info; + qDebug() << "DATA CHANGED" << info.max; Q_EMIT dataChanged(index(0, column), index(0, column), {Qt::DisplayRole, Name, ShortName, Description, Unit, Minimum, Maximum, Type, FormattedValue}); return; } @@ -307,6 +310,8 @@ void SensorDataModel::onMetaDataChanged(const QString &sensorId, const SensorInf SensorDaemonInterface::instance()->subscribe(sensorId); SensorDaemonInterface::instance()->requestValue(sensorId); + + emit sensorMetaDataChanged(); } void SensorDataModel::onValueChanged(const QString &sensorId, const QVariant &value) @@ -333,10 +338,17 @@ void SensorDataModel::Private::sensorsChanged() const auto addedSensors = newSet - currentSet; const auto removedSensors = currentSet - newSet; + qDebug() << "appending " << addedSensors.values(); sensors.append(addedSensors.values()); + qDebug() << "Request metadata" << addedSensors; SensorDaemonInterface::instance()->requestMetaData(addedSensors.values()); + bool itemsRemoved = false; for (auto sensor : removedSensors) { removeSensor(sensor); + itemsRemoved = true; + } + if (itemsRemoved) { + emit q->sensorMetaDataChanged(); } } diff --git a/ksgrd2/SensorDataModel.h b/ksgrd2/SensorDataModel.h index 78653e8..8d9cf6a 100644 --- a/ksgrd2/SensorDataModel.h +++ b/ksgrd2/SensorDataModel.h @@ -23,9 +23,9 @@ class Q_DECL_EXPORT SensorDataModel : public QAbstractTableModel, public QQmlPar Q_PROPERTY(QStringList sensors READ sensors WRITE setSensors NOTIFY sensorsChanged) // The minimum value of all sensors' minimum property. - Q_PROPERTY(qreal minimum READ minimum NOTIFY sensorsChanged) + Q_PROPERTY(qreal minimum READ minimum NOTIFY sensorMetaDataChanged) // The maximum value of all sensors' maximum property. - Q_PROPERTY(qreal maximum READ maximum NOTIFY sensorsChanged) + Q_PROPERTY(qreal maximum READ maximum NOTIFY sensorMetaDataChanged) public: enum AdditionalRoles { @@ -56,6 +56,7 @@ public: QStringList sensors() const; void setSensors(const QStringList &sensorIds); Q_SIGNAL void sensorsChanged() const; + Q_SIGNAL void sensorMetaDataChanged(); qreal minimum() const; qreal maximum() const;