diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2013-01-08 11:55:10 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-23 18:32:14 +0100 |
commit | acd094c6d795a597d3b899633e207d65f79ea746 (patch) | |
tree | 5794fe09472804158a97be1f6d62fbaabb1be54e /src/plugins/sensors/blackberry/bbaccelerometer.cpp | |
parent | a001511d8629c05de807f9927c3fa75f5d59a768 (diff) |
QAccelerometer: Add AccelerationMode property
Add a new property to be able to toggle effects of gravity on or off.
Implement the Blackberry backend side of this as well.
QTBUG-25842
Change-Id: I15c4cae72373f48b0153b83c6aa3d27b66538c87
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Reviewed-by: Sérgio Martins <sergio.martins.qnx@kdab.com>
Diffstat (limited to 'src/plugins/sensors/blackberry/bbaccelerometer.cpp')
-rw-r--r-- | src/plugins/sensors/blackberry/bbaccelerometer.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/plugins/sensors/blackberry/bbaccelerometer.cpp b/src/plugins/sensors/blackberry/bbaccelerometer.cpp index dcbd7fcc..0826cf7a 100644 --- a/src/plugins/sensors/blackberry/bbaccelerometer.cpp +++ b/src/plugins/sensors/blackberry/bbaccelerometer.cpp @@ -44,6 +44,12 @@ BbAccelerometer::BbAccelerometer(QSensor *sensor) : BbSensorBackend<QAccelerometerReading>(devicePath(), SENSOR_TYPE_ACCELEROMETER, sensor) { setDescription(QLatin1String("X, Y, and Z axes accelerations in m/s^2")); + + QAccelerometer * const accelerometer = qobject_cast<QAccelerometer *>(sensor); + if (accelerometer) { + connect(accelerometer, SIGNAL(accelerationModeChanged(AccelerationMode)), + this, SLOT(applyAccelerationMode())); + } } bool BbAccelerometer::updateReadingFromEvent(const sensor_event_t &event, QAccelerometerReading *reading) @@ -58,7 +64,39 @@ bool BbAccelerometer::updateReadingFromEvent(const sensor_event_t &event, QAccel return true; } +void BbAccelerometer::start() +{ + applyAccelerationMode(); + BbSensorBackend<QAccelerometerReading>::start(); +} + QString BbAccelerometer::devicePath() { return QLatin1String("/dev/sensor/accel"); } + +void BbAccelerometer::applyAccelerationMode() +{ + const QAccelerometer * const accelerometer = qobject_cast<QAccelerometer *>(sensor()); + if (accelerometer) { + QString fileName; + sensor_type_e sensorType; + switch (accelerometer->accelerationMode()) { + case QAccelerometer::Gravity: + fileName = QLatin1String("/dev/sensor/gravity"); + sensorType = SENSOR_TYPE_GRAVITY; + break; + case QAccelerometer::User: + fileName = QLatin1String("/dev/sensor/linAccel"); + sensorType = SENSOR_TYPE_LINEAR_ACCEL; + break; + default: + case QAccelerometer::Combined: + fileName = devicePath(); + sensorType = SENSOR_TYPE_ACCELEROMETER; + break; + } + + setDevice(fileName, sensorType); + } +} |