diff options
Diffstat (limited to 'src')
40 files changed, 418 insertions, 274 deletions
diff --git a/src/sensorsquick/qmlaccelerometer.cpp b/src/sensorsquick/qmlaccelerometer.cpp index fc013837..2063ec69 100644 --- a/src/sensorsquick/qmlaccelerometer.cpp +++ b/src/sensorsquick/qmlaccelerometer.cpp @@ -139,6 +139,11 @@ qreal QmlAccelerometerReading::x() const return m_x; } +QBindable<qreal> QmlAccelerometerReading::bindableX() const +{ + return &m_x; +} + /*! \qmlproperty qreal AccelerometerReading::y This property holds the acceleration on the Y axis. @@ -151,6 +156,11 @@ qreal QmlAccelerometerReading::y() const return m_y; } +QBindable<qreal> QmlAccelerometerReading::bindableY() const +{ + return &m_y; +} + /*! \qmlproperty qreal AccelerometerReading::z This property holds the acceleration on the Z axis. @@ -163,6 +173,11 @@ qreal QmlAccelerometerReading::z() const return m_z; } +QBindable<qreal> QmlAccelerometerReading::bindableZ() const +{ + return &m_z; +} + QSensorReading *QmlAccelerometerReading::reading() const { return m_sensor->reading(); @@ -170,19 +185,7 @@ QSensorReading *QmlAccelerometerReading::reading() const void QmlAccelerometerReading::readingUpdate() { - qreal aX = m_sensor->reading()->x(); - if (m_x != aX) { - m_x = aX; - Q_EMIT xChanged(); - } - qreal aY = m_sensor->reading()->y(); - if (m_y != aY) { - m_y = aY; - Q_EMIT yChanged(); - } - qreal aZ = m_sensor->reading()->z(); - if (m_z != aZ) { - m_z = aZ; - Q_EMIT zChanged(); - } + m_x = m_sensor->reading()->x(); + m_y = m_sensor->reading()->y(); + m_z = m_sensor->reading()->z(); } diff --git a/src/sensorsquick/qmlaccelerometer_p.h b/src/sensorsquick/qmlaccelerometer_p.h index 24a691d8..2a2e9e08 100644 --- a/src/sensorsquick/qmlaccelerometer_p.h +++ b/src/sensorsquick/qmlaccelerometer_p.h @@ -79,11 +79,12 @@ public: AccelerationMode accelerationMode() const; void setAccelerationMode(AccelerationMode accelerationMode); + QSensor *sensor() const override; + signals: Q_REVISION(1) void accelerationModeChanged(AccelerationMode accelerationMode); private: - QSensor *sensor() const override; QAccelerometer *m_sensor; QmlSensorReading *createReading() const override; }; @@ -91,9 +92,9 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlAccelerometerReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal x READ x NOTIFY xChanged) - Q_PROPERTY(qreal y READ y NOTIFY yChanged) - Q_PROPERTY(qreal z READ z NOTIFY zChanged) + Q_PROPERTY(qreal x READ x NOTIFY xChanged BINDABLE bindableX) + Q_PROPERTY(qreal y READ y NOTIFY yChanged BINDABLE bindableY) + Q_PROPERTY(qreal z READ z NOTIFY zChanged BINDABLE bindableZ) QML_NAMED_ELEMENT(AccelerometerReading) QML_UNCREATABLE("Cannot create AccelerometerReading") QML_ADDED_IN_VERSION(5,0) @@ -102,8 +103,11 @@ public: ~QmlAccelerometerReading(); qreal x() const; + QBindable<qreal> bindableX() const; qreal y() const; + QBindable<qreal> bindableY() const; qreal z() const; + QBindable<qreal> bindableZ() const; Q_SIGNALS: void xChanged(); @@ -114,9 +118,12 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QAccelerometer *m_sensor; - qreal m_x; - qreal m_y; - qreal m_z; + Q_OBJECT_BINDABLE_PROPERTY(QmlAccelerometerReading, qreal, + m_x, &QmlAccelerometerReading::xChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlAccelerometerReading, qreal, + m_y, &QmlAccelerometerReading::yChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlAccelerometerReading, qreal, + m_z, &QmlAccelerometerReading::zChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlaltimeter.cpp b/src/sensorsquick/qmlaltimeter.cpp index 8ee3ccde..fe0177db 100644 --- a/src/sensorsquick/qmlaltimeter.cpp +++ b/src/sensorsquick/qmlaltimeter.cpp @@ -96,7 +96,6 @@ QSensor *QmlAltimeter::sensor() const QmlAltimeterReading::QmlAltimeterReading(QAltimeter *sensor) : QmlSensorReading(sensor) , m_sensor(sensor) - , m_altitude(0) { } @@ -116,6 +115,11 @@ qreal QmlAltimeterReading::altitude() const return m_altitude; } +QBindable<qreal> QmlAltimeterReading::bindableAltitude() const +{ + return &m_altitude; +} + QSensorReading *QmlAltimeterReading::reading() const { return m_sensor->reading(); @@ -123,9 +127,5 @@ QSensorReading *QmlAltimeterReading::reading() const void QmlAltimeterReading::readingUpdate() { - qreal altitude = m_sensor->reading()->altitude(); - if (m_altitude != altitude) { - m_altitude = altitude; - Q_EMIT altitudeChanged(); - } + m_altitude = m_sensor->reading()->altitude(); } diff --git a/src/sensorsquick/qmlaltimeter_p.h b/src/sensorsquick/qmlaltimeter_p.h index 322fbdfb..19f124cb 100644 --- a/src/sensorsquick/qmlaltimeter_p.h +++ b/src/sensorsquick/qmlaltimeter_p.h @@ -65,17 +65,18 @@ public: explicit QmlAltimeter(QObject *parent = 0); ~QmlAltimeter(); -private: QSensor *sensor() const override; - QmlSensorReading *createReading() const override; +private: + QmlSensorReading *createReading() const override; QAltimeter *m_sensor; }; class Q_SENSORSQUICK_PRIVATE_EXPORT QmlAltimeterReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal altitude READ altitude NOTIFY altitudeChanged) + Q_PROPERTY(qreal altitude READ altitude + NOTIFY altitudeChanged BINDABLE bindableAltitude) QML_NAMED_ELEMENT(AltimeterReading) QML_UNCREATABLE("Cannot create AltimeterReading") QML_ADDED_IN_VERSION(5,1) @@ -84,6 +85,7 @@ public: ~QmlAltimeterReading(); qreal altitude() const; + QBindable<qreal> bindableAltitude() const; Q_SIGNALS: void altitudeChanged(); @@ -93,7 +95,8 @@ private: void readingUpdate() override; QAltimeter *m_sensor; - qreal m_altitude; + Q_OBJECT_BINDABLE_PROPERTY(QmlAltimeterReading, qreal, + m_altitude, &QmlAltimeterReading::altitudeChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlambientlightsensor.cpp b/src/sensorsquick/qmlambientlightsensor.cpp index a114f8b3..6854baf7 100644 --- a/src/sensorsquick/qmlambientlightsensor.cpp +++ b/src/sensorsquick/qmlambientlightsensor.cpp @@ -126,6 +126,11 @@ QAmbientLightReading::LightLevel QmlAmbientLightSensorReading::lightLevel() cons return m_lightLevel; } +QBindable<QAmbientLightReading::LightLevel> QmlAmbientLightSensorReading::bindableLightLevel() const +{ + return &m_lightLevel; +} + QSensorReading *QmlAmbientLightSensorReading::reading() const { return m_sensor->reading(); @@ -133,9 +138,5 @@ QSensorReading *QmlAmbientLightSensorReading::reading() const void QmlAmbientLightSensorReading::readingUpdate() { - QAmbientLightReading::LightLevel ll = m_sensor->reading()->lightLevel(); - if (m_lightLevel != ll) { - m_lightLevel = ll; - Q_EMIT lightLevelChanged(); - } + m_lightLevel = m_sensor->reading()->lightLevel(); } diff --git a/src/sensorsquick/qmlambientlightsensor_p.h b/src/sensorsquick/qmlambientlightsensor_p.h index 356a1128..f920fe58 100644 --- a/src/sensorsquick/qmlambientlightsensor_p.h +++ b/src/sensorsquick/qmlambientlightsensor_p.h @@ -67,8 +67,9 @@ public: explicit QmlAmbientLightSensor(QObject *parent = 0); ~QmlAmbientLightSensor(); -private: QSensor *sensor() const override; + +private: QAmbientLightSensor *m_sensor; QmlSensorReading *createReading() const override; @@ -77,7 +78,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlAmbientLightSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(QAmbientLightReading::LightLevel lightLevel READ lightLevel NOTIFY lightLevelChanged) + Q_PROPERTY(QAmbientLightReading::LightLevel lightLevel READ lightLevel + NOTIFY lightLevelChanged BINDABLE bindableLightLevel) QML_NAMED_ELEMENT(AmbientLightReading) QML_UNCREATABLE("Cannot create AmbientLightReading") QML_ADDED_IN_VERSION(5,0) @@ -87,6 +89,7 @@ public: ~QmlAmbientLightSensorReading(); QAmbientLightReading::LightLevel lightLevel() const; + QBindable<QAmbientLightReading::LightLevel> bindableLightLevel() const; Q_SIGNALS: void lightLevelChanged(); @@ -95,7 +98,8 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QAmbientLightSensor *m_sensor; - QAmbientLightReading::LightLevel m_lightLevel; + Q_OBJECT_BINDABLE_PROPERTY(QmlAmbientLightSensorReading, QAmbientLightReading::LightLevel, + m_lightLevel, &QmlAmbientLightSensorReading::lightLevelChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlambienttemperaturesensor.cpp b/src/sensorsquick/qmlambienttemperaturesensor.cpp index 3f1a4679..2dccfa38 100644 --- a/src/sensorsquick/qmlambienttemperaturesensor.cpp +++ b/src/sensorsquick/qmlambienttemperaturesensor.cpp @@ -116,6 +116,11 @@ qreal QmlAmbientTemperatureReading::temperature() const return m_temperature; } +QBindable<qreal> QmlAmbientTemperatureReading::bindableTemperature() const +{ + return &m_temperature; +} + QSensorReading *QmlAmbientTemperatureReading::reading() const { return m_sensor->reading(); @@ -123,9 +128,5 @@ QSensorReading *QmlAmbientTemperatureReading::reading() const void QmlAmbientTemperatureReading::readingUpdate() { - const qreal temperature = m_sensor->reading()->temperature(); - if (m_temperature != temperature) { - m_temperature = temperature; - Q_EMIT temperatureChanged(); - } + m_temperature = m_sensor->reading()->temperature(); } diff --git a/src/sensorsquick/qmlambienttemperaturesensor_p.h b/src/sensorsquick/qmlambienttemperaturesensor_p.h index 45183ee7..39608ad5 100644 --- a/src/sensorsquick/qmlambienttemperaturesensor_p.h +++ b/src/sensorsquick/qmlambienttemperaturesensor_p.h @@ -65,8 +65,9 @@ public: explicit QmlAmbientTemperatureSensor(QObject *parent = 0); ~QmlAmbientTemperatureSensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QAmbientTemperatureSensor *m_sensor; @@ -75,7 +76,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlAmbientTemperatureReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal temperature READ temperature NOTIFY temperatureChanged) + Q_PROPERTY(qreal temperature READ temperature + NOTIFY temperatureChanged BINDABLE bindableTemperature) QML_NAMED_ELEMENT(AmbientTemperatureReading) QML_UNCREATABLE("Cannot create AmbientTemperatureReading") QML_ADDED_IN_VERSION(5,1) @@ -84,6 +86,7 @@ public: ~QmlAmbientTemperatureReading(); qreal temperature() const; + QBindable<qreal> bindableTemperature() const; Q_SIGNALS: void temperatureChanged(); @@ -93,7 +96,8 @@ private: void readingUpdate() override; QAmbientTemperatureSensor *m_sensor; - qreal m_temperature; + Q_OBJECT_BINDABLE_PROPERTY(QmlAmbientTemperatureReading, qreal, + m_temperature, &QmlAmbientTemperatureReading::temperatureChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlcompass.cpp b/src/sensorsquick/qmlcompass.cpp index b3620d6c..c1c110d1 100644 --- a/src/sensorsquick/qmlcompass.cpp +++ b/src/sensorsquick/qmlcompass.cpp @@ -116,6 +116,11 @@ qreal QmlCompassReading::azimuth() const return m_azimuth; } +QBindable<qreal> QmlCompassReading::bindableAzimuth() const +{ + return &m_azimuth; +} + /*! \qmlproperty qreal CompassReading::calibrationLevel This property holds the calibration level of the reading. @@ -128,6 +133,11 @@ qreal QmlCompassReading::calibrationLevel() const return m_calibrationLevel; } +QBindable<qreal> QmlCompassReading::bindableCalibrationLevel() const +{ + return &m_calibrationLevel; +} + QSensorReading *QmlCompassReading::reading() const { return m_sensor->reading(); @@ -135,14 +145,6 @@ QSensorReading *QmlCompassReading::reading() const void QmlCompassReading::readingUpdate() { - qreal azm = m_sensor->reading()->azimuth(); - if (m_azimuth != azm) { - m_azimuth = azm; - Q_EMIT azimuthChanged(); - } - qreal calLevel = m_sensor->reading()->calibrationLevel(); - if (m_calibrationLevel != calLevel) { - m_calibrationLevel = calLevel; - Q_EMIT calibrationLevelChanged(); - } + m_azimuth = m_sensor->reading()->azimuth(); + m_calibrationLevel = m_sensor->reading()->calibrationLevel(); } diff --git a/src/sensorsquick/qmlcompass_p.h b/src/sensorsquick/qmlcompass_p.h index 42c1b15c..af0777bc 100644 --- a/src/sensorsquick/qmlcompass_p.h +++ b/src/sensorsquick/qmlcompass_p.h @@ -66,9 +66,9 @@ public: explicit QmlCompass(QObject *parent = 0); ~QmlCompass(); + QSensor *sensor() const override; private: - QSensor *sensor() const override; QCompass *m_sensor; QmlSensorReading *createReading() const override; }; @@ -76,8 +76,9 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlCompassReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal azimuth READ azimuth NOTIFY azimuthChanged) - Q_PROPERTY(qreal calibrationLevel READ calibrationLevel NOTIFY calibrationLevelChanged) + Q_PROPERTY(qreal azimuth READ azimuth NOTIFY azimuthChanged BINDABLE bindableAzimuth) + Q_PROPERTY(qreal calibrationLevel READ calibrationLevel + NOTIFY calibrationLevelChanged BINDABLE bindableCalibrationLevel) QML_NAMED_ELEMENT(CompassReading) QML_UNCREATABLE("Cannot create CompassReading") QML_ADDED_IN_VERSION(5,0) @@ -86,7 +87,9 @@ public: ~QmlCompassReading(); qreal azimuth() const; + QBindable<qreal> bindableAzimuth() const; qreal calibrationLevel() const; + QBindable<qreal> bindableCalibrationLevel() const; Q_SIGNALS: void azimuthChanged(); @@ -96,8 +99,10 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QCompass *m_sensor; - qreal m_azimuth; - qreal m_calibrationLevel; + Q_OBJECT_BINDABLE_PROPERTY(QmlCompassReading, qreal, + m_azimuth, &QmlCompassReading::azimuthChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlCompassReading, qreal, + m_calibrationLevel, &QmlCompassReading::calibrationLevelChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmldistancesensor.cpp b/src/sensorsquick/qmldistancesensor.cpp index b1d9f6bb..8d48ece9 100644 --- a/src/sensorsquick/qmldistancesensor.cpp +++ b/src/sensorsquick/qmldistancesensor.cpp @@ -116,6 +116,12 @@ qreal QmlDistanceReading::distance() const return m_distance; } +QBindable<qreal> QmlDistanceReading::bindableDistance() const +{ + return &m_distance; +} + + QSensorReading *QmlDistanceReading::reading() const { return m_sensor->reading(); @@ -123,9 +129,5 @@ QSensorReading *QmlDistanceReading::reading() const void QmlDistanceReading::readingUpdate() { - qreal distance = m_sensor->reading()->distance(); - if (m_distance != distance) { - m_distance = distance; - Q_EMIT distanceChanged(); - } + m_distance = m_sensor->reading()->distance(); } diff --git a/src/sensorsquick/qmldistancesensor_p.h b/src/sensorsquick/qmldistancesensor_p.h index 1f9d9425..9692a997 100644 --- a/src/sensorsquick/qmldistancesensor_p.h +++ b/src/sensorsquick/qmldistancesensor_p.h @@ -66,8 +66,9 @@ public: explicit QmlDistanceSensor(QObject *parent = 0); ~QmlDistanceSensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QDistanceSensor *m_sensor; @@ -76,7 +77,7 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlDistanceReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal distance READ distance NOTIFY distanceChanged) + Q_PROPERTY(qreal distance READ distance NOTIFY distanceChanged BINDABLE bindableDistance) QML_NAMED_ELEMENT(DistanceReading) QML_UNCREATABLE("Cannot create DistanceReading") QML_ADDED_IN_VERSION(5,4) @@ -85,6 +86,7 @@ public: ~QmlDistanceReading(); qreal distance() const; + QBindable<qreal> bindableDistance() const; Q_SIGNALS: void distanceChanged(); @@ -94,7 +96,8 @@ private: void readingUpdate() override; QDistanceSensor *m_sensor; - qreal m_distance; + Q_OBJECT_BINDABLE_PROPERTY(QmlDistanceReading, qreal, + m_distance, &QmlDistanceReading::distanceChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlgyroscope.cpp b/src/sensorsquick/qmlgyroscope.cpp index 9983564a..2db7a67f 100644 --- a/src/sensorsquick/qmlgyroscope.cpp +++ b/src/sensorsquick/qmlgyroscope.cpp @@ -115,6 +115,11 @@ qreal QmlGyroscopeReading::x() const return m_x; } +QBindable<qreal> QmlGyroscopeReading::bindableX() const +{ + return &m_x; +} + /*! \qmlproperty qreal GyroscopeReading::y This property holds the angular velocity around the y axis. @@ -127,6 +132,11 @@ qreal QmlGyroscopeReading::y() const return m_y; } +QBindable<qreal> QmlGyroscopeReading::bindableY() const +{ + return &m_y; +} + /*! \qmlproperty qreal GyroscopeReading::z This property holds the angular velocity around the z axis. @@ -139,6 +149,11 @@ qreal QmlGyroscopeReading::z() const return m_z; } +QBindable<qreal> QmlGyroscopeReading::bindableZ() const +{ + return &m_z; +} + QSensorReading *QmlGyroscopeReading::reading() const { return m_sensor->reading(); @@ -146,19 +161,7 @@ QSensorReading *QmlGyroscopeReading::reading() const void QmlGyroscopeReading::readingUpdate() { - qreal gx = m_sensor->reading()->x(); - if (m_x != gx) { - m_x = gx; - Q_EMIT xChanged(); - } - qreal gy = m_sensor->reading()->y(); - if (m_y != gy) { - m_y = gy; - Q_EMIT yChanged(); - } - qreal gz = m_sensor->reading()->z(); - if (m_z != gz) { - m_z = gz; - Q_EMIT zChanged(); - } + m_x = m_sensor->reading()->x(); + m_y = m_sensor->reading()->y(); + m_z = m_sensor->reading()->z(); } diff --git a/src/sensorsquick/qmlgyroscope_p.h b/src/sensorsquick/qmlgyroscope_p.h index 549a67e4..a3fed868 100644 --- a/src/sensorsquick/qmlgyroscope_p.h +++ b/src/sensorsquick/qmlgyroscope_p.h @@ -66,9 +66,9 @@ public: explicit QmlGyroscope(QObject *parent = 0); ~QmlGyroscope(); + QSensor *sensor() const override; private: - QSensor *sensor() const override; QGyroscope *m_sensor; QmlSensorReading *createReading() const override; }; @@ -76,9 +76,9 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlGyroscopeReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal x READ x NOTIFY xChanged) - Q_PROPERTY(qreal y READ y NOTIFY yChanged) - Q_PROPERTY(qreal z READ z NOTIFY zChanged) + Q_PROPERTY(qreal x READ x NOTIFY xChanged BINDABLE bindableX) + Q_PROPERTY(qreal y READ y NOTIFY yChanged BINDABLE bindableY) + Q_PROPERTY(qreal z READ z NOTIFY zChanged BINDABLE bindableZ) QML_NAMED_ELEMENT(GyroscopeReading) QML_UNCREATABLE("Cannot create GyroscopeReading") QML_ADDED_IN_VERSION(5,0) @@ -87,8 +87,11 @@ public: ~QmlGyroscopeReading(); qreal x() const; + QBindable<qreal> bindableX() const; qreal y() const; + QBindable<qreal> bindableY() const; qreal z() const; + QBindable<qreal> bindableZ() const; Q_SIGNALS: void xChanged(); @@ -99,9 +102,12 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QGyroscope *m_sensor; - qreal m_x; - qreal m_y; - qreal m_z; + Q_OBJECT_BINDABLE_PROPERTY(QmlGyroscopeReading, qreal, + m_x, &QmlGyroscopeReading::xChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlGyroscopeReading, qreal, + m_y, &QmlGyroscopeReading::yChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlGyroscopeReading, qreal, + m_z, &QmlGyroscopeReading::zChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlholstersensor.cpp b/src/sensorsquick/qmlholstersensor.cpp index cdefd683..d1b8863c 100644 --- a/src/sensorsquick/qmlholstersensor.cpp +++ b/src/sensorsquick/qmlholstersensor.cpp @@ -116,6 +116,11 @@ bool QmlHolsterReading::holstered() const return m_holstered; } +QBindable<bool> QmlHolsterReading::bindableHolstered() const +{ + return &m_holstered; +} + QSensorReading *QmlHolsterReading::reading() const { return m_sensor->reading(); @@ -123,9 +128,5 @@ QSensorReading *QmlHolsterReading::reading() const void QmlHolsterReading::readingUpdate() { - const bool holstered = m_sensor->reading()->holstered(); - if (m_holstered != holstered) { - m_holstered = holstered; - Q_EMIT holsteredChanged(); - } + m_holstered = m_sensor->reading()->holstered(); } diff --git a/src/sensorsquick/qmlholstersensor_p.h b/src/sensorsquick/qmlholstersensor_p.h index a64e2d12..39803764 100644 --- a/src/sensorsquick/qmlholstersensor_p.h +++ b/src/sensorsquick/qmlholstersensor_p.h @@ -65,8 +65,9 @@ public: explicit QmlHolsterSensor(QObject *parent = 0); ~QmlHolsterSensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QHolsterSensor *m_sensor; @@ -75,7 +76,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlHolsterReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(bool holstered READ holstered NOTIFY holsteredChanged) + Q_PROPERTY(bool holstered READ holstered + NOTIFY holsteredChanged BINDABLE bindableHolstered) QML_NAMED_ELEMENT(HolsterReading) QML_UNCREATABLE("Cannot create HolsterReading") QML_ADDED_IN_VERSION(5,1) @@ -84,6 +86,7 @@ public: ~QmlHolsterReading(); bool holstered() const; + QBindable<bool> bindableHolstered() const; Q_SIGNALS: void holsteredChanged(); @@ -93,7 +96,8 @@ private: void readingUpdate() override; QHolsterSensor *m_sensor; - bool m_holstered; + Q_OBJECT_BINDABLE_PROPERTY(QmlHolsterReading, bool, + m_holstered, &QmlHolsterReading::holsteredChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlhumiditysensor.cpp b/src/sensorsquick/qmlhumiditysensor.cpp index 37bf7a18..4715789c 100644 --- a/src/sensorsquick/qmlhumiditysensor.cpp +++ b/src/sensorsquick/qmlhumiditysensor.cpp @@ -118,6 +118,11 @@ qreal QmlHumidityReading::relativeHumidity() const return m_relativeHumidity; } +QBindable<qreal> QmlHumidityReading::bindableRelativeHumidity() const +{ + return &m_relativeHumidity; +} + /*! \qmlproperty qreal HumidityReading::absoluteHumidity This property holds the absolute humidity in grams per cubic meter (g/m3). @@ -130,6 +135,11 @@ qreal QmlHumidityReading::absoluteHumidity() const return m_absoluteHumidity; } +QBindable<qreal> QmlHumidityReading::bindableAbsoluteHumidity() const +{ + return &m_absoluteHumidity; +} + QSensorReading *QmlHumidityReading::reading() const { return m_sensor->reading(); @@ -137,14 +147,6 @@ QSensorReading *QmlHumidityReading::reading() const void QmlHumidityReading::readingUpdate() { - qreal humidity = m_sensor->reading()->relativeHumidity(); - if (m_relativeHumidity != humidity) { - m_relativeHumidity = humidity; - Q_EMIT relativeHumidityChanged(); - } - qreal abs = m_sensor->reading()->absoluteHumidity(); - if (m_absoluteHumidity != abs) { - m_absoluteHumidity = abs; - Q_EMIT absoluteHumidityChanged(); - } + m_relativeHumidity = m_sensor->reading()->relativeHumidity(); + m_absoluteHumidity = m_sensor->reading()->absoluteHumidity(); } diff --git a/src/sensorsquick/qmlhumiditysensor_p.h b/src/sensorsquick/qmlhumiditysensor_p.h index 40c49339..08083d90 100644 --- a/src/sensorsquick/qmlhumiditysensor_p.h +++ b/src/sensorsquick/qmlhumiditysensor_p.h @@ -67,8 +67,9 @@ public: explicit QmlHumiditySensor(QObject *parent = nullptr); ~QmlHumiditySensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QHumiditySensor *m_sensor; @@ -77,8 +78,10 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlHumidityReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal relativeHumidity READ relativeHumidity NOTIFY relativeHumidityChanged) - Q_PROPERTY(qreal absoluteHumidity READ absoluteHumidity NOTIFY absoluteHumidityChanged) + Q_PROPERTY(qreal relativeHumidity READ relativeHumidity + NOTIFY relativeHumidityChanged BINDABLE bindableRelativeHumidity) + Q_PROPERTY(qreal absoluteHumidity READ absoluteHumidity + NOTIFY absoluteHumidityChanged BINDABLE bindableAbsoluteHumidity) QML_NAMED_ELEMENT(HumidityReading) QML_UNCREATABLE("Cannot create HumidityReading") QML_ADDED_IN_VERSION(5,9) @@ -87,7 +90,9 @@ public: ~QmlHumidityReading(); qreal relativeHumidity() const; + QBindable<qreal> bindableRelativeHumidity() const; qreal absoluteHumidity() const; + QBindable<qreal> bindableAbsoluteHumidity() const; Q_SIGNALS: void relativeHumidityChanged(); @@ -98,8 +103,10 @@ private: void readingUpdate() override; QHumiditySensor *m_sensor; - qreal m_relativeHumidity; - qreal m_absoluteHumidity; + Q_OBJECT_BINDABLE_PROPERTY(QmlHumidityReading, qreal, + m_relativeHumidity, &QmlHumidityReading::relativeHumidityChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlHumidityReading, qreal, + m_absoluteHumidity, &QmlHumidityReading::absoluteHumidityChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlirproximitysensor.cpp b/src/sensorsquick/qmlirproximitysensor.cpp index 42e9cfe9..9623377a 100644 --- a/src/sensorsquick/qmlirproximitysensor.cpp +++ b/src/sensorsquick/qmlirproximitysensor.cpp @@ -114,6 +114,12 @@ qreal QmlIRProximitySensorReading::reflectance() const return m_reflectance; } +QBindable<qreal> QmlIRProximitySensorReading::bindableReflectance() const +{ + return &m_reflectance; +} + + QSensorReading *QmlIRProximitySensorReading::reading() const { return m_sensor->reading(); @@ -121,9 +127,5 @@ QSensorReading *QmlIRProximitySensorReading::reading() const void QmlIRProximitySensorReading::readingUpdate() { - qreal fl = m_sensor->reading()->reflectance(); - if (m_reflectance != fl) { - m_reflectance = fl; - Q_EMIT reflectanceChanged(); - } + m_reflectance = m_sensor->reading()->reflectance(); } diff --git a/src/sensorsquick/qmlirproximitysensor_p.h b/src/sensorsquick/qmlirproximitysensor_p.h index 6039794d..e67f6b78 100644 --- a/src/sensorsquick/qmlirproximitysensor_p.h +++ b/src/sensorsquick/qmlirproximitysensor_p.h @@ -66,8 +66,9 @@ public: explicit QmlIRProximitySensor(QObject *parent = 0); ~QmlIRProximitySensor(); -private: QSensor *sensor() const override; + +private: QIRProximitySensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -75,7 +76,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlIRProximitySensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal reflectance READ reflectance NOTIFY reflectanceChanged) + Q_PROPERTY(qreal reflectance READ reflectance + NOTIFY reflectanceChanged BINDABLE bindableReflectance) QML_NAMED_ELEMENT(IRProximityReading) QML_UNCREATABLE("Cannot create IRProximityReading") QML_ADDED_IN_VERSION(5,0) @@ -84,6 +86,7 @@ public: ~QmlIRProximitySensorReading(); qreal reflectance() const; + QBindable<qreal> bindableReflectance() const; Q_SIGNALS: void reflectanceChanged(); @@ -92,7 +95,8 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QIRProximitySensor *m_sensor; - qreal m_reflectance; + Q_OBJECT_BINDABLE_PROPERTY(QmlIRProximitySensorReading, qreal, + m_reflectance, &QmlIRProximitySensorReading::reflectanceChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmllidsensor.cpp b/src/sensorsquick/qmllidsensor.cpp index 698c03cc..68d92181 100644 --- a/src/sensorsquick/qmllidsensor.cpp +++ b/src/sensorsquick/qmllidsensor.cpp @@ -117,6 +117,11 @@ bool QmlLidReading::backLidClosed() const return m_backClosed; } +QBindable<bool> QmlLidReading::bindableBackLidClosed() const +{ + return &m_backClosed; +} + /*! \qmlproperty qreal LidReading::frontLidClosed This property holds whether the front lid is closed. @@ -129,6 +134,11 @@ bool QmlLidReading::frontLidClosed() const return m_frontClosed; } +QBindable<bool> QmlLidReading::bindableFrontLidClosed() const +{ + return &m_frontClosed; +} + QSensorReading *QmlLidReading::reading() const { return m_sensor->reading(); @@ -136,14 +146,6 @@ QSensorReading *QmlLidReading::reading() const void QmlLidReading::readingUpdate() { - const bool backClosed = m_sensor->reading()->backLidClosed(); - if (m_backClosed != backClosed) { - m_backClosed = backClosed; - Q_EMIT backLidChanged(m_backClosed); - } - const bool frontClosed = m_sensor->reading()->frontLidClosed(); - if (m_frontClosed != frontClosed) { - m_frontClosed = frontClosed; - Q_EMIT frontLidChanged(m_frontClosed); - } + m_backClosed = m_sensor->reading()->backLidClosed(); + m_frontClosed = m_sensor->reading()->frontLidClosed(); } diff --git a/src/sensorsquick/qmllidsensor_p.h b/src/sensorsquick/qmllidsensor_p.h index 99f6eba3..73242e0b 100644 --- a/src/sensorsquick/qmllidsensor_p.h +++ b/src/sensorsquick/qmllidsensor_p.h @@ -65,8 +65,9 @@ public: explicit QmlLidSensor(QObject *parent = 0); ~QmlLidSensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QLidSensor *m_sensor; @@ -75,8 +76,10 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlLidReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(bool backLidClosed READ backLidClosed NOTIFY backLidChanged) - Q_PROPERTY(bool frontLidClosed READ frontLidClosed NOTIFY frontLidChanged) + Q_PROPERTY(bool backLidClosed READ backLidClosed + NOTIFY backLidChanged BINDABLE bindableBackLidClosed) + Q_PROPERTY(bool frontLidClosed READ frontLidClosed + NOTIFY frontLidChanged BINDABLE bindableFrontLidClosed) QML_NAMED_ELEMENT(LidReading) QML_UNCREATABLE("Cannot create LidReading") QML_ADDED_IN_VERSION(5,9) @@ -85,7 +88,9 @@ public: ~QmlLidReading(); bool backLidClosed() const; + QBindable<bool> bindableBackLidClosed() const; bool frontLidClosed() const; + QBindable<bool> bindableFrontLidClosed() const; Q_SIGNALS: void backLidChanged(bool closed); @@ -96,8 +101,10 @@ private: void readingUpdate() override; QLidSensor *m_sensor; - bool m_backClosed; - bool m_frontClosed; + Q_OBJECT_BINDABLE_PROPERTY(QmlLidReading, bool, + m_backClosed, &QmlLidReading::backLidChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlLidReading, bool, + m_frontClosed, &QmlLidReading::frontLidChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmllightsensor.cpp b/src/sensorsquick/qmllightsensor.cpp index f60390bf..2be7e1e0 100644 --- a/src/sensorsquick/qmllightsensor.cpp +++ b/src/sensorsquick/qmllightsensor.cpp @@ -130,6 +130,11 @@ qreal QmlLightSensorReading::illuminance() const return m_illuminance; } +QBindable<qreal> QmlLightSensorReading::bindableIlluminance() const +{ + return &m_illuminance; +} + QSensorReading *QmlLightSensorReading::reading() const { return m_sensor->reading(); @@ -137,9 +142,5 @@ QSensorReading *QmlLightSensorReading::reading() const void QmlLightSensorReading::readingUpdate() { - qreal ill = m_sensor->reading()->lux(); - if (m_illuminance != ill) { - m_illuminance = ill; - Q_EMIT illuminanceChanged(); - } + m_illuminance = m_sensor->reading()->lux(); } diff --git a/src/sensorsquick/qmllightsensor_p.h b/src/sensorsquick/qmllightsensor_p.h index 137be444..66770349 100644 --- a/src/sensorsquick/qmllightsensor_p.h +++ b/src/sensorsquick/qmllightsensor_p.h @@ -68,12 +68,12 @@ public: ~QmlLightSensor(); qreal fieldOfView() const; + QSensor *sensor() const override; Q_SIGNALS: void fieldOfViewChanged(qreal fieldOfView); private: - QSensor *sensor() const override; QLightSensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -81,7 +81,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlLightSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal illuminance READ illuminance NOTIFY illuminanceChanged) + Q_PROPERTY(qreal illuminance READ illuminance + NOTIFY illuminanceChanged BINDABLE bindableIlluminance) QML_NAMED_ELEMENT(LightReading) QML_UNCREATABLE("Cannot create LightReading") QML_ADDED_IN_VERSION(5,0) @@ -90,6 +91,7 @@ public: ~QmlLightSensorReading(); qreal illuminance() const; + QBindable<qreal> bindableIlluminance() const; Q_SIGNALS: void illuminanceChanged(); @@ -98,7 +100,8 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QLightSensor *m_sensor; - qreal m_illuminance; + Q_OBJECT_BINDABLE_PROPERTY(QmlLightSensorReading, qreal, + m_illuminance, &QmlLightSensorReading::illuminanceChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlmagnetometer.cpp b/src/sensorsquick/qmlmagnetometer.cpp index e911d583..f2d144a5 100644 --- a/src/sensorsquick/qmlmagnetometer.cpp +++ b/src/sensorsquick/qmlmagnetometer.cpp @@ -137,6 +137,11 @@ qreal QmlMagnetometerReading::x() const return m_x; } +QBindable<qreal> QmlMagnetometerReading::bindableX() const +{ + return &m_x; +} + /*! \qmlproperty qreal MagnetometerReading::y This property holds the raw magnetic flux density on the Y axis. @@ -149,6 +154,11 @@ qreal QmlMagnetometerReading::y() const return m_y; } +QBindable<qreal> QmlMagnetometerReading::bindableY() const +{ + return &m_y; +} + /*! \qmlproperty qreal MagnetometerReading::z This property holds the raw magnetic flux density on the Z axis. @@ -161,6 +171,11 @@ qreal QmlMagnetometerReading::z() const return m_z; } +QBindable<qreal> QmlMagnetometerReading::bindableZ() const +{ + return &m_z; +} + /*! \qmlproperty qreal MagnetometerReading::calibrationLevel This property holds the accuracy of the reading. @@ -173,6 +188,11 @@ qreal QmlMagnetometerReading::calibrationLevel() const return m_calibrationLevel; } +QBindable<qreal> QmlMagnetometerReading::bindableCalibrationLevel() const +{ + return &m_calibrationLevel; +} + QSensorReading *QmlMagnetometerReading::reading() const { return m_sensor->reading(); @@ -180,24 +200,8 @@ QSensorReading *QmlMagnetometerReading::reading() const void QmlMagnetometerReading::readingUpdate() { - qreal magX = m_sensor->reading()->x(); - if (m_x != magX) { - m_x = magX; - Q_EMIT xChanged(); - } - qreal magY = m_sensor->reading()->y(); - if (m_y != magY) { - m_y = magY; - Q_EMIT yChanged(); - } - qreal magZ = m_sensor->reading()->z(); - if (m_z != magZ) { - m_z = magZ; - Q_EMIT zChanged(); - } - qreal calLevel = m_sensor->reading()->calibrationLevel(); - if (m_calibrationLevel != calLevel) { - m_calibrationLevel = calLevel; - Q_EMIT calibrationLevelChanged(); - } + m_x = m_sensor->reading()->x(); + m_y = m_sensor->reading()->y(); + m_z = m_sensor->reading()->z(); + m_calibrationLevel= m_sensor->reading()->calibrationLevel(); } diff --git a/src/sensorsquick/qmlmagnetometer_p.h b/src/sensorsquick/qmlmagnetometer_p.h index ef30f6ff..36e41d56 100644 --- a/src/sensorsquick/qmlmagnetometer_p.h +++ b/src/sensorsquick/qmlmagnetometer_p.h @@ -70,11 +70,12 @@ public: bool returnGeoValues() const; void setReturnGeoValues(bool geo); + QSensor *sensor() const override; + Q_SIGNALS: void returnGeoValuesChanged(bool returnGeoValues); private: - QSensor *sensor() const override; QMagnetometer *m_sensor; QmlSensorReading *createReading() const override; }; @@ -82,10 +83,11 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlMagnetometerReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal x READ x NOTIFY xChanged) - Q_PROPERTY(qreal y READ y NOTIFY yChanged) - Q_PROPERTY(qreal z READ z NOTIFY zChanged) - Q_PROPERTY(qreal calibrationLevel READ calibrationLevel NOTIFY calibrationLevelChanged) + Q_PROPERTY(qreal x READ x NOTIFY xChanged BINDABLE bindableX) + Q_PROPERTY(qreal y READ y NOTIFY yChanged BINDABLE bindableY) + Q_PROPERTY(qreal z READ z NOTIFY zChanged BINDABLE bindableZ) + Q_PROPERTY(qreal calibrationLevel READ calibrationLevel + NOTIFY calibrationLevelChanged BINDABLE bindableCalibrationLevel) QML_NAMED_ELEMENT(MagnetometerReading) QML_UNCREATABLE("Cannot create MagnetometerReading") QML_ADDED_IN_VERSION(5,0) @@ -94,9 +96,14 @@ public: ~QmlMagnetometerReading(); qreal x() const; + QBindable<qreal> bindableX() const; qreal y() const; + QBindable<qreal> bindableY() const; qreal z() const; + QBindable<qreal> bindableZ() const; qreal calibrationLevel() const; + QBindable<qreal> bindableCalibrationLevel() const; + Q_SIGNALS: void xChanged(); @@ -108,10 +115,14 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QMagnetometer *m_sensor; - qreal m_x; - qreal m_y; - qreal m_z; - qreal m_calibrationLevel; + Q_OBJECT_BINDABLE_PROPERTY(QmlMagnetometerReading, qreal, + m_x, &QmlMagnetometerReading::xChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlMagnetometerReading, qreal, + m_y, &QmlMagnetometerReading::yChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlMagnetometerReading, qreal, + m_z, &QmlMagnetometerReading::zChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlMagnetometerReading, qreal, + m_calibrationLevel, &QmlMagnetometerReading::calibrationLevelChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlorientationsensor.cpp b/src/sensorsquick/qmlorientationsensor.cpp index 0cf9cc19..c44df521 100644 --- a/src/sensorsquick/qmlorientationsensor.cpp +++ b/src/sensorsquick/qmlorientationsensor.cpp @@ -126,6 +126,11 @@ QOrientationReading::Orientation QmlOrientationSensorReading::orientation() cons return m_orientation; } +QBindable<QOrientationReading::Orientation> QmlOrientationSensorReading::bindableOrientation() const +{ + return &m_orientation; +} + QSensorReading *QmlOrientationSensorReading::reading() const { return m_sensor->reading(); @@ -133,9 +138,5 @@ QSensorReading *QmlOrientationSensorReading::reading() const void QmlOrientationSensorReading::readingUpdate() { - QOrientationReading::Orientation o = m_sensor->reading()->orientation(); - if (m_orientation != o) { - m_orientation = o; - Q_EMIT orientationChanged(); - } + m_orientation = m_sensor->reading()->orientation(); } diff --git a/src/sensorsquick/qmlorientationsensor_p.h b/src/sensorsquick/qmlorientationsensor_p.h index 4b04b3e8..9077e338 100644 --- a/src/sensorsquick/qmlorientationsensor_p.h +++ b/src/sensorsquick/qmlorientationsensor_p.h @@ -67,9 +67,9 @@ public: explicit QmlOrientationSensor(QObject *parent = 0); ~QmlOrientationSensor(); + QSensor *sensor() const override; private: - QSensor *sensor() const override; QOrientationSensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -77,7 +77,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlOrientationSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(QOrientationReading::Orientation orientation READ orientation NOTIFY orientationChanged) + Q_PROPERTY(QOrientationReading::Orientation orientation READ orientation + NOTIFY orientationChanged BINDABLE bindableOrientation) QML_NAMED_ELEMENT(OrientationReading) QML_UNCREATABLE("Cannot create OrientationReading") QML_ADDED_IN_VERSION(5,0) @@ -87,6 +88,7 @@ public: ~QmlOrientationSensorReading(); QOrientationReading::Orientation orientation() const; + QBindable<QOrientationReading::Orientation> bindableOrientation() const; Q_SIGNALS: void orientationChanged(); @@ -95,7 +97,8 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QOrientationSensor *m_sensor; - QOrientationReading::Orientation m_orientation; + Q_OBJECT_BINDABLE_PROPERTY(QmlOrientationSensorReading, QOrientationReading::Orientation, + m_orientation, &QmlOrientationSensorReading::orientationChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlpressuresensor.cpp b/src/sensorsquick/qmlpressuresensor.cpp index 08a434b0..054f089e 100644 --- a/src/sensorsquick/qmlpressuresensor.cpp +++ b/src/sensorsquick/qmlpressuresensor.cpp @@ -117,6 +117,11 @@ qreal QmlPressureReading::pressure() const return m_pressure; } +QBindable<qreal> QmlPressureReading::bindablePressure() const +{ + return &m_pressure; +} + /*! \qmlproperty qreal PressureReading::temperature This property holds the pressure sensor's temperature value in degrees Celsius. @@ -130,6 +135,11 @@ qreal QmlPressureReading::temperature() const return m_temperature; } +QBindable<qreal> QmlPressureReading::bindableTemperature() const +{ + return &m_temperature; +} + QSensorReading *QmlPressureReading::reading() const { return m_sensor->reading(); @@ -137,15 +147,6 @@ QSensorReading *QmlPressureReading::reading() const void QmlPressureReading::readingUpdate() { - qreal pressure = m_sensor->reading()->pressure(); - if (m_pressure != pressure) { - m_pressure = pressure; - Q_EMIT pressureChanged(); - } - - qreal temperature = m_sensor->reading()->temperature(); - if (m_temperature != temperature) { - m_temperature = temperature; - Q_EMIT temperatureChanged(); - } + m_pressure = m_sensor->reading()->pressure(); + m_temperature = m_sensor->reading()->temperature(); } diff --git a/src/sensorsquick/qmlpressuresensor_p.h b/src/sensorsquick/qmlpressuresensor_p.h index b4b353d1..61e24a55 100644 --- a/src/sensorsquick/qmlpressuresensor_p.h +++ b/src/sensorsquick/qmlpressuresensor_p.h @@ -65,8 +65,9 @@ public: explicit QmlPressureSensor(QObject *parent = 0); ~QmlPressureSensor(); -private: QSensor *sensor() const override; + +private: QmlSensorReading *createReading() const override; QPressureSensor *m_sensor; @@ -75,8 +76,9 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlPressureReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal pressure READ pressure NOTIFY pressureChanged) - Q_PROPERTY(qreal temperature READ temperature NOTIFY temperatureChanged REVISION 1) + Q_PROPERTY(qreal pressure READ pressure NOTIFY pressureChanged BINDABLE bindablePressure) + Q_PROPERTY(qreal temperature READ temperature + NOTIFY temperatureChanged REVISION 1 BINDABLE bindableTemperature) QML_NAMED_ELEMENT(PressureReading) QML_UNCREATABLE("Cannot create PressureReading") QML_ADDED_IN_VERSION(5,1) @@ -85,7 +87,9 @@ public: ~QmlPressureReading(); qreal pressure() const; + QBindable<qreal> bindablePressure() const; qreal temperature() const; + QBindable<qreal> bindableTemperature() const; Q_SIGNALS: void pressureChanged(); @@ -96,8 +100,10 @@ private: void readingUpdate() override; QPressureSensor *m_sensor; - qreal m_pressure; - qreal m_temperature; + Q_OBJECT_BINDABLE_PROPERTY(QmlPressureReading, qreal, + m_pressure, &QmlPressureReading::pressureChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlPressureReading, qreal, + m_temperature, &QmlPressureReading::temperatureChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlproximitysensor.cpp b/src/sensorsquick/qmlproximitysensor.cpp index 73767f64..fcf73452 100644 --- a/src/sensorsquick/qmlproximitysensor.cpp +++ b/src/sensorsquick/qmlproximitysensor.cpp @@ -116,6 +116,11 @@ bool QmlProximitySensorReading::near() const return m_near; } +QBindable<bool> QmlProximitySensorReading::bindableNear() const +{ + return &m_near; +} + QSensorReading *QmlProximitySensorReading::reading() const { return m_sensor->reading(); @@ -123,9 +128,5 @@ QSensorReading *QmlProximitySensorReading::reading() const void QmlProximitySensorReading::readingUpdate() { - bool pNear = m_sensor->reading()->close(); - if (m_near != pNear) { - m_near = pNear; - Q_EMIT nearChanged(); - } + m_near = m_sensor->reading()->close(); } diff --git a/src/sensorsquick/qmlproximitysensor_p.h b/src/sensorsquick/qmlproximitysensor_p.h index 9d28dfcf..0eab0f8e 100644 --- a/src/sensorsquick/qmlproximitysensor_p.h +++ b/src/sensorsquick/qmlproximitysensor_p.h @@ -68,9 +68,9 @@ public: explicit QmlProximitySensor(QObject *parent = 0); ~QmlProximitySensor(); + QSensor *sensor() const override; private: - QSensor *sensor() const override; QProximitySensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -78,7 +78,7 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlProximitySensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(bool near READ near NOTIFY nearChanged) + Q_PROPERTY(bool near READ near NOTIFY nearChanged BINDABLE bindableNear) QML_NAMED_ELEMENT(ProximityReading) QML_UNCREATABLE("Cannot create ProximityReading") QML_ADDED_IN_VERSION(5,0) @@ -87,6 +87,7 @@ public: ~QmlProximitySensorReading(); bool near() const; + QBindable<bool> bindableNear() const; Q_SIGNALS: void nearChanged(); @@ -95,7 +96,8 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QProximitySensor *m_sensor; - bool m_near; + Q_OBJECT_BINDABLE_PROPERTY(QmlProximitySensorReading, bool, + m_near, &QmlProximitySensorReading::nearChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlrotationsensor.cpp b/src/sensorsquick/qmlrotationsensor.cpp index 4eb6aac7..71e77c01 100644 --- a/src/sensorsquick/qmlrotationsensor.cpp +++ b/src/sensorsquick/qmlrotationsensor.cpp @@ -135,6 +135,11 @@ qreal QmlRotationSensorReading::x() const return m_x; } +QBindable<qreal> QmlRotationSensorReading::bindableX() const +{ + return &m_x; +} + /*! \qmlproperty qreal RotationReading::y This property holds the rotation around the y axis. @@ -147,6 +152,11 @@ qreal QmlRotationSensorReading::y() const return m_y; } +QBindable<qreal> QmlRotationSensorReading::bindableY() const +{ + return &m_y; +} + /*! \qmlproperty qreal RotationReading::z This property holds the rotation around the z axis. @@ -159,6 +169,11 @@ qreal QmlRotationSensorReading::z() const return m_z; } +QBindable<qreal> QmlRotationSensorReading::bindableZ() const +{ + return &m_z; +} + QSensorReading *QmlRotationSensorReading::reading() const { return m_sensor->reading(); @@ -166,19 +181,7 @@ QSensorReading *QmlRotationSensorReading::reading() const void QmlRotationSensorReading::readingUpdate() { - qreal rX = m_sensor->reading()->x(); - if (m_x != rX) { - m_x = rX; - Q_EMIT xChanged(); - } - qreal rY = m_sensor->reading()->y(); - if (m_y != rY) { - m_y = rY; - Q_EMIT yChanged(); - } - qreal rZ = m_sensor->reading()->z(); - if (m_z != rZ) { - m_z = rZ; - Q_EMIT zChanged(); - } + m_x = m_sensor->reading()->x(); + m_y = m_sensor->reading()->y(); + m_z = m_sensor->reading()->z(); } diff --git a/src/sensorsquick/qmlrotationsensor_p.h b/src/sensorsquick/qmlrotationsensor_p.h index f14ad791..a3799968 100644 --- a/src/sensorsquick/qmlrotationsensor_p.h +++ b/src/sensorsquick/qmlrotationsensor_p.h @@ -68,12 +68,12 @@ public: ~QmlRotationSensor(); bool hasZ() const; + QSensor *sensor() const override; Q_SIGNALS: void hasZChanged(bool hasZ); private: - QSensor *sensor() const override; void _update() override; QRotationSensor *m_sensor; QmlSensorReading *createReading() const override; @@ -82,9 +82,9 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlRotationSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal x READ x NOTIFY xChanged) - Q_PROPERTY(qreal y READ y NOTIFY yChanged) - Q_PROPERTY(qreal z READ z NOTIFY zChanged) + Q_PROPERTY(qreal x READ x NOTIFY xChanged BINDABLE bindableX) + Q_PROPERTY(qreal y READ y NOTIFY yChanged BINDABLE bindableY) + Q_PROPERTY(qreal z READ z NOTIFY zChanged BINDABLE bindableZ) QML_NAMED_ELEMENT(RotationReading) QML_UNCREATABLE("Cannot create RotationReading") QML_ADDED_IN_VERSION(5,0) @@ -93,8 +93,11 @@ public: ~QmlRotationSensorReading(); qreal x() const; + QBindable<qreal> bindableX() const; qreal y() const; + QBindable<qreal> bindableY() const; qreal z() const; + QBindable<qreal> bindableZ() const; Q_SIGNALS: void xChanged(); @@ -105,9 +108,12 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QRotationSensor *m_sensor; - qreal m_x; - qreal m_y; - qreal m_z; + Q_OBJECT_BINDABLE_PROPERTY(QmlRotationSensorReading, qreal, + m_x, &QmlRotationSensorReading::xChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlRotationSensorReading, qreal, + m_y, &QmlRotationSensorReading::yChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlRotationSensorReading, qreal, + m_z, &QmlRotationSensorReading::zChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmlsensor.cpp b/src/sensorsquick/qmlsensor.cpp index 2ff544a5..970f8198 100644 --- a/src/sensorsquick/qmlsensor.cpp +++ b/src/sensorsquick/qmlsensor.cpp @@ -307,6 +307,11 @@ QmlSensorReading *QmlSensor::reading() const return m_reading; } +QBindable<QmlSensorReading*> QmlSensor::bindableReading() const +{ + return &m_reading; +} + /*! \qmlproperty Sensor::AxesOrientationMode Sensor::axesOrientationMode \since QtSensors 5.1 @@ -455,7 +460,7 @@ void QmlSensor::componentComplete() if (sensor()->connectToBackend()) Q_EMIT connectedToBackendChanged(); - m_reading = createReading(); + m_reading.setValueBypassingBindings(createReading()); m_reading->setParent(this); if (oldDataRate != dataRate()) Q_EMIT dataRateChanged(); @@ -504,6 +509,7 @@ void QmlSensor::updateReading() { if (m_reading) { m_reading->update(); + m_reading.notify(); Q_EMIT readingChanged(); } } @@ -524,7 +530,7 @@ void QmlSensor::updateReading() */ QmlSensorReading::QmlSensorReading(QSensor *) - : QObject(0) + : QObject(nullptr) { } @@ -544,13 +550,15 @@ quint64 QmlSensorReading::timestamp() const return m_timestamp; } +QBindable<quint64> QmlSensorReading::bindableTimestamp() const +{ + return &m_timestamp; +} + + void QmlSensorReading::update() { - quint64 ts = reading()->timestamp(); - if (m_timestamp != ts) { - m_timestamp = ts; - Q_EMIT timestampChanged(); - } + m_timestamp = reading()->timestamp(); readingUpdate(); } diff --git a/src/sensorsquick/qmlsensor_p.h b/src/sensorsquick/qmlsensor_p.h index 276b6e76..c6c748e8 100644 --- a/src/sensorsquick/qmlsensor_p.h +++ b/src/sensorsquick/qmlsensor_p.h @@ -77,7 +77,7 @@ class Q_SENSORSQUICK_PRIVATE_EXPORT QmlSensor : public QObject, public QQmlParse Q_PROPERTY(bool connectedToBackend READ isConnectedToBackend NOTIFY connectedToBackendChanged) Q_PROPERTY(QQmlListProperty<QmlSensorRange> availableDataRates READ availableDataRates NOTIFY availableDataRatesChanged) Q_PROPERTY(int dataRate READ dataRate WRITE setDataRate NOTIFY dataRateChanged) - Q_PROPERTY(QmlSensorReading* reading READ reading NOTIFY readingChanged) + Q_PROPERTY(QmlSensorReading* reading READ reading NOTIFY readingChanged BINDABLE bindableReading) Q_PROPERTY(bool busy READ isBusy NOTIFY busyChanged) Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged) Q_PROPERTY(QQmlListProperty<QmlSensorOutputRange> outputRanges READ outputRanges NOTIFY outputRangesChanged) @@ -138,6 +138,7 @@ public: int error() const; QmlSensorReading *reading() const; + QBindable<QmlSensorReading*> bindableReading() const; AxesOrientationMode axesOrientationMode() const; void setAxesOrientationMode(AxesOrientationMode axesOrientationMode); @@ -156,6 +157,8 @@ public: virtual QSensor *sensor() const = 0; + void componentComplete() override; + public Q_SLOTS: bool start(); void stop(); @@ -187,21 +190,19 @@ protected: private Q_SLOTS: void updateReading(); -protected Q_SLOTS: - void componentComplete() override; - private: void classBegin() override; virtual void _update(); bool m_componentComplete = false; bool m_activateOnComplete = false; - QmlSensorReading *m_reading = nullptr; + Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QmlSensor, QmlSensorReading*, + m_reading, nullptr) }; class Q_SENSORSQUICK_PRIVATE_EXPORT QmlSensorReading : public QObject { Q_OBJECT - Q_PROPERTY(quint64 timestamp READ timestamp NOTIFY timestampChanged) + Q_PROPERTY(quint64 timestamp READ timestamp NOTIFY timestampChanged BINDABLE bindableTimestamp) QML_NAMED_ELEMENT(SensorReading) QML_UNCREATABLE("Cannot create SensorReading") QML_ADDED_IN_VERSION(5,0) @@ -210,6 +211,8 @@ public: ~QmlSensorReading(); quint64 timestamp() const; + QBindable<quint64> bindableTimestamp() const; + void update(); Q_SIGNALS: @@ -218,7 +221,8 @@ Q_SIGNALS: private: virtual QSensorReading *reading() const = 0; virtual void readingUpdate() = 0; - quint64 m_timestamp; + Q_OBJECT_BINDABLE_PROPERTY(QmlSensorReading, quint64, + m_timestamp, &QmlSensorReading::timestampChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmltapsensor.cpp b/src/sensorsquick/qmltapsensor.cpp index faeba623..190bda45 100644 --- a/src/sensorsquick/qmltapsensor.cpp +++ b/src/sensorsquick/qmltapsensor.cpp @@ -147,6 +147,12 @@ QTapReading::TapDirection QmlTapSensorReading::tapDirection() const return m_tapDirection; } +QBindable<QTapReading::TapDirection> QmlTapSensorReading::bindableTapDirection() const +{ + return &m_tapDirection; +} + + /*! \qmlproperty bool TapReading::doubleTap This property holds a value indicating if there was a single or double tap. @@ -159,6 +165,11 @@ bool QmlTapSensorReading::isDoubleTap() const return m_isDoubleTap; } +QBindable<bool> QmlTapSensorReading::bindableDoubleTap() const +{ + return &m_isDoubleTap; +} + QSensorReading *QmlTapSensorReading::reading() const { return const_cast<QTapSensor*>(m_sensor)->reading(); @@ -166,14 +177,6 @@ QSensorReading *QmlTapSensorReading::reading() const void QmlTapSensorReading::readingUpdate() { - QTapReading::TapDirection td = m_sensor->reading()->tapDirection(); - if (m_tapDirection != td) { - m_tapDirection = td; - Q_EMIT tapDirectionChanged(); - } - bool dTap = m_sensor->reading()->isDoubleTap(); - if (m_isDoubleTap != dTap) { - m_isDoubleTap = dTap; - Q_EMIT isDoubleTapChanged(); - } + m_tapDirection = m_sensor->reading()->tapDirection(); + m_isDoubleTap = m_sensor->reading()->isDoubleTap(); } diff --git a/src/sensorsquick/qmltapsensor_p.h b/src/sensorsquick/qmltapsensor_p.h index 7d8800c0..6d600544 100644 --- a/src/sensorsquick/qmltapsensor_p.h +++ b/src/sensorsquick/qmltapsensor_p.h @@ -71,11 +71,12 @@ public: bool returnDoubleTapEvents() const; void setReturnDoubleTapEvents(bool ret); + QSensor *sensor() const override; + Q_SIGNALS: void returnDoubleTapEventsChanged(bool returnDoubleTapEvents); private: - QSensor *sensor() const override; QTapSensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -83,8 +84,10 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlTapSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(QTapReading::TapDirection tapDirection READ tapDirection NOTIFY tapDirectionChanged) - Q_PROPERTY(bool doubleTap READ isDoubleTap NOTIFY isDoubleTapChanged) + Q_PROPERTY(QTapReading::TapDirection tapDirection READ tapDirection + NOTIFY tapDirectionChanged BINDABLE bindableTapDirection) + Q_PROPERTY(bool doubleTap READ isDoubleTap + NOTIFY isDoubleTapChanged BINDABLE bindableDoubleTap) QML_NAMED_ELEMENT(TapReading) QML_UNCREATABLE("Cannot create TapReading") QML_ADDED_IN_VERSION(5,0) @@ -94,7 +97,9 @@ public: ~QmlTapSensorReading(); QTapReading::TapDirection tapDirection() const; + QBindable<QTapReading::TapDirection> bindableTapDirection() const; bool isDoubleTap() const; + QBindable<bool> bindableDoubleTap() const; Q_SIGNALS: void tapDirectionChanged(); @@ -104,8 +109,10 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QTapSensor *m_sensor; - QTapReading::TapDirection m_tapDirection; - bool m_isDoubleTap; + Q_OBJECT_BINDABLE_PROPERTY(QmlTapSensorReading, QTapReading::TapDirection, + m_tapDirection, &QmlTapSensorReading::tapDirectionChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlTapSensorReading, bool, + m_isDoubleTap, &QmlTapSensorReading::isDoubleTapChanged) }; QT_END_NAMESPACE diff --git a/src/sensorsquick/qmltiltsensor.cpp b/src/sensorsquick/qmltiltsensor.cpp index 81b4e696..64ea3a98 100644 --- a/src/sensorsquick/qmltiltsensor.cpp +++ b/src/sensorsquick/qmltiltsensor.cpp @@ -131,6 +131,11 @@ qreal QmlTiltSensorReading::yRotation() const return m_yRotation; } +QBindable<qreal> QmlTiltSensorReading::bindableYRotation() const +{ + return &m_yRotation; +} + /*! \qmlproperty qreal TiltReading::xRotation This property holds the amount of tilt on the X axis. @@ -143,6 +148,11 @@ qreal QmlTiltSensorReading::xRotation() const return m_xRotation; } +QBindable<qreal> QmlTiltSensorReading::bindableXRotation() const +{ + return &m_xRotation; +} + QSensorReading *QmlTiltSensorReading::reading() const { return m_sensor->reading(); @@ -150,14 +160,6 @@ QSensorReading *QmlTiltSensorReading::reading() const void QmlTiltSensorReading::readingUpdate() { - qreal tiltY = m_sensor->reading()->yRotation(); - if (m_yRotation != tiltY) { - m_yRotation = tiltY; - Q_EMIT yRotationChanged(); - } - qreal tiltX = m_sensor->reading()->xRotation(); - if (m_xRotation != tiltX) { - m_xRotation = tiltX; - Q_EMIT xRotationChanged(); - } + m_yRotation = m_sensor->reading()->yRotation(); + m_xRotation = m_sensor->reading()->xRotation(); } diff --git a/src/sensorsquick/qmltiltsensor_p.h b/src/sensorsquick/qmltiltsensor_p.h index f41757b3..f7fbe6d5 100644 --- a/src/sensorsquick/qmltiltsensor_p.h +++ b/src/sensorsquick/qmltiltsensor_p.h @@ -69,8 +69,9 @@ public: ~QmlTiltSensor(); Q_INVOKABLE void calibrate(); -private: QSensor *sensor() const override; + +private: QTiltSensor *m_sensor; QmlSensorReading *createReading() const override; }; @@ -78,8 +79,8 @@ private: class Q_SENSORSQUICK_PRIVATE_EXPORT QmlTiltSensorReading : public QmlSensorReading { Q_OBJECT - Q_PROPERTY(qreal yRotation READ yRotation NOTIFY yRotationChanged) - Q_PROPERTY(qreal xRotation READ xRotation NOTIFY xRotationChanged) + Q_PROPERTY(qreal yRotation READ yRotation NOTIFY yRotationChanged BINDABLE bindableYRotation) + Q_PROPERTY(qreal xRotation READ xRotation NOTIFY xRotationChanged BINDABLE bindableXRotation) QML_NAMED_ELEMENT(TiltReading) QML_UNCREATABLE("Cannot create TiltReading") QML_ADDED_IN_VERSION(5,0) @@ -88,7 +89,9 @@ public: ~QmlTiltSensorReading(); qreal yRotation() const; + QBindable<qreal> bindableYRotation() const; qreal xRotation() const; + QBindable<qreal> bindableXRotation() const; Q_SIGNALS: void yRotationChanged(); @@ -98,8 +101,10 @@ private: QSensorReading *reading() const override; void readingUpdate() override; QTiltSensor *m_sensor; - qreal m_yRotation; - qreal m_xRotation; + Q_OBJECT_BINDABLE_PROPERTY(QmlTiltSensorReading, qreal, + m_yRotation, &QmlTiltSensorReading::yRotationChanged) + Q_OBJECT_BINDABLE_PROPERTY(QmlTiltSensorReading, qreal, + m_xRotation, &QmlTiltSensorReading::xRotationChanged) }; QT_END_NAMESPACE |