From 8b7ecd0eb2d9f1e46835687593b6a7f4b14b1009 Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Mon, 22 Apr 2013 13:33:49 +0200 Subject: Add a private class to QSensorBackend Change-Id: Ifaac09159420b6cca197614a1fa9df8b6a8692dc Reviewed-by: Thomas McGuire --- src/sensors/qsensorbackend.cpp | 76 ++++++++++++++++++++++++------------------ src/sensors/qsensorbackend.h | 6 ++-- src/sensors/qsensorbackend_p.h | 76 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 34 deletions(-) create mode 100644 src/sensors/qsensorbackend_p.h diff --git a/src/sensors/qsensorbackend.cpp b/src/sensors/qsensorbackend.cpp index 60ce8d7..363ad87 100644 --- a/src/sensors/qsensorbackend.cpp +++ b/src/sensors/qsensorbackend.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qsensorbackend.h" +#include "qsensorbackend_p.h" #include "qsensor_p.h" #include @@ -59,8 +60,8 @@ QT_BEGIN_NAMESPACE /*! \internal */ -QSensorBackend::QSensorBackend(QSensor *sensor) - : m_sensor(sensor) +QSensorBackend::QSensorBackend(QSensor *sensor, QObject *parent) + : QObject(*new QSensorBackendPrivate(sensor), parent) { } @@ -91,21 +92,22 @@ bool QSensorBackend::isFeatureSupported(QSensor::Feature feature) const */ void QSensorBackend::newReadingAvailable() { - QSensorPrivate *d = m_sensor->d_func(); + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); // Copy the values from the device reading to the filter reading - d->filter_reading->copyValuesFrom(d->device_reading); + sensorPrivate->filter_reading->copyValuesFrom(sensorPrivate->device_reading); - for (QFilterList::const_iterator it = d->filters.constBegin(); it != d->filters.constEnd(); ++it) { + for (QFilterList::const_iterator it = sensorPrivate->filters.constBegin(); it != sensorPrivate->filters.constEnd(); ++it) { QSensorFilter *filter = (*it); - if (!filter->filter(d->filter_reading)) + if (!filter->filter(sensorPrivate->filter_reading)) return; } // Copy the values from the filter reading to the cached reading - d->cache_reading->copyValuesFrom(d->filter_reading); + sensorPrivate->cache_reading->copyValuesFrom(sensorPrivate->filter_reading); - Q_EMIT m_sensor->readingChanged(); + Q_EMIT d->m_sensor->readingChanged(); } /*! @@ -131,8 +133,9 @@ void QSensorBackend::newReadingAvailable() */ QSensorReading *QSensorBackend::reading() const { - QSensorPrivate *d = m_sensor->d_func(); - return d->device_reading; + Q_D(const QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + return sensorPrivate->device_reading; } /*! @@ -140,7 +143,8 @@ QSensorReading *QSensorBackend::reading() const */ QSensor *QSensorBackend::sensor() const { - return m_sensor; + Q_D(const QSensorBackend); + return d->m_sensor; } /*! @@ -212,10 +216,11 @@ QSensor *QSensorBackend::sensor() const */ void QSensorBackend::setReadings(QSensorReading *device, QSensorReading *filter, QSensorReading *cache) { - QSensorPrivate *d = m_sensor->d_func(); - d->device_reading = device; - d->filter_reading = filter; - d->cache_reading = cache; + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->device_reading = device; + sensorPrivate->filter_reading = filter; + sensorPrivate->cache_reading = cache; } /*! @@ -228,8 +233,9 @@ void QSensorBackend::setReadings(QSensorReading *device, QSensorReading *filter, */ void QSensorBackend::addDataRate(qreal min, qreal max) { - QSensorPrivate *d = m_sensor->d_func(); - d->availableDataRates << qrange(min, max); + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->availableDataRates << qrange(min, max); } /*! @@ -247,6 +253,7 @@ void QSensorBackend::addDataRate(qreal min, qreal max) */ void QSensorBackend::setDataRates(const QSensor *otherSensor) { + Q_D(QSensorBackend); if (!otherSensor) { qWarning() << "ERROR: Cannot call QSensorBackend::setDataRates with 0"; return; @@ -255,12 +262,12 @@ void QSensorBackend::setDataRates(const QSensor *otherSensor) qWarning() << "ERROR: Cannot call QSensorBackend::setDataRates with an invalid sensor"; return; } - if (m_sensor->isConnectedToBackend()) { + if (d->m_sensor->isConnectedToBackend()) { qWarning() << "ERROR: Cannot call QSensorBackend::setDataRates outside of the constructor"; return; } - QSensorPrivate *d = m_sensor->d_func(); - d->availableDataRates = otherSensor->availableDataRates(); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->availableDataRates = otherSensor->availableDataRates(); } /*! @@ -273,11 +280,12 @@ void QSensorBackend::setDataRates(const QSensor *otherSensor) */ void QSensorBackend::addOutputRange(qreal min, qreal max, qreal accuracy) { - QSensorPrivate *d = m_sensor->d_func(); + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); qoutputrange details = {min, max, accuracy}; - d->outputRanges << details; + sensorPrivate->outputRanges << details; } /*! @@ -288,8 +296,9 @@ void QSensorBackend::addOutputRange(qreal min, qreal max, qreal accuracy) */ void QSensorBackend::setDescription(const QString &description) { - QSensorPrivate *d = m_sensor->d_func(); - d->description = description; + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->description = description; } /*! @@ -304,8 +313,9 @@ void QSensorBackend::setDescription(const QString &description) */ void QSensorBackend::sensorStopped() { - QSensorPrivate *d = m_sensor->d_func(); - d->active = false; + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->active = false; } /*! @@ -320,9 +330,10 @@ void QSensorBackend::sensorStopped() */ void QSensorBackend::sensorBusy() { - QSensorPrivate *d = m_sensor->d_func(); - d->active = false; - d->busy = true; + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->active = false; + sensorPrivate->busy = true; } /*! @@ -334,9 +345,10 @@ void QSensorBackend::sensorBusy() */ void QSensorBackend::sensorError(int error) { - QSensorPrivate *d = m_sensor->d_func(); - d->error = error; - Q_EMIT m_sensor->sensorError(error); + Q_D(QSensorBackend); + QSensorPrivate *sensorPrivate = d->m_sensor->d_func(); + sensorPrivate->error = error; + Q_EMIT d->m_sensor->sensorError(error); } #include "moc_qsensorbackend.cpp" diff --git a/src/sensors/qsensorbackend.h b/src/sensors/qsensorbackend.h index c452a4d..03a0c41 100644 --- a/src/sensors/qsensorbackend.h +++ b/src/sensors/qsensorbackend.h @@ -47,11 +47,13 @@ QT_BEGIN_NAMESPACE +class QSensorBackendPrivate; + class Q_SENSORS_EXPORT QSensorBackend : public QObject { Q_OBJECT public: - QSensorBackend(QSensor *sensor); + explicit QSensorBackend(QSensor *sensor, QObject *parent = 0); virtual ~QSensorBackend(); virtual void start() = 0; @@ -86,7 +88,7 @@ public: private: void setReadings(QSensorReading *device, QSensorReading *filter, QSensorReading *cache); - QSensor *m_sensor; + Q_DECLARE_PRIVATE(QSensorBackend) Q_DISABLE_COPY(QSensorBackend) }; diff --git a/src/sensors/qsensorbackend_p.h b/src/sensors/qsensorbackend_p.h new file mode 100644 index 0000000..5b98940 --- /dev/null +++ b/src/sensors/qsensorbackend_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QSENSORBACKEND_P_H +#define QSENSORBACKEND_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qsensorbackend.h" + +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QSensorBackendPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QSensorBackend) +public: + explicit QSensorBackendPrivate(QSensor *sensor) + : m_sensor(sensor) + { + } + + QSensor *m_sensor; +}; + +QT_END_NAMESPACE + +#endif + -- cgit v1.2.1