blob: 906fd32c43cfe7ef5da808a0f6b86cfae3de5982 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#include "customgesturerecognizer.h"
#include "qgesture.h"
const char* SingleshotGestureRecognizer::Name = "SingleshotGesture";
const char* PinchGestureRecognizer::Name = "PinchGesture";
const char* SecondFingerGestureRecognizer::Name = "SecondFingerGesture";
SingleshotGestureRecognizer::SingleshotGestureRecognizer(QObject *parent)
: QGestureRecognizer(QString(SingleshotGestureRecognizer::Name), parent)
{
gesture = new SingleshotGesture(this, SingleshotGestureRecognizer::Name);
}
QGestureRecognizer::Result SingleshotGestureRecognizer::filterEvent(const QEvent *event)
{
if (event->type() == SingleshotEvent::Type) {
return QGestureRecognizer::GestureFinished;
}
return QGestureRecognizer::NotGesture;
}
void SingleshotGestureRecognizer::reset()
{
gesture->offset = QPoint();
}
PinchGestureRecognizer::PinchGestureRecognizer(QObject *parent)
: QGestureRecognizer(PinchGestureRecognizer::Name, parent)
{
gesture = new PinchGesture(this, PinchGestureRecognizer::Name);
}
QGestureRecognizer::Result PinchGestureRecognizer::filterEvent(const QEvent *event)
{
if (event->type() != TouchEvent::Type)
return QGestureRecognizer::Ignore;
const TouchEvent *e = static_cast<const TouchEvent*>(event);
if (e->points[0].state == TouchPoint::Begin)
gesture->startPoints[0] = e->points[0];
if (e->points[1].state == TouchPoint::Begin)
gesture->startPoints[1] = e->points[1];
gesture->lastPoints[0] = gesture->points[0];
gesture->lastPoints[1] = gesture->points[1];
gesture->points[0] = e->points[0];
gesture->points[1] = e->points[1];
if (((e->points[0].state == TouchPoint::Begin || e->points[0].state == TouchPoint::Update))) {
if (e->points[1].state == TouchPoint::End || e->points[1].state == TouchPoint::None)
return MaybeGesture;
return GestureStarted;
} else if (((e->points[1].state == TouchPoint::Begin || e->points[1].state == TouchPoint::Update))) {
if (e->points[0].state == TouchPoint::End || e->points[0].state == TouchPoint::None)
return MaybeGesture;
return GestureStarted;
} else if ((e->points[0].state == TouchPoint::End && e->points[1].state == TouchPoint::End) ||
(e->points[0].state == TouchPoint::End && e->points[1].state == TouchPoint::None) ||
(e->points[0].state == TouchPoint::None && e->points[1].state == TouchPoint::End)) {
return QGestureRecognizer::NotGesture;
}
return QGestureRecognizer::NotGesture;
}
void PinchGestureRecognizer::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();
}
SecondFingerGestureRecognizer::SecondFingerGestureRecognizer(QObject *parent)
: QGestureRecognizer(SecondFingerGestureRecognizer::Name, parent)
{
gesture = new SecondFingerGesture(this, SecondFingerGestureRecognizer::Name);
}
QGestureRecognizer::Result SecondFingerGestureRecognizer::filterEvent(const QEvent *event)
{
if (event->type() != TouchEvent::Type)
return QGestureRecognizer::Ignore;
const TouchEvent *e = static_cast<const TouchEvent*>(event);
if (e->points[1].state != TouchPoint::None) {
if (e->points[1].state == TouchPoint::Begin)
gesture->startPoint = e->points[1];
gesture->lastPoint = gesture->point;
gesture->point = e->points[1];
if (e->points[1].state == TouchPoint::End)
return QGestureRecognizer::GestureFinished;
else if (e->points[1].state != TouchPoint::None)
return QGestureRecognizer::GestureStarted;
}
return QGestureRecognizer::NotGesture;
}
void SecondFingerGestureRecognizer::reset()
{
gesture->startPoint = TouchPoint();
gesture->lastPoint = TouchPoint();
gesture->point = TouchPoint();
gesture->offset = QPoint();
}
|