diff options
Diffstat (limited to 'src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp')
-rw-r--r-- | src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp index a5a8cab6..3db09ba2 100644 --- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp @@ -61,25 +61,10 @@ QTwistSensorGestureRecognizer::~QTwistSensorGestureRecognizer() void QTwistSensorGestureRecognizer::create() { - accel = new QAccelerometer(this); - accel->connectToBackend(); - accel->setDataRate(5); - orientation = new QOrientationSensor(this); - orientation->connectToBackend(); - timer = new QTimer(this); - - qoutputrangelist outputranges = accel->outputRanges(); - - if (outputranges.count() > 0) - accelRange = (int)(outputranges.at(0).maximum * 2); - else - accelRange = 44; //this should never happen - connect(timer,SIGNAL(timeout()),this,SLOT(timeout())); timer->setSingleShot(true); timer->setInterval(500); - } QString QTwistSensorGestureRecognizer::id() const @@ -89,20 +74,36 @@ QString QTwistSensorGestureRecognizer::id() const bool QTwistSensorGestureRecognizer::start() { - connect(accel,SIGNAL(readingChanged()),this,SLOT(accelChanged())); - active = accel->start(); - orientation->start(); + if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Accel)) { + if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Orientation)) { + accelRange = QtSensorGestureSensorHandler::instance()->accelRange; + active = true; + connect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)), + this,SLOT(orientationReadingChanged(QOrientationReading *))); + + connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), + this,SLOT(accelChanged(QAccelerometerReading *))); + } else { + QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Accel); + active = false; + } + } else { + active = false; + } return active; } bool QTwistSensorGestureRecognizer::stop() { - accel->stop(); - disconnect(accel,SIGNAL(readingChanged()),this,SLOT(accelChanged())); - - active = accel->isActive(); - orientation->stop(); - return !active; + QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Accel); + QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Orientation); + disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)), + this,SLOT(orientationReadingChanged(QOrientationReading *))); + + disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), + this,SLOT(accelChanged(QAccelerometerReading *))); + active = false; + return active; } bool QTwistSensorGestureRecognizer::isActive() @@ -113,11 +114,16 @@ bool QTwistSensorGestureRecognizer::isActive() #define RESTING_VARIANCE 25 #define THRESHOLD_DEGREES 50 -void QTwistSensorGestureRecognizer::accelChanged() +void QTwistSensorGestureRecognizer::orientationReadingChanged(QOrientationReading *reading) +{ + orientationReading = reading; +} + +void QTwistSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) { - qreal x = accel->reading()->x(); - qreal y = accel->reading()->y(); - qreal z = accel->reading()->z(); + qreal x = reading->x(); + qreal y = reading->y(); + qreal z = reading->z(); qreal diffX = lastX - x; qreal diffY = lastY - y; @@ -157,11 +163,11 @@ void QTwistSensorGestureRecognizer::accelChanged() detecting = true; timer->start(); lastRoll = degrees; - lastOrientation = orientation->reading()->orientation(); + lastOrientation = orientationReading->orientation(); } - if (detecting && (orientation->reading()->orientation() == QOrientationReading::TopUp - || orientation->reading()->orientation() == QOrientationReading::TopDown)) { + if (detecting && (orientationReading->orientation() == QOrientationReading::TopUp + || orientationReading->orientation() == QOrientationReading::TopDown)) { detecting = false; timer->stop(); |