From 8b618a4bcc045c9298c219cad9b88902616134a3 Mon Sep 17 00:00:00 2001 From: Lincoln Ramsay Date: Tue, 23 Aug 2011 11:41:08 +1000 Subject: Add a QML plugin that uses QtmSensors. This will provide legacy import capability. Change-Id: I68e573b7eca10bffec16a24f4b76a40c64b9a7e0 Reviewed-on: http://codereview.qt.nokia.com/3351 Reviewed-by: Qt Sanity Bot Reviewed-by: Zsolt Simon --- src/imports/qtmsensors/sensors.cpp | 726 +++++++++++++++++++++++++++++++++++++ 1 file changed, 726 insertions(+) create mode 100644 src/imports/qtmsensors/sensors.cpp (limited to 'src/imports/qtmsensors/sensors.cpp') diff --git a/src/imports/qtmsensors/sensors.cpp b/src/imports/qtmsensors/sensors.cpp new file mode 100644 index 00000000..a1603e41 --- /dev/null +++ b/src/imports/qtmsensors/sensors.cpp @@ -0,0 +1,726 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QTM_USE_NAMESPACE + +QT_BEGIN_NAMESPACE + +class QtmSensorsDeclarativeModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + char const * const package = "QtMobility.sensors"; + if (QLatin1String(uri) != QLatin1String(package)) return; + + // Register the 1.1 interfaces + int major = 1; + int minor = 1; + qmlRegisterUncreatableType(package, major, minor, "SensorReading", QLatin1String("Cannot create SensorReading")); + qmlRegisterType (package, major, minor, "Accelerometer"); + qmlRegisterUncreatableType(package, major, minor, "AccelerometerReading", QLatin1String("Cannot create AccelerometerReading")); + qmlRegisterType (package, major, minor, "AmbientLightSensor"); + qmlRegisterUncreatableType(package, major, minor, "AmbientLightReading", QLatin1String("Cannot create AmbientLightReading")); + qmlRegisterType (package, major, minor, "Compass"); + qmlRegisterUncreatableType(package, major, minor, "CompassReading", QLatin1String("Cannot create CompassReading")); + qmlRegisterType (package, major, minor, "Magnetometer"); + qmlRegisterUncreatableType(package, major, minor, "MagnetometerReading", QLatin1String("Cannot create MagnetometerReading")); + qmlRegisterType (package, major, minor, "OrientationSensor"); + qmlRegisterUncreatableType(package, major, minor, "OrientationReading", QLatin1String("Cannot create OrientationReading")); + qmlRegisterType (package, major, minor, "ProximitySensor"); + qmlRegisterUncreatableType(package, major, minor, "ProximityReading", QLatin1String("Cannot create ProximityReading")); + qmlRegisterType (package, major, minor, "RotationSensor"); + qmlRegisterUncreatableType(package, major, minor, "RotationReading", QLatin1String("Cannot create RotationReading")); + qmlRegisterType (package, major, minor, "TapSensor"); + qmlRegisterUncreatableType(package, major, minor, "TapReading", QLatin1String("Cannot create TapReading")); + + // Register the 1.2 interfaces + major = 1; + minor = 2; + qmlRegisterUncreatableType(package, major, minor, "Sensor", QLatin1String("Cannot create Sensor")); + qmlRegisterUncreatableType(package, major, minor, "SensorReading", QLatin1String("Cannot create SensorReading")); + qmlRegisterType (package, major, minor, "Accelerometer"); + qmlRegisterUncreatableType(package, major, minor, "AccelerometerReading", QLatin1String("Cannot create AccelerometerReading")); + qmlRegisterType (package, major, minor, "AmbientLightSensor"); + qmlRegisterUncreatableType(package, major, minor, "AmbientLightReading", QLatin1String("Cannot create AmbientLightReading")); + qmlRegisterType (package, major, minor, "Compass"); + qmlRegisterUncreatableType(package, major, minor, "CompassReading", QLatin1String("Cannot create CompassReading")); + qmlRegisterType (package, major, minor, "Magnetometer"); + qmlRegisterUncreatableType(package, major, minor, "MagnetometerReading", QLatin1String("Cannot create MagnetometerReading")); + qmlRegisterType (package, major, minor, "OrientationSensor"); + qmlRegisterUncreatableType(package, major, minor, "OrientationReading", QLatin1String("Cannot create OrientationReading")); + qmlRegisterType (package, major, minor, "ProximitySensor"); + qmlRegisterUncreatableType(package, major, minor, "ProximityReading", QLatin1String("Cannot create ProximityReading")); + qmlRegisterType (package, major, minor, "RotationSensor"); + qmlRegisterUncreatableType(package, major, minor, "RotationReading", QLatin1String("Cannot create RotationReading")); + qmlRegisterType (package, major, minor, "TapSensor"); + qmlRegisterUncreatableType(package, major, minor, "TapReading", QLatin1String("Cannot create TapReading")); + qmlRegisterType (package, major, minor, "LightSensor"); + qmlRegisterUncreatableType(package, major, minor, "LightReading", QLatin1String("Cannot create LightReading")); + qmlRegisterType (package, major, minor, "Gyroscope"); + qmlRegisterUncreatableType(package, major, minor, "GyroscopeReading", QLatin1String("Cannot create GyroscopeReading")); + } +}; + +QT_END_NAMESPACE + +#include "sensors.moc" + +Q_EXPORT_PLUGIN2(qtmsensorsdeclarativemodule, QT_PREPEND_NAMESPACE(QtmSensorsDeclarativeModule)); + +// ===================================================================== + +/*! + \qmlclass Sensor QSensor + \ingroup qml-sensors_type + \brief The Sensor element serves as a base type for sensors. + + The Sensor element serves as a base type for sensors. + + This element wraps the QSensor class. Please see the documentation for + QSensor for details. + + This element cannot be directly created. Please use one of the sub-classes instead. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty int Sensor::dataRate + Sets the rate at which data is returned by the sensor. + Please see QSensor::dataRate for information about this property. +*/ + +/*! + \qmlproperty bool Sensor::active + Starts or stops the sensor. + Please see QSensor::active for information about this property. +*/ + +/*! + \qmlproperty SensorReading Sensor::reading + Holds the most recent sensor reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal Sensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass SensorReading QSensorReading + \ingroup qml-sensors_reading + \brief The SensorReading element serves as a base type for sensor readings. + + The SensorReading element serves as a base type for sensor readings. + + This element wraps the QSensorReading class. Please see the documentation for + QSensorReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty quint64 SensorReading::timestamp + A timestamp for the reading. + Please see QSensorReading::timestamp for information about this property. +*/ + +/*! + \qmlclass Accelerometer QAccelerometer + \ingroup qml-sensors_type + \inherits Sensor + \brief The Accelerometer element reports on linear acceleration + along the X, Y and Z axes. + + The Accelerometer element reports on linear acceleration + along the X, Y and Z axes. + + This element wraps the QAccelerometer class. Please see the documentation for + QAccelerometer for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty AccelerometerReading Accelerometer::reading + Holds the most recent accelerometer reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal Accelerometer::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass AccelerometerReading QAccelerometerReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The AccelerometerReading element holds the most recent Accelerometer reading. + + The AccelerometerReading element holds the most recent Accelerometer reading. + + This element wraps the QAccelerometerReading class. Please see the documentation for + QAccelerometerReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal AccelerometerReading::x + Please see QAccelerometerReading::x for information about this property. +*/ + +/*! + \qmlproperty qreal AccelerometerReading::y + Please see QAccelerometerReading::y for information about this property. +*/ + +/*! + \qmlproperty qreal AccelerometerReading::z + Please see QAccelerometerReading::z for information about this property. +*/ + +/*! + \qmlclass AmbientLightSensor QAmbientLightSensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The AmbientLightSensor element repors on ambient lighting conditions. + + The AmbientLightSensor element repors on ambient lighting conditions. + + This element wraps the QAmbientLightSensor class. Please see the documentation for + QAmbientLightSensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty AmbientLightReading AmbientLightSensor::reading + Holds the most recent ambient light reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal AmbientLightSensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass AmbientLightReading QAmbientLightReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The AmbientLightReading element holds the most AmbientLightSensor reading. + + The AmbientLightReading element holds the most AmbientLightSensor reading. + + This element wraps the QAmbientLightReading class. Please see the documentation for + QAmbientLightReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty QAmbientLightReading::LightLevel AmbientLightReading::lightLevel + Please see QAmbientLightReading::lightLevel for information about this property. + + LightLevel constants are exposed through the AmbientLightReading class. + \code + AmbientLightSensor { + onReadingChanged: { + if (reading.lightLevel == AmbientLightReading.Dark) + // do something + } + } + \endcode +*/ + +/*! + \qmlclass Compass QCompass + \ingroup qml-sensors_type + \inherits Sensor + \brief The Compass element reports on heading using magnetic north as a reference. + + The Compass element reports on heading using magnetic north as a reference. + + This element wraps the QCompass class. Please see the documentation for + QCompass for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty CompassReading Compass::reading + Holds the most recent compass reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal Compass::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass CompassReading QCompassReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The CompassReading element holds the most recent Compass reading. + + The CompassReading element holds the most recent Compass reading. + + This element wraps the QCompassReading class. Please see the documentation for + QCompassReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal CompassReading::azimuth + Please see QCompassReading::azimuth for information about this property. +*/ + +/*! + \qmlproperty qreal CompassReading::calibrationLevel + Please see QCompassReading::calibrationLevel for information about this property. +*/ + +/*! + \qmlclass Magnetometer QMagnetometer + \ingroup qml-sensors_type + \inherits Sensor + \brief The Magnetometer element reports on magnetic field strength + along the Z, Y and Z axes. + + The Magnetometer element reports on magnetic field strength + along the Z, Y and Z axes. + + This element wraps the QMagnetometer class. Please see the documentation for + QMagnetometer for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty MagnetometerReading Magnetometer::reading + Holds the most recent magnetometer reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal Magnetometer::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass MagnetometerReading QMagnetometerReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The MagnetometerReading element holds the most recent Magnetometer reading. + + The MagnetometerReading element holds the most recent Magnetometer reading. + + This element wraps the QMagnetometerReading class. Please see the documentation for + QMagnetometerReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal MagnetometerReading::x + Please see QMagnetometerReading::x for information about this property. +*/ + +/*! + \qmlproperty qreal MagnetometerReading::y + Please see QMagnetometerReading::y for information about this property. +*/ + +/*! + \qmlproperty qreal MagnetometerReading::z + Please see QMagnetometerReading::z for information about this property. +*/ + +/*! + \qmlproperty qreal MagnetometerReading::calibrationLevel + Please see QMagnetometerReading::calibrationLevel for information about this property. +*/ + +/*! + \qmlclass OrientationSensor QOrientationSensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The OrientationSensor element reports device orientation. + + The OrientationSensor element reports device orientation. + + This element wraps the QOrientationSensor class. Please see the documentation for + QOrientationSensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty OrientationReading OrientationSensor::reading + Holds the most recent orientation reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal OrientationSensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass OrientationReading QOrientationReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The OrientationReading element holds the most recent OrientationSensor reading. + + The OrientationReading element holds the most recent OrientationSensor reading. + + This element wraps the QOrientationReading class. Please see the documentation for + QOrientationReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty QOrientationReading::Orientation OrientationReading::orientation + Please see QOrientationReading::orientation for information about this property. + + Orientation constants are exposed through the OrientationReading class. + \code + OrientationSensor { + onReadingChanged: { + if (reading.orientation == OrientationReading.TopUp) + // do something + } + } + \endcode +*/ + +/*! + \qmlclass ProximitySensor QProximitySensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The ProximitySensor element reports on object proximity. + + The ProximitySensor element reports on object proximity. + + This element wraps the QProximitySensor class. Please see the documentation for + QProximitySensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty ProximityReading ProximitySensor::reading + Holds the most recent proximity reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal ProximitySensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass ProximityReading QProximityReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The ProximityReading element holds the most recent ProximitySensor reading. + + The ProximityReading element holds the most recent ProximitySensor reading. + + This element wraps the QProximityReading class. Please see the documentation for + QProximityReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty bool ProximityReading::close + Please see QProximityReading::close for information about this property. +*/ + +/*! + \qmlclass RotationSensor QRotationSensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The RotationSensor element reports on device rotation + around the X, Y and Z axes. + + The RotationSensor element reports on device rotation + around the X, Y and Z axes. + + This element wraps the QRotationSensor class. Please see the documentation for + QRotationSensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty RotationReading RotationSensor::reading + Holds the most recent rotation reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal RotationSensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass RotationReading QRotationReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The RotationReading element holds the most recent RotationSensor reading. + + The RotationReading element holds the most recent RotationSensor reading. + + This element wraps the QRotationReading class. Please see the documentation for + QRotationReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal RotationReading::x + Please see QRotationReading::x for information about this property. +*/ + +/*! + \qmlproperty qreal RotationReading::y + Please see QRotationReading::y for information about this property. +*/ + +/*! + \qmlproperty qreal RotationReading::z + Please see QRotationReading::z for information about this property. +*/ + +/*! + \qmlclass TapSensor QTapSensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The TapSensor element reports tap and double tap events + along the X, Y and Z axes. + + The TapSensor element reports tap and double tap events + along the X, Y and Z axes. + + This element wraps the QTapSensor class. Please see the documentation for + QTapSensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty TapReading TapSensor::reading + Holds the most recent tap sensor reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal TapSensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass TapReading QTapReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The TapReading element holds the most recent TapSensor reading. + + The TapReading element holds the most recent TapSensor reading. + + This element wraps the QTapReading class. Please see the documentation for + QTapReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty bool TapReading::doubleTap + Please see QTapReading::doubleTap for information about this property. +*/ + +/*! + \qmlproperty QTapReading::TapDirection TapReading::tapDirection + Please see QTapReading::tapDirection for information about this property. + + TapDirection constants are exposed through the TapReading class. + \code + TapSensor { + onReadingChanged: { + if ((reading.tapDirection & TapReading.X_Both)) + // do something + } + } + \endcode +*/ + +/*! + \qmlclass LightSensor QLightSensor + \ingroup qml-sensors_type + \inherits Sensor + \brief The LightSensor element reports on light levels using LUX. + + The LightSensor element reports on light levels using LUX. + + This element wraps the QLightSensor class. Please see the documentation for + QLightSensor for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty LightReading LightSensor::reading + Holds the most recent light sensor reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal LightSensor::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass LightReading QLightReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The LightReading element holds the most recent LightSensor reading. + + The LightReading element holds the most recent LightSensor reading. + + This element wraps the QLightReading class. Please see the documentation for + QLightReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal LightReading::lux + Please see QLightReading::lux for information about this property. +*/ + +/*! + \qmlclass Gyroscope QGyroscope + \ingroup qml-sensors_type + \inherits Sensor + \brief The Gyroscope element reports on rotational acceleration + around the X, Y and Z axes. + + This element wraps the QGyroscope class. Please see the documentation for + QGyroscope for details. + + \sa {Sensors QML Limitations} +*/ + +/*! + \qmlproperty GyroscopeReading Gyroscope::reading + Holds the most recent gyroscope reading. + Please see QSensor::reading for information about this property. +*/ + +/*! + \qmlsignal Gyroscope::onReadingChanged() + Called when the reading object changes. + Please see QSensor::readingChanged() for information about this signal. +*/ + +/*! + \qmlclass GyroscopeReading QGyroscopeReading + \ingroup qml-sensors_reading + \inherits SensorReading + \brief The GyroscopeReading element holds the most recent Gyroscope reading. + + The GyroscopeReading element holds the most recent Gyroscope reading. + + This element wraps the QGyroscopeReading class. Please see the documentation for + QGyroscopeReading for details. + + This element cannot be directly created. +*/ + +/*! + \qmlproperty qreal GyroscopeReading::x + Please see QGyroscopeReading::x for information about this property. +*/ + +/*! + \qmlproperty qreal GyroscopeReading::y + Please see QGyroscopeReading::y for information about this property. +*/ + +/*! + \qmlproperty qreal GyroscopeReading::z + Please see QGyroscopeReading::z for information about this property. +*/ + + -- cgit v1.2.3