summaryrefslogtreecommitdiffstats
path: root/tests/auto/gestures/customgesturerecognizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gestures/customgesturerecognizer.cpp')
-rw-r--r--tests/auto/gestures/customgesturerecognizer.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/auto/gestures/customgesturerecognizer.cpp b/tests/auto/gestures/customgesturerecognizer.cpp
index 898071a..cb3f7bf 100644
--- a/tests/auto/gestures/customgesturerecognizer.cpp
+++ b/tests/auto/gestures/customgesturerecognizer.cpp
@@ -4,6 +4,7 @@
const char* SingleshotGestureRecognizer::Name = "SingleshotGesture";
const char* PinchGestureRecognizer::Name = "PinchGesture";
const char* SecondFingerGestureRecognizer::Name = "SecondFingerGesture";
+const char* PanGestureRecognizer::Name = "PanGesture";
SingleshotGestureRecognizer::SingleshotGestureRecognizer(QObject *parent)
: QGestureRecognizer(QString(SingleshotGestureRecognizer::Name), parent)
@@ -105,3 +106,62 @@ void SecondFingerGestureRecognizer::reset()
gesture->point = TouchPoint();
gesture->offset = QPoint();
}
+
+PanGestureRecognizer::PanGestureRecognizer(QObject *parent)
+ : QGestureRecognizer(PanGestureRecognizer::Name, parent)
+{
+ gesture = new PanGesture(this, PanGestureRecognizer::Name);
+}
+
+QGestureRecognizer::Result PanGestureRecognizer::filterEvent(const QEvent *event)
+{
+ if (event->type() != QEvent::TouchBegin ||
+ event->type() != QEvent::TouchUpdate ||
+ event->type() != QEvent::TouchEnd)
+ return QGestureRecognizer::Ignore;
+
+ const QTouchEvent *e = static_cast<const QTouchEvent*>(event);
+ const QList<QTouchEvent::TouchPoint*> &points = e->touchPoints();
+
+ if (points.size() >= 1) {
+ gesture->lastPoints[0] = gesture->points[0];
+ gesture->points[0].id = points.at(0)->id();
+ gesture->points[0].pt = points.at(0)->startPos().toPoint();
+ gesture->points[0].state = (TouchPoint::State)points.at(0)->state();
+ if (points.at(0)->state() == Qt::TouchPointPressed) {
+ gesture->startPoints[0] = gesture->points[0];
+ gesture->lastPoints[0] = gesture->points[0];
+ }
+ }
+ if (points.size() >= 2) {
+ gesture->lastPoints[1] = gesture->points[1];
+ gesture->points[1].id = points.at(1)->id();
+ gesture->points[1].pt = points.at(1)->startPos().toPoint();
+ gesture->points[1].state = (TouchPoint::State)points.at(1)->state();
+ if (points.at(1)->state() == Qt::TouchPointPressed) {
+ gesture->startPoints[1] = gesture->points[1];
+ gesture->lastPoints[1] = gesture->points[1];
+ }
+ }
+
+ if (points.size() == 2)
+ return QGestureRecognizer::GestureStarted;
+ if (points.size() > 2)
+ return QGestureRecognizer::MaybeGesture;
+ if (points.at(0)->state() == Qt::TouchPointPressed)
+ return QGestureRecognizer::MaybeGesture;
+ if (points.at(0)->state() == Qt::TouchPointReleased)
+ return QGestureRecognizer::GestureFinished;
+ return QGestureRecognizer::GestureStarted;
+}
+
+void PanGestureRecognizer::reset()
+{
+ gesture->startPoints[0] = TouchPoint();
+ gesture->startPoints[1] = TouchPoint();
+ gesture->lastPoints[0] = TouchPoint();
+ gesture->lastPoints[1] = TouchPoint();
+ gesture->points[0] = TouchPoint();
+ gesture->points[1] = TouchPoint();
+ gesture->offset = QPoint();
+}