From f7c3a6686ef77e95128f1dc4a03c7a8184a18231 Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Mon, 2 Jul 2012 13:39:00 +0200 Subject: QSensor: Use standard Qt dpointer pattern Now it is possible to extend QSensor subclasses without breaking binary compatibility. In addition, de-inline the constructors and destructors of subclasses to make it possible to replace them without compatibility problems. Change-Id: I69de97002ade3e75f090761f852a5aca39c0f555 Reviewed-by: Marc Mutz Reviewed-by: Lincoln Ramsay Reviewed-by: Lorn Potter --- src/sensors/make_sensor.pl | 18 ++++++++----- src/sensors/qaccelerometer.cpp | 11 +++++--- src/sensors/qaccelerometer.h | 7 +++-- src/sensors/qambientlightsensor.cpp | 11 +++++--- src/sensors/qambientlightsensor.h | 7 +++-- src/sensors/qcompass.cpp | 11 +++++--- src/sensors/qcompass.h | 7 +++-- src/sensors/qgyroscope.cpp | 11 +++++--- src/sensors/qgyroscope.h | 7 +++-- src/sensors/qirproximitysensor.cpp | 11 +++++--- src/sensors/qirproximitysensor.h | 7 +++-- src/sensors/qlightsensor.cpp | 11 +++++--- src/sensors/qlightsensor.h | 7 +++-- src/sensors/qmagnetometer.cpp | 11 +++++--- src/sensors/qmagnetometer.h | 7 +++-- src/sensors/qorientationsensor.cpp | 11 +++++--- src/sensors/qorientationsensor.h | 7 +++-- src/sensors/qproximitysensor.cpp | 11 +++++--- src/sensors/qproximitysensor.h | 7 +++-- src/sensors/qrotationsensor.cpp | 11 +++++--- src/sensors/qrotationsensor.h | 7 +++-- src/sensors/qsensor.cpp | 52 ++++++++++++++++++++++++++++++------- src/sensors/qsensor.h | 5 ++-- src/sensors/qsensor_p.h | 7 ++++- src/sensors/qtapsensor.cpp | 11 +++++--- src/sensors/qtapsensor.h | 7 +++-- 26 files changed, 195 insertions(+), 85 deletions(-) (limited to 'src/sensors') diff --git a/src/sensors/make_sensor.pl b/src/sensors/make_sensor.pl index 325a04b1..b554f629 100755 --- a/src/sensors/make_sensor.pl +++ b/src/sensors/make_sensor.pl @@ -156,10 +156,13 @@ class Q_SENSORS_EXPORT '.$sensor.' : public QSensor { Q_OBJECT public: - explicit '.$sensor.'(QObject *parent = 0) : QSensor('.$sensor.'::type, parent) {} - virtual ~'.$sensor.'() {} + explicit '.$sensor.'(QObject *parent = 0); + ~'.$sensor.'(); '.$reading.' *reading() const { return static_cast<'.$reading.'*>(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY('.$sensor.') }; QT_END_NAMESPACE @@ -259,16 +262,19 @@ char const * const '.$sensor.'::type("'.$sensor.'"); */ /*! - \fn '.$sensor.'::'.$sensor.'(QObject *parent) - Construct the sensor as a child of \a parent. */ +'.$sensor.'::'.$sensor.'(QObject *parent) + : QSensor('.$sensor.'::type, parent) +{ +} /*! - \fn '.$sensor.'::~'.$sensor.'() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +'.$sensor.'::~'.$sensor.'() +{ +} /*! \fn '.$sensor.'::reading() const diff --git a/src/sensors/qaccelerometer.cpp b/src/sensors/qaccelerometer.cpp index 36a360fb..7ebaed7e 100644 --- a/src/sensors/qaccelerometer.cpp +++ b/src/sensors/qaccelerometer.cpp @@ -169,16 +169,19 @@ char const * const QAccelerometer::type("QAccelerometer"); */ /*! - \fn QAccelerometer::QAccelerometer(QObject *parent) - Construct the sensor as a child of \a parent. */ +QAccelerometer::QAccelerometer(QObject *parent) + : QSensor(QAccelerometer::type, parent) +{ +} /*! - \fn QAccelerometer::~QAccelerometer() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QAccelerometer::~QAccelerometer() +{ +} /*! \fn QAccelerometer::reading() const diff --git a/src/sensors/qaccelerometer.h b/src/sensors/qaccelerometer.h index 5f579d06..7235d0de 100644 --- a/src/sensors/qaccelerometer.h +++ b/src/sensors/qaccelerometer.h @@ -81,10 +81,13 @@ class Q_SENSORS_EXPORT QAccelerometer : public QSensor { Q_OBJECT public: - explicit QAccelerometer(QObject *parent = 0) : QSensor(QAccelerometer::type, parent) {} - virtual ~QAccelerometer() {} + explicit QAccelerometer(QObject *parent = 0); + virtual ~QAccelerometer(); QAccelerometerReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QAccelerometer) }; QT_END_NAMESPACE diff --git a/src/sensors/qambientlightsensor.cpp b/src/sensors/qambientlightsensor.cpp index ecd73689..8da2e6fa 100644 --- a/src/sensors/qambientlightsensor.cpp +++ b/src/sensors/qambientlightsensor.cpp @@ -145,16 +145,19 @@ char const * const QAmbientLightSensor::type("QAmbientLightSensor"); */ /*! - \fn QAmbientLightSensor::QAmbientLightSensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QAmbientLightSensor::QAmbientLightSensor(QObject *parent) + : QSensor(QAmbientLightSensor::type, parent) +{ +} /*! - \fn QAmbientLightSensor::~QAmbientLightSensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QAmbientLightSensor::~QAmbientLightSensor() +{ +} /*! \fn QAmbientLightSensor::reading() const diff --git a/src/sensors/qambientlightsensor.h b/src/sensors/qambientlightsensor.h index a86545b9..2a0c7900 100644 --- a/src/sensors/qambientlightsensor.h +++ b/src/sensors/qambientlightsensor.h @@ -83,10 +83,13 @@ class Q_SENSORS_EXPORT QAmbientLightSensor : public QSensor { Q_OBJECT public: - explicit QAmbientLightSensor(QObject *parent = 0) : QSensor(QAmbientLightSensor::type, parent) {} - virtual ~QAmbientLightSensor() {} + explicit QAmbientLightSensor(QObject *parent = 0); + virtual ~QAmbientLightSensor(); QAmbientLightReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QAmbientLightSensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qcompass.cpp b/src/sensors/qcompass.cpp index c28c81a8..afc8e071 100644 --- a/src/sensors/qcompass.cpp +++ b/src/sensors/qcompass.cpp @@ -155,16 +155,19 @@ char const * const QCompass::type("QCompass"); */ /*! - \fn QCompass::QCompass(QObject *parent) - Construct the sensor as a child of \a parent. */ +QCompass::QCompass(QObject *parent) + : QSensor(QCompass::type, parent) +{ +} /*! - \fn QCompass::~QCompass() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QCompass::~QCompass() +{ +} /*! \fn QCompass::reading() const diff --git a/src/sensors/qcompass.h b/src/sensors/qcompass.h index 010b664d..d39a4a28 100644 --- a/src/sensors/qcompass.h +++ b/src/sensors/qcompass.h @@ -77,10 +77,13 @@ class Q_SENSORS_EXPORT QCompass : public QSensor { Q_OBJECT public: - explicit QCompass(QObject *parent = 0) : QSensor(QCompass::type, parent) {} - virtual ~QCompass() {} + explicit QCompass(QObject *parent = 0); + virtual ~QCompass(); QCompassReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QCompass) }; QT_END_NAMESPACE diff --git a/src/sensors/qgyroscope.cpp b/src/sensors/qgyroscope.cpp index d67325cd..13c59d90 100644 --- a/src/sensors/qgyroscope.cpp +++ b/src/sensors/qgyroscope.cpp @@ -167,16 +167,19 @@ char const * const QGyroscope::type("QGyroscope"); */ /*! - \fn QGyroscope::QGyroscope(QObject *parent) - Construct the sensor as a child of \a parent. */ +QGyroscope::QGyroscope(QObject *parent) + : QSensor(QGyroscope::type, parent) +{ +} /*! - \fn QGyroscope::~QGyroscope() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QGyroscope::~QGyroscope() +{ +} /*! \fn QGyroscope::reading() const diff --git a/src/sensors/qgyroscope.h b/src/sensors/qgyroscope.h index f42352f0..ad2f5568 100644 --- a/src/sensors/qgyroscope.h +++ b/src/sensors/qgyroscope.h @@ -81,10 +81,13 @@ class Q_SENSORS_EXPORT QGyroscope : public QSensor { Q_OBJECT public: - explicit QGyroscope(QObject *parent = 0) : QSensor(QGyroscope::type, parent) {} - virtual ~QGyroscope() {} + explicit QGyroscope(QObject *parent = 0); + virtual ~QGyroscope(); QGyroscopeReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QGyroscope) }; QT_END_NAMESPACE diff --git a/src/sensors/qirproximitysensor.cpp b/src/sensors/qirproximitysensor.cpp index 2aedfafb..334774b2 100644 --- a/src/sensors/qirproximitysensor.cpp +++ b/src/sensors/qirproximitysensor.cpp @@ -127,16 +127,19 @@ char const * const QIRProximitySensor::type("QIRProximitySensor"); */ /*! - \fn QIRProximitySensor::QIRProximitySensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QIRProximitySensor::QIRProximitySensor(QObject *parent) + : QSensor(QIRProximitySensor::type, parent) +{ +} /*! - \fn QIRProximitySensor::~QIRProximitySensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QIRProximitySensor::~QIRProximitySensor() +{ +} /*! \fn QIRProximitySensor::reading() const diff --git a/src/sensors/qirproximitysensor.h b/src/sensors/qirproximitysensor.h index 093e5c79..68e6e205 100644 --- a/src/sensors/qirproximitysensor.h +++ b/src/sensors/qirproximitysensor.h @@ -73,10 +73,13 @@ class Q_SENSORS_EXPORT QIRProximitySensor : public QSensor { Q_OBJECT public: - explicit QIRProximitySensor(QObject *parent = 0) : QSensor(QIRProximitySensor::type, parent) {} - virtual ~QIRProximitySensor() {} + explicit QIRProximitySensor(QObject *parent = 0); + virtual ~QIRProximitySensor(); QIRProximityReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QIRProximitySensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qlightsensor.cpp b/src/sensors/qlightsensor.cpp index 959237fb..76b58da5 100644 --- a/src/sensors/qlightsensor.cpp +++ b/src/sensors/qlightsensor.cpp @@ -117,16 +117,19 @@ char const * const QLightSensor::type("QLightSensor"); */ /*! - \fn QLightSensor::QLightSensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QLightSensor::QLightSensor(QObject *parent) + : QSensor(QLightSensor::type, parent) +{ +} /*! - \fn QLightSensor::~QLightSensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QLightSensor::~QLightSensor() +{ +} /*! \fn QLightSensor::reading() const diff --git a/src/sensors/qlightsensor.h b/src/sensors/qlightsensor.h index f46b04c2..6c110fde 100644 --- a/src/sensors/qlightsensor.h +++ b/src/sensors/qlightsensor.h @@ -76,10 +76,13 @@ class Q_SENSORS_EXPORT QLightSensor : public QSensor Q_PROPERTY(qreal fieldOfView) #endif public: - explicit QLightSensor(QObject *parent = 0) : QSensor(QLightSensor::type, parent) {} - virtual ~QLightSensor() {} + explicit QLightSensor(QObject *parent = 0); + virtual ~QLightSensor(); QLightReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QLightSensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qmagnetometer.cpp b/src/sensors/qmagnetometer.cpp index 1a7c21cb..20904ace 100644 --- a/src/sensors/qmagnetometer.cpp +++ b/src/sensors/qmagnetometer.cpp @@ -207,16 +207,19 @@ char const * const QMagnetometer::type("QMagnetometer"); */ /*! - \fn QMagnetometer::QMagnetometer(QObject *parent) - Construct the sensor as a child of \a parent. */ +QMagnetometer::QMagnetometer(QObject *parent) + : QSensor(QMagnetometer::type, parent) +{ +} /*! - \fn QMagnetometer::~QMagnetometer() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QMagnetometer::~QMagnetometer() +{ +} /*! \fn QMagnetometer::reading() const diff --git a/src/sensors/qmagnetometer.h b/src/sensors/qmagnetometer.h index 4df83a1f..de165587 100644 --- a/src/sensors/qmagnetometer.h +++ b/src/sensors/qmagnetometer.h @@ -88,10 +88,13 @@ class Q_SENSORS_EXPORT QMagnetometer : public QSensor Q_PROPERTY(bool returnGeoValues) #endif public: - explicit QMagnetometer(QObject *parent = 0) : QSensor(QMagnetometer::type, parent) {} - virtual ~QMagnetometer() {} + explicit QMagnetometer(QObject *parent = 0); + virtual ~QMagnetometer(); QMagnetometerReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QMagnetometer) }; QT_END_NAMESPACE diff --git a/src/sensors/qorientationsensor.cpp b/src/sensors/qorientationsensor.cpp index 66c493bf..14ad54de 100644 --- a/src/sensors/qorientationsensor.cpp +++ b/src/sensors/qorientationsensor.cpp @@ -168,16 +168,19 @@ char const * const QOrientationSensor::type("QOrientationSensor"); */ /*! - \fn QOrientationSensor::QOrientationSensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QOrientationSensor::QOrientationSensor(QObject *parent) + : QSensor(QOrientationSensor::type, parent) +{ +} /*! - \fn QOrientationSensor::~QOrientationSensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QOrientationSensor::~QOrientationSensor() +{ +} /*! \fn QOrientationSensor::reading() const diff --git a/src/sensors/qorientationsensor.h b/src/sensors/qorientationsensor.h index b3791e83..235fabb4 100644 --- a/src/sensors/qorientationsensor.h +++ b/src/sensors/qorientationsensor.h @@ -84,10 +84,13 @@ class Q_SENSORS_EXPORT QOrientationSensor : public QSensor { Q_OBJECT public: - explicit QOrientationSensor(QObject *parent = 0) : QSensor(QOrientationSensor::type, parent) {} - virtual ~QOrientationSensor() {} + explicit QOrientationSensor(QObject *parent = 0); + virtual ~QOrientationSensor(); QOrientationReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QOrientationSensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qproximitysensor.cpp b/src/sensors/qproximitysensor.cpp index 20321df4..37a45671 100644 --- a/src/sensors/qproximitysensor.cpp +++ b/src/sensors/qproximitysensor.cpp @@ -124,16 +124,19 @@ char const * const QProximitySensor::type("QProximitySensor"); */ /*! - \fn QProximitySensor::QProximitySensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QProximitySensor::QProximitySensor(QObject *parent) + : QSensor(QProximitySensor::type, parent) +{ +} /*! - \fn QProximitySensor::~QProximitySensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QProximitySensor::~QProximitySensor() +{ +} /*! \fn QProximitySensor::reading() const diff --git a/src/sensors/qproximitysensor.h b/src/sensors/qproximitysensor.h index cd804351..534671cb 100644 --- a/src/sensors/qproximitysensor.h +++ b/src/sensors/qproximitysensor.h @@ -73,10 +73,13 @@ class Q_SENSORS_EXPORT QProximitySensor : public QSensor { Q_OBJECT public: - explicit QProximitySensor(QObject *parent = 0) : QSensor(QProximitySensor::type, parent) {} - virtual ~QProximitySensor() {} + explicit QProximitySensor(QObject *parent = 0); + virtual ~QProximitySensor(); QProximityReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QProximitySensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qrotationsensor.cpp b/src/sensors/qrotationsensor.cpp index b2d65e3f..6adbf6a2 100644 --- a/src/sensors/qrotationsensor.cpp +++ b/src/sensors/qrotationsensor.cpp @@ -205,16 +205,19 @@ char const * const QRotationSensor::type("QRotationSensor"); */ /*! - \fn QRotationSensor::QRotationSensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QRotationSensor::QRotationSensor(QObject *parent) + : QSensor(QRotationSensor::type, parent) +{ +} /*! - \fn QRotationSensor::~QRotationSensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QRotationSensor::~QRotationSensor() +{ +} /*! \fn QRotationSensor::reading() const diff --git a/src/sensors/qrotationsensor.h b/src/sensors/qrotationsensor.h index 784e3544..9e022803 100644 --- a/src/sensors/qrotationsensor.h +++ b/src/sensors/qrotationsensor.h @@ -84,10 +84,13 @@ class Q_SENSORS_EXPORT QRotationSensor : public QSensor Q_PROPERTY(bool hasZ) #endif public: - explicit QRotationSensor(QObject *parent = 0) : QSensor(QRotationSensor::type, parent) {} - virtual ~QRotationSensor() {} + explicit QRotationSensor(QObject *parent = 0); + virtual ~QRotationSensor(); QRotationReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QRotationSensor) }; QT_END_NAMESPACE diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp index a0724ae8..2949e771 100644 --- a/src/sensors/qsensor.cpp +++ b/src/sensors/qsensor.cpp @@ -149,6 +149,13 @@ static int qoutputrangelist_id = qRegisterMetaType("qoutputran // ===================================================================== +void QSensorPrivate::init(const QByteArray &sensorType) +{ + Q_Q(QSensor); + type = sensorType; + q->registerInstance(); // so the availableSensorsChanged() signal works +} + /*! \class QSensor \ingroup sensors_main @@ -175,11 +182,19 @@ static int qoutputrangelist_id = qRegisterMetaType("qoutputran Construct the \a type sensor as a child of \a parent. */ QSensor::QSensor(const QByteArray &type, QObject *parent) - : QObject(parent) - , d(new QSensorPrivate) + : QObject(*new QSensorPrivate, parent) { - d->type = type; - registerInstance(); // so the availableSensorsChanged() signal works + Q_D(QSensor); + d->init(type); +} + +/*! \internal + */ +QSensor::QSensor(const QByteArray &type, QSensorPrivate &dd, QObject* parent) + : QObject(dd, parent) +{ + Q_D(QSensor); + d->init(type); } /*! @@ -187,6 +202,7 @@ QSensor::QSensor(const QByteArray &type, QObject *parent) */ QSensor::~QSensor() { + Q_D(QSensor); stop(); Q_FOREACH (QSensorFilter *filter, d->filters) filter->setSensor(0); @@ -212,6 +228,7 @@ QSensor::~QSensor() bool QSensor::isConnectedToBackend() const { + Q_D(const QSensor); return (d->backend != 0); } @@ -227,11 +244,13 @@ bool QSensor::isConnectedToBackend() const QByteArray QSensor::identifier() const { + Q_D(const QSensor); return d->identifier; } void QSensor::setIdentifier(const QByteArray &identifier) { + Q_D(QSensor); if (isConnectedToBackend()) { qWarning() << "ERROR: Cannot call QSensor::setIdentifier while connected to a backend!"; return; @@ -246,6 +265,7 @@ void QSensor::setIdentifier(const QByteArray &identifier) QByteArray QSensor::type() const { + Q_D(const QSensor); return d->type; } @@ -260,6 +280,7 @@ QByteArray QSensor::type() const */ bool QSensor::connectToBackend() { + Q_D(QSensor); if (isConnectedToBackend()) return true; @@ -301,6 +322,7 @@ bool QSensor::connectToBackend() bool QSensor::isBusy() const { + Q_D(const QSensor); return d->busy; } @@ -340,6 +362,7 @@ void QSensor::setActive(bool active) bool QSensor::isActive() const { + Q_D(const QSensor); return d->active; } @@ -357,6 +380,7 @@ bool QSensor::isActive() const */ void QSensor::setAlwaysOn(bool alwaysOn) { + Q_D(QSensor); if (d->alwaysOn == alwaysOn) return; d->alwaysOn = alwaysOn; emit alwaysOnChanged(); @@ -364,6 +388,7 @@ void QSensor::setAlwaysOn(bool alwaysOn) bool QSensor::isAlwaysOn() const { + Q_D(const QSensor); return d->alwaysOn; } @@ -389,6 +414,7 @@ bool QSensor::isAlwaysOn() const qrangelist QSensor::availableDataRates() const { + Q_D(const QSensor); return d->availableDataRates; } @@ -420,11 +446,13 @@ qrangelist QSensor::availableDataRates() const int QSensor::dataRate() const { + Q_D(const QSensor); return d->dataRate; } void QSensor::setDataRate(int rate) { + Q_D(QSensor); if (rate == 0 || !isConnectedToBackend()) { d->dataRate = rate; return; @@ -475,6 +503,7 @@ void QSensor::setDataRate(int rate) */ bool QSensor::start() { + Q_D(QSensor); if (isActive()) return true; if (!connectToBackend()) @@ -497,6 +526,7 @@ bool QSensor::start() */ void QSensor::stop() { + Q_D(QSensor); if (!isConnectedToBackend() || !isActive()) return; d->active = false; @@ -523,6 +553,7 @@ void QSensor::stop() QSensorReading *QSensor::reading() const { + Q_D(const QSensor); return d->cache_reading; } @@ -536,6 +567,7 @@ QSensorReading *QSensor::reading() const */ void QSensor::addFilter(QSensorFilter *filter) { + Q_D(QSensor); if (!filter) { qWarning() << "addFilter: passed a null filter!"; return; @@ -551,6 +583,7 @@ void QSensor::addFilter(QSensorFilter *filter) */ void QSensor::removeFilter(QSensorFilter *filter) { + Q_D(QSensor); if (!filter) { qWarning() << "removeFilter: passed a null filter!"; return; @@ -566,14 +599,10 @@ void QSensor::removeFilter(QSensorFilter *filter) */ QList QSensor::filters() const { + Q_D(const QSensor); return d->filters; } -/*! - \fn QSensor::d_func() const - \internal -*/ - /*! \fn QSensor::readingChanged() @@ -614,6 +643,7 @@ QList QSensor::filters() const qoutputrangelist QSensor::outputRanges() const { + Q_D(const QSensor); return d->outputRanges; } @@ -637,11 +667,13 @@ qoutputrangelist QSensor::outputRanges() const int QSensor::outputRange() const { + Q_D(const QSensor); return d->outputRange; } void QSensor::setOutputRange(int index) { + Q_D(QSensor); if (index == -1 || !isConnectedToBackend()) { d->outputRange = index; return; @@ -663,6 +695,7 @@ void QSensor::setOutputRange(int index) QString QSensor::description() const { + Q_D(const QSensor); return d->description; } @@ -675,6 +708,7 @@ QString QSensor::description() const int QSensor::error() const { + Q_D(const QSensor); return d->error; } diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h index c0fdb978..80689267 100644 --- a/src/sensors/qsensor.h +++ b/src/sensors/qsensor.h @@ -158,14 +158,13 @@ Q_SIGNALS: void alwaysOnChanged(); protected: - // called by the back end - QSensorPrivate *d_func() const { return d.data(); } + explicit QSensor(const QByteArray &type, QSensorPrivate &dd, QObject* parent = 0); private: void registerInstance(); - QScopedPointer d; Q_DISABLE_COPY(QSensor) + Q_DECLARE_PRIVATE(QSensor) }; class Q_SENSORS_EXPORT QSensorFilter diff --git a/src/sensors/qsensor_p.h b/src/sensors/qsensor_p.h index 5375b901..d5d8c424 100644 --- a/src/sensors/qsensor_p.h +++ b/src/sensors/qsensor_p.h @@ -55,13 +55,16 @@ #include "qsensor.h" +#include "private/qobject_p.h" + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE typedef QList QFilterList; -class QSensorPrivate +class QSensorPrivate : public QObjectPrivate { + Q_DECLARE_PUBLIC(QSensor) public: QSensorPrivate() : identifier() @@ -79,6 +82,8 @@ public: { } + void init(const QByteArray &sensorType); + // meta-data QByteArray identifier; QByteArray type; diff --git a/src/sensors/qtapsensor.cpp b/src/sensors/qtapsensor.cpp index 8d57b8e9..60de8319 100644 --- a/src/sensors/qtapsensor.cpp +++ b/src/sensors/qtapsensor.cpp @@ -208,16 +208,19 @@ char const * const QTapSensor::type("QTapSensor"); */ /*! - \fn QTapSensor::QTapSensor(QObject *parent) - Construct the sensor as a child of \a parent. */ +QTapSensor::QTapSensor(QObject *parent) + : QSensor(QTapSensor::type, parent) +{ +} /*! - \fn QTapSensor::~QTapSensor() - Destroy the sensor. Stops the sensor if it has not already been stopped. */ +QTapSensor::~QTapSensor() +{ +} /*! \fn QTapSensor::reading() const diff --git a/src/sensors/qtapsensor.h b/src/sensors/qtapsensor.h index 22d0dd82..baf3e7d9 100644 --- a/src/sensors/qtapsensor.h +++ b/src/sensors/qtapsensor.h @@ -97,10 +97,13 @@ class Q_SENSORS_EXPORT QTapSensor : public QSensor Q_PROPERTY(bool returnDoubleTapEvents) #endif public: - explicit QTapSensor(QObject *parent = 0) : QSensor(QTapSensor::type, parent) {} - virtual ~QTapSensor() {} + explicit QTapSensor(QObject *parent = 0); + virtual ~QTapSensor(); QTapReading *reading() const { return static_cast(QSensor::reading()); } static char const * const type; + +private: + Q_DISABLE_COPY(QTapSensor); }; QT_END_NAMESPACE -- cgit v1.2.3