diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2013-01-31 18:59:24 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-08 11:17:51 +0100 |
commit | 2dba878107fbe290782af720981ce28ec3723e7a (patch) | |
tree | cfd0ef94263c7cf45a61a2eb3cf33a00adb66cb5 /src | |
parent | 034fda27751b506ee13caf18820d07b73b95c915 (diff) |
Convert QMagnetometer::returnGeoValues to a proper property
Change-Id: I39cde0046e8a3fc77edbcf5c9510e2dcf6c731c7
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/sensors/plugins.qmltypes | 5 | ||||
-rw-r--r-- | src/imports/sensors/qmlmagnetometer.cpp | 7 | ||||
-rw-r--r-- | src/imports/sensors/qmlmagnetometer.h | 3 | ||||
-rw-r--r-- | src/imports/sensors/qmlsensor.h | 2 | ||||
-rw-r--r-- | src/plugins/sensors/blackberry/bbmagnetometer.cpp | 4 | ||||
-rw-r--r-- | src/sensors/qmagnetometer.cpp | 18 | ||||
-rw-r--r-- | src/sensors/qmagnetometer.h | 13 | ||||
-rw-r--r-- | src/sensors/qmagnetometer_p.h | 13 |
8 files changed, 56 insertions, 9 deletions
diff --git a/src/imports/sensors/plugins.qmltypes b/src/imports/sensors/plugins.qmltypes index 97a2bcd1..bd879f81 100644 --- a/src/imports/sensors/plugins.qmltypes +++ b/src/imports/sensors/plugins.qmltypes @@ -122,6 +122,11 @@ Module { name: "QmlMagnetometer" prototype: "QmlSensor" exports: ["Magnetometer 5.0", "Magnetometer 5.1"] + Property { name: "returnGeoValues"; type: "bool" } + Signal { + name: "returnGeoValuesChanged" + Parameter { name: "returnGeoValues"; type: "bool" } + } } Component { name: "QmlMagnetometerReading" diff --git a/src/imports/sensors/qmlmagnetometer.cpp b/src/imports/sensors/qmlmagnetometer.cpp index 1f95b3f2..2c531f70 100644 --- a/src/imports/sensors/qmlmagnetometer.cpp +++ b/src/imports/sensors/qmlmagnetometer.cpp @@ -65,6 +65,8 @@ QmlMagnetometer::QmlMagnetometer(QObject *parent) : QmlSensor(parent) , m_sensor(new QMagnetometer(this)) { + connect(m_sensor, SIGNAL(returnGeoValuesChanged(bool)), + this, SIGNAL(returnGeoValuesChanged(bool))); } QmlMagnetometer::~QmlMagnetometer() @@ -90,13 +92,12 @@ QSensor *QmlMagnetometer::sensor() const bool QmlMagnetometer::returnGeoValues() const { - return m_sensor->property("returnGeoValues").toBool(); + return m_sensor->returnGeoValues(); } void QmlMagnetometer::setReturnGeoValues(bool geo) { - if (m_sensor->property("returnGeoValues").toBool() == geo) return; - m_sensor->setProperty("returnGeoValues", geo); + m_sensor->setReturnGeoValues(geo); } /*! diff --git a/src/imports/sensors/qmlmagnetometer.h b/src/imports/sensors/qmlmagnetometer.h index a008a36c..6e5facda 100644 --- a/src/imports/sensors/qmlmagnetometer.h +++ b/src/imports/sensors/qmlmagnetometer.h @@ -51,6 +51,7 @@ class QMagnetometer; class QmlMagnetometer : public QmlSensor { Q_OBJECT + Q_PROPERTY(bool returnGeoValues READ returnGeoValues WRITE setReturnGeoValues NOTIFY returnGeoValuesChanged) public: explicit QmlMagnetometer(QObject *parent = 0); ~QmlMagnetometer(); @@ -58,6 +59,8 @@ public: bool returnGeoValues() const; void setReturnGeoValues(bool geo); +Q_SIGNALS: + void returnGeoValuesChanged(bool returnGeoValues); private: QSensor *sensor() const Q_DECL_OVERRIDE; diff --git a/src/imports/sensors/qmlsensor.h b/src/imports/sensors/qmlsensor.h index e538ed0a..b68a7b9d 100644 --- a/src/imports/sensors/qmlsensor.h +++ b/src/imports/sensors/qmlsensor.h @@ -154,6 +154,8 @@ protected: private Q_SLOTS: void updateReading(); + +protected Q_SLOTS: void componentComplete(); private: diff --git a/src/plugins/sensors/blackberry/bbmagnetometer.cpp b/src/plugins/sensors/blackberry/bbmagnetometer.cpp index 489a0481..5ece465e 100644 --- a/src/plugins/sensors/blackberry/bbmagnetometer.cpp +++ b/src/plugins/sensors/blackberry/bbmagnetometer.cpp @@ -63,7 +63,9 @@ bool BbMagnetometer::updateReadingFromEvent(const sensor_event_t &event, QMagnet reading->setY(y); reading->setZ(z); - const bool returnGeoValues = sensor()->property("returnGeoValues").toBool(); + QMagnetometer * const magnetometer = qobject_cast<QMagnetometer *>(sensor()); + Q_ASSERT(magnetometer); + const bool returnGeoValues = magnetometer->returnGeoValues(); if (returnGeoValues) { switch (event.accuracy) { case SENSOR_ACCURACY_UNRELIABLE: reading->setCalibrationLevel(0.0f); break; diff --git a/src/sensors/qmagnetometer.cpp b/src/sensors/qmagnetometer.cpp index 60b2df83..f5f563aa 100644 --- a/src/sensors/qmagnetometer.cpp +++ b/src/sensors/qmagnetometer.cpp @@ -210,7 +210,7 @@ char const * const QMagnetometer::type("QMagnetometer"); Construct the sensor as a child of \a parent. */ QMagnetometer::QMagnetometer(QObject *parent) - : QSensor(QMagnetometer::type, parent) + : QSensor(QMagnetometer::type, *new QMagnetometerPrivate, parent) { } @@ -236,10 +236,24 @@ QMagnetometer::~QMagnetometer() Set to true to return geomagnetic flux density. Set to false (the default) to return raw magnetic flux density. - Note that you must access this property via QObject::property() and QObject::setProperty(). The property must be set before calling start(). */ +bool QMagnetometer::returnGeoValues() const +{ + Q_D(const QMagnetometer); + return d->returnGeoValues; +} + +void QMagnetometer::setReturnGeoValues(bool returnGeoValues) +{ + Q_D(QMagnetometer); + if (d->returnGeoValues != returnGeoValues) { + d->returnGeoValues = returnGeoValues; + emit returnGeoValuesChanged(returnGeoValues); + } +} + #include "moc_qmagnetometer.cpp" QT_END_NAMESPACE diff --git a/src/sensors/qmagnetometer.h b/src/sensors/qmagnetometer.h index b4ed56ad..93b6157f 100644 --- a/src/sensors/qmagnetometer.h +++ b/src/sensors/qmagnetometer.h @@ -78,19 +78,26 @@ private: bool filter(QSensorReading *reading) { return filter(static_cast<QMagnetometerReading*>(reading)); } }; +class QMagnetometerPrivate; + class Q_SENSORS_EXPORT QMagnetometer : public QSensor { Q_OBJECT -#ifdef Q_QDOC - Q_PROPERTY(bool returnGeoValues) -#endif + Q_PROPERTY(bool returnGeoValues READ returnGeoValues WRITE setReturnGeoValues NOTIFY returnGeoValuesChanged) public: explicit QMagnetometer(QObject *parent = 0); virtual ~QMagnetometer(); QMagnetometerReading *reading() const { return static_cast<QMagnetometerReading*>(QSensor::reading()); } static char const * const type; + bool returnGeoValues() const; + void setReturnGeoValues(bool returnGeoValues); + +Q_SIGNALS: + void returnGeoValuesChanged(bool returnGeoValues); + private: + Q_DECLARE_PRIVATE(QMagnetometer) Q_DISABLE_COPY(QMagnetometer) }; diff --git a/src/sensors/qmagnetometer_p.h b/src/sensors/qmagnetometer_p.h index 9ac824c1..3c38e6c8 100644 --- a/src/sensors/qmagnetometer_p.h +++ b/src/sensors/qmagnetometer_p.h @@ -53,8 +53,21 @@ // We mean it. // +#include "qsensor_p.h" + QT_BEGIN_NAMESPACE +class QMagnetometerPrivate : public QSensorPrivate +{ +public: + QMagnetometerPrivate() + : returnGeoValues(false) + { + } + + bool returnGeoValues; +}; + class QMagnetometerReadingPrivate { public: |