summaryrefslogtreecommitdiff
path: root/src/sensors/qsensor.cpp
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-07-02 13:39:00 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-03 02:10:06 +0200
commitf7c3a6686ef77e95128f1dc4a03c7a8184a18231 (patch)
tree150ec0f8bac4e701cb913aed8cb2b27e43e7ad79 /src/sensors/qsensor.cpp
parent1908f86c6d8cb28a81d02272dfd3443e827cf37c (diff)
downloadqtsensors-f7c3a6686ef77e95128f1dc4a03c7a8184a18231.tar.gz
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 <marc.mutz@kdab.com> Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com> Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
Diffstat (limited to 'src/sensors/qsensor.cpp')
-rw-r--r--src/sensors/qsensor.cpp52
1 files changed, 43 insertions, 9 deletions
diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp
index a0724ae..2949e77 100644
--- a/src/sensors/qsensor.cpp
+++ b/src/sensors/qsensor.cpp
@@ -149,6 +149,13 @@ static int qoutputrangelist_id = qRegisterMetaType<qoutputrangelist>("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<qoutputrangelist>("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,15 +599,11 @@ void QSensor::removeFilter(QSensorFilter *filter)
*/
QList<QSensorFilter*> QSensor::filters() const
{
+ Q_D(const QSensor);
return d->filters;
}
/*!
- \fn QSensor::d_func() const
- \internal
-*/
-
-/*!
\fn QSensor::readingChanged()
This signal is emitted when a new sensor reading is received.
@@ -614,6 +643,7 @@ QList<QSensorFilter*> 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;
}