Move the sensor values to a own class SensorValue

This commit is contained in:
Micke Prag 2011-10-27 16:00:21 +02:00
parent 61331e7da3
commit c41a84b582
5 changed files with 108 additions and 49 deletions

View file

@ -1,12 +1,15 @@
SET(REQUIRE_PLUGIN_QML TRUE PARENT_SCOPE)
SET(REQUIRE_PLUGIN_SETTINGS TRUE PARENT_SCOPE)
SET(QT_USE_QTDECLARATIVE TRUE)
SET( Plugin_NAME "sensors" )
SET( Plugin_SRCS
sensor.cpp
sensorsplugin.cpp
sensorvalue.cpp
)
SET( Plugin_HDRS
@ -15,6 +18,7 @@ SET( Plugin_HDRS
SET( Plugin_MOC_HDRS
sensor.h
sensorvalue.h
)
SET( Plugin_PATH "com.telldus.sensors" )

View file

@ -1,19 +1,20 @@
#include "sensor.h"
#include "sensorvalue.h"
#include <telldus-core.h>
class Sensor::PrivateData {
public:
bool hasTemperature, hasHumidity;
int id;
QString model, name, protocol, temperature, humidity;
QString model, name, protocol;
QDateTime lastUpdated;
QMap<int, SensorValue *> values;
};
Sensor::Sensor(QObject *parent) :
QObject(parent)
{
d = new PrivateData;
d->hasTemperature = false;
d->hasHumidity = false;
d->id = 0;
}
@ -21,19 +22,8 @@ Sensor::~Sensor() {
delete d;
}
QString Sensor::humidity() const {
return d->humidity;
}
void Sensor::setHumidity(const QString &humidity) {
d->humidity = humidity;
d->hasHumidity = true;
emit humidityChanged();
emit hasHumidityChanged();
}
bool Sensor::hasHumidity() const {
return d->hasHumidity;
return d->values.contains(TELLSTICK_HUMIDITY);
}
int Sensor::id() const {
@ -45,15 +35,6 @@ void Sensor::setId(int id) {
emit idChanged();
}
QDateTime Sensor::lastUpdated() const {
return d->lastUpdated;
}
void Sensor::setLastUpdated(const QDateTime &lastUpdated) {
d->lastUpdated = lastUpdated;
emit lastUpdatedChanged();
}
QString Sensor::model() const {
return d->model;
}
@ -81,17 +62,28 @@ void Sensor::setProtocol(const QString &protocol) {
emit protocolChanged();
}
QString Sensor::temperature() const {
return d->temperature;
}
void Sensor::setTemperature(const QString &temperature) {
d->temperature = temperature;
d->hasTemperature = true;
emit temperatureChanged();
emit hasTemperatureChanged();
}
bool Sensor::hasTemperature() const {
return d->hasTemperature;
return d->values.contains(TELLSTICK_TEMPERATURE);
}
SensorValue * Sensor::sensorValue(int type) {
return (d->values.contains(type) ? d->values[type] : 0);
}
void Sensor::setValue(int type, const QString &value, const QDateTime &timestamp) {
SensorValue *sensorValue;
if (d->values.contains(type)) {
sensorValue = d->values[type];
} else {
sensorValue = new SensorValue(this);
d->values[type] = sensorValue;
}
sensorValue->setValue(value);
sensorValue->setLastUpdated(timestamp);
if (type == TELLSTICK_TEMPERATURE) {
emit hasTemperatureChanged();
} else if (type == TELLSTICK_HUMIDITY) {
emit hasHumidityChanged();
}
}

View file

@ -6,32 +6,26 @@
#include <QVariantMap>
#include <QDateTime>
class SensorValue;
class Sensor : public QObject
{
Q_OBJECT
Q_PROPERTY(bool hasHumidity READ hasHumidity NOTIFY hasHumidityChanged)
Q_PROPERTY(bool hasTemperature READ hasTemperature NOTIFY hasTemperatureChanged)
Q_PROPERTY(QString humidity READ humidity WRITE setHumidity NOTIFY humidityChanged)
Q_PROPERTY(int id READ id WRITE setId NOTIFY idChanged)
Q_PROPERTY(QDateTime lastUpdated READ lastUpdated WRITE setLastUpdated NOTIFY lastUpdatedChanged)
Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged)
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(QString protocol READ protocol WRITE setProtocol NOTIFY protocolChanged)
Q_PROPERTY(QString temperature READ temperature WRITE setTemperature NOTIFY temperatureChanged)
public:
explicit Sensor(QObject *parent = 0);
~Sensor();
QString humidity() const;
void setHumidity(const QString &humidity);
bool hasHumidity() const;
int id() const;
void setId(int id);
QDateTime lastUpdated() const;
void setLastUpdated(const QDateTime &lastUpdated);
QString model() const;
void setModel(const QString &model);
@ -41,20 +35,18 @@ public:
QString protocol() const;
void setProtocol(const QString &protocol);
QString temperature() const;
void setTemperature(const QString &temperature);
bool hasTemperature() const;
Q_INVOKABLE SensorValue *sensorValue(int type);
Q_INVOKABLE void setValue(int type, const QString &value, const QDateTime &timestamp);
signals:
void idChanged();
void hasHumidityChanged();
void hasTemperatureChanged();
void humidityChanged();
void lastUpdatedChanged();
void modelChanged();
void nameChanged();
void protocolChanged();
void temperatureChanged();
private:
class PrivateData;

View file

@ -0,0 +1,35 @@
#include "sensorvalue.h"
class SensorValue::PrivateData {
public:
QString value;
QDateTime lastUpdated;
};
SensorValue::SensorValue(QObject *parent) :
QObject(parent)
{
d = new PrivateData;
}
SensorValue::~SensorValue() {
delete d;
}
QDateTime SensorValue::lastUpdated() const {
return d->lastUpdated;
}
void SensorValue::setLastUpdated(const QDateTime &lastUpdated) {
d->lastUpdated = lastUpdated;
emit lastUpdatedChanged();
}
QString SensorValue::value() const {
return d->value;
}
void SensorValue::setValue(const QString &value) {
d->value = value;
emit valueChanged();
}

View file

@ -0,0 +1,36 @@
#ifndef SENSORVALUE_H
#define SENSORVALUE_H
#include <QObject>
#include <QMetaType>
#include <QVariantMap>
#include <QDateTime>
class SensorValue : public QObject
{
Q_OBJECT
Q_PROPERTY(QDateTime lastUpdated READ lastUpdated WRITE setLastUpdated NOTIFY lastUpdatedChanged)
Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged)
public:
explicit SensorValue(QObject *parent = 0);
~SensorValue();
QDateTime lastUpdated() const;
void setLastUpdated(const QDateTime &lastUpdated);
QString value() const;
void setValue(const QString &model);
signals:
void lastUpdatedChanged();
void valueChanged();
private:
class PrivateData;
PrivateData *d;
};
Q_DECLARE_METATYPE(SensorValue*)
#endif // SENSORVALUE_H