summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensorgestures
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sensorgestures')
-rw-r--r--src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.cpp41
-rw-r--r--src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.h6
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp24
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h4
4 files changed, 48 insertions, 27 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.cpp
index 82a849ed..0f488ccb 100644
--- a/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.cpp
@@ -41,11 +41,13 @@
#include "qcoversensorgesturerecognizer.h"
+#include <math.h>
+
QT_BEGIN_NAMESPACE
QCoverSensorGestureRecognizer::QCoverSensorGestureRecognizer(QObject *parent) :
QSensorGestureRecognizer(parent),
- lastProx(0)
+ detecting(0), lastProx(0)
{
}
@@ -55,7 +57,7 @@ QCoverSensorGestureRecognizer::~QCoverSensorGestureRecognizer()
void QCoverSensorGestureRecognizer::create()
{
- proximity = new QProximitySensor(this);
+ proximity = new QIRProximitySensor(this);
proximity->connectToBackend();
orientation = new QOrientationSensor(this);
@@ -77,6 +79,7 @@ bool QCoverSensorGestureRecognizer::start()
connect(proximity,SIGNAL(readingChanged()),this,SLOT(proximityChanged()));
proximity->start();
orientation->start();
+ lastProx = proximity->reading()->reflectance();
return proximity->isActive();
}
@@ -95,22 +98,38 @@ bool QCoverSensorGestureRecognizer::isActive()
void QCoverSensorGestureRecognizer::proximityChanged()
{// look at case of face up->face down->face up.
- if ((orientation->reading()->orientation() == QOrientationReading::FaceUp)
- && proximity->reading()->close())
- timer->start();
- else if (proximity->reading()->close())
- timer->stop();
+
+ qreal refl = proximity->reading()->reflectance();
+ qreal difference = lastProx - refl;
+
+ if (fabs(difference) < .15) {
+ return;
+ }
+
+ if (orientation->reading()->orientation() == QOrientationReading::FaceUp
+ && refl > .55) {
+ if (!timer->isActive()) {
+ timer->start();
+ detecting = true;
+ }
+ }
+ if (refl < .55) {
+ if (timer->isActive()) {
+ timer->stop();
+ detecting = false;
+ }
+ }
+ lastProx = refl;
}
void QCoverSensorGestureRecognizer::timeout()
{
-
- if ((orientation->reading()->orientation() == QOrientationReading::FaceUp)
- && proximity->reading()->close()) {
+ if (detecting && orientation->reading()->orientation() == QOrientationReading::FaceUp
+ && proximity->reading()->reflectance() > 0.55) {
Q_EMIT cover();
Q_EMIT detected("cover");
+ detecting = false;
}
- lastProx = proximity->reading()->close();
}
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.h
index a08833f7..c6dddf6d 100644
--- a/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qcoversensorgesturerecognizer.h
@@ -46,6 +46,7 @@
#include <QtSensors/QSensor>
#include <QProximitySensor>
#include <QtSensors/QOrientationSensor>
+#include <QIRProximitySensor>
#include <qsensorgesturerecognizer.h>
#include <QTimer>
@@ -74,11 +75,12 @@ private slots:
private:
- QProximitySensor *proximity;
+ QIRProximitySensor *proximity;
QOrientationSensor *orientation;
QTimer *timer;
- bool lastProx;
+ bool detecting;
+ qreal lastProx;
};
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
index 4717c7d5..a441cda6 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
@@ -41,6 +41,8 @@
#include "qhoversensorgesturerecognizer.h"
+#include <math.h>
+
QT_BEGIN_NAMESPACE
QHoverSensorGestureRecognizer::QHoverSensorGestureRecognizer(QObject *parent) :
@@ -55,9 +57,6 @@ QHoverSensorGestureRecognizer::~QHoverSensorGestureRecognizer()
void QHoverSensorGestureRecognizer::create()
{
- proximity = new QProximitySensor(this);
- proximity->connectToBackend();
-
irProx = new QIRProximitySensor(this);
irProx->connectToBackend();
@@ -80,14 +79,12 @@ QString QHoverSensorGestureRecognizer::id() const
bool QHoverSensorGestureRecognizer::start()
{
connect(irProx,SIGNAL(readingChanged()), this,SLOT(proxyChanged()));
- proximity->start();
irProx->start();
return irProx->isActive();
}
bool QHoverSensorGestureRecognizer::stop()
{
- proximity->stop();
irProx->stop();
disconnect(irProx,SIGNAL(readingChanged()),this,SLOT(proxyChanged()));
return irProx->isActive();
@@ -100,28 +97,31 @@ bool QHoverSensorGestureRecognizer::isActive()
void QHoverSensorGestureRecognizer::proxyChanged()
{
- if (proximity->reading()->close()) {
+ qreal refl = irProx->reading()->reflectance();
+
+ if (refl > .51) {
hoverOk = false;
detecting = false;
return;
}
- int refl = irProx->reading()->reflectance() * 100;
-
- if (!detecting && (refl > 20 && refl < 35)) {
+ if (!detecting && (refl > .40 && refl < .50)) {
detecting = true;
timer->start();
timer2->start();
+ detectedHigh = refl;
} else if (hoverOk && detecting
- && refl == 0) {
+ && refl < .33
+ && detectedHigh
+ ) {
// went light again after 1 seconds
Q_EMIT hover();
Q_EMIT detected("hover");
hoverOk = false;
detecting = false;
}
- if (refl == 0)
+ if (refl > .60)
detecting = false;
}
@@ -130,9 +130,9 @@ void QHoverSensorGestureRecognizer::timeout()
hoverOk = true;
}
-
void QHoverSensorGestureRecognizer::timeout2()
{
detecting = false;
}
+
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
index d8bf96ba..0efdf026 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
@@ -49,6 +49,7 @@
#include <QProximitySensor>
#include <QIRProximitySensor>
+
QT_BEGIN_NAMESPACE
class QHoverSensorGestureRecognizer : public QSensorGestureRecognizer
@@ -73,7 +74,6 @@ private slots:
void timeout();
void timeout2();
private:
- QProximitySensor *proximity;
QIRProximitySensor *irProx;
QTimer *timer;
@@ -83,7 +83,7 @@ private:
bool detecting;
qreal detectedHigh;
-
+ qreal lastProx;
};
QT_END_NAMESPACE
#endif // QHOVERSENSORGESTURERECOGNIZER_H