summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@nokia.com>2010-09-07 12:38:54 -0400
committerZeno Albisser <zeno.albisser@nokia.com>2010-09-08 10:13:28 -0400
commit36194e4951ce0b9e076e3da1c863fc10f6555a31 (patch)
tree542eaf0feba98fa9d338ba7079893076a3a6c62e
parent9d1881a807a1e1f393d0374b71555601970b59a2 (diff)
avoid using private headers in QPinchGestureRecognizer
Reviewed-by: Denis Dzyubenko
-rw-r--r--plugin.cpp2
-rw-r--r--qdeclarativegesturerecognizers.cpp110
2 files changed, 58 insertions, 54 deletions
diff --git a/plugin.cpp b/plugin.cpp
index baf566e..3cd6dd5 100644
--- a/plugin.cpp
+++ b/plugin.cpp
@@ -78,7 +78,7 @@ void GestureAreaQmlPlugin::registerTypes(const char *uri)
// QGestureRecognizer::registerRecognizer(new QTapGestureRecognizer());
// QGestureRecognizer::registerRecognizer(new QTapAndHoldGestureRecognizer());
QGestureRecognizer::registerRecognizer(new QPanGestureRecognizer());
-// QGestureRecognizer::registerRecognizer(new QPinchGestureRecognizer());
+ QGestureRecognizer::registerRecognizer(new QPinchGestureRecognizer());
// QGestureRecognizer::registerRecognizer(new QSwipeGestureRecognizer());
#endif
}
diff --git a/qdeclarativegesturerecognizers.cpp b/qdeclarativegesturerecognizers.cpp
index 2a1a5aa..7297de8 100644
--- a/qdeclarativegesturerecognizers.cpp
+++ b/qdeclarativegesturerecognizers.cpp
@@ -274,7 +274,7 @@ void QPanGestureRecognizer::reset(QGesture *state)
//
// QPinchGestureRecognizer
//
-/*
+
QPinchGestureRecognizer::QPinchGestureRecognizer()
{
}
@@ -295,13 +295,11 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
QEvent *event)
{
QPinchGesture *q = static_cast<QPinchGesture *>(state);
- QPinchGesturePrivate *d = q->d_func();
-
QGestureRecognizer::Result result;
switch (event->type()) {
case QEvent::TouchBegin: {
- d->gotTouched = true;
+ q->setProperty("gotTouched", true);
result = QGestureRecognizer::MayBeGesture;
break;
}
@@ -315,17 +313,16 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
}
case QEvent::TouchUpdate: {
const QTouchEvent *ev = static_cast<const QTouchEvent *>(event);
- d->changeFlags = 0;
+ q->setChangeFlags(0);
if (ev->touchPoints().size() == 2) {
QTouchEvent::TouchPoint p1 = ev->touchPoints().at(0);
QTouchEvent::TouchPoint p2 = ev->touchPoints().at(1);
- d->hotSpot = p1.screenPos();
- d->isHotSpotSet = true;
+ q->setHotSpot(p1.screenPos());
- if (d->isNewSequence) {
- d->startPosition[0] = p1.screenPos();
- d->startPosition[1] = p2.screenPos();
+ if (q->property("isNewSequence").toBool()) {
+ q->setProperty("startPosition0", p1.screenPos());
+ q->setProperty("startPosition1", p2.screenPos());
}
QLineF line(p1.screenPos(), p2.screenPos());
QLineF lastLine(p1.lastScreenPos(), p2.lastScreenPos());
@@ -333,21 +330,21 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
tmp.setLength(line.length() / 2.);
QPointF centerPoint = tmp.p2();
- d->lastCenterPoint = d->centerPoint;
- d->centerPoint = centerPoint;
- d->changeFlags |= QPinchGesture::CenterPointChanged;
+ q->setLastCenterPoint(q->centerPoint());
+ q->setCenterPoint(centerPoint);
+ q->setChangeFlags(q->changeFlags() | QPinchGesture::CenterPointChanged);
const qreal scaleFactor = line.length() / lastLine.length();
- if (d->isNewSequence) {
- d->lastScaleFactor = scaleFactor;
- d->lastCenterPoint = centerPoint;
+ if (q->property("isNewSequence").toBool()) {
+ q->setLastScaleFactor(scaleFactor);
+ q->setLastCenterPoint(centerPoint);
} else {
- d->lastScaleFactor = d->scaleFactor;
+ q->setLastScaleFactor(q->scaleFactor());
}
- d->scaleFactor = scaleFactor;
- d->totalScaleFactor = d->totalScaleFactor * scaleFactor;
- d->changeFlags |= QPinchGesture::ScaleFactorChanged;
+ q->setScaleFactor(scaleFactor);
+ q->setTotalScaleFactor(q->totalScaleFactor()*scaleFactor);
+ q->setChangeFlags(q->changeFlags() | QPinchGesture::ScaleFactorChanged);
qreal angle = QLineF(p1.screenPos(), p2.screenPos()).angle();
if (angle > 180)
@@ -356,22 +353,22 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
if (startAngle > 180)
startAngle -= 360;
const qreal rotationAngle = startAngle - angle;
- if (d->isNewSequence)
- d->lastRotationAngle = rotationAngle;
+ if (q->property("isNewSequence").toBool())
+ q->setLastRotationAngle(rotationAngle);
else
- d->lastRotationAngle = d->rotationAngle;
- d->rotationAngle = rotationAngle;
- d->totalRotationAngle += d->rotationAngle - d->lastRotationAngle;
- d->changeFlags |= QPinchGesture::RotationAngleChanged;
+ q->setLastRotationAngle(q->rotationAngle());
+ q->setRotationAngle(rotationAngle);
+ q->setTotalRotationAngle(q->totalRotationAngle() + q->rotationAngle() - q->lastRotationAngle());
+ q->setChangeFlags(q->changeFlags() | QPinchGesture::RotationAngleChanged);
- d->totalChangeFlags |= d->changeFlags;
+ q->setTotalChangeFlags(q->totalChangeFlags() | q->changeFlags());
if(p1.state() == Qt::TouchPointReleased || p2.state() == Qt::TouchPointReleased)
- d->isNewSequence = true;
+ q->setProperty("isNewSequence", true);
else
- d->isNewSequence = false;
+ q->setProperty("isNewSequence", false);
result = QGestureRecognizer::TriggerGesture;
} else {
- d->isNewSequence = true;
+ q->setProperty("isNewSequence", true);
if (q->state() != Qt::NoGesture)
result = QGestureRecognizer::Ignore;
else
@@ -388,28 +385,28 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
bool isNewSequence = q->state() == Qt::NoGesture;
- d->lastCenterPoint = d->centerPoint;
- d->centerPoint = ev->globalPos();
+ q->setLastCenterPoint(q->centerPoint());
+ q->setCenterPoint(ev->globalPos());
- d->changeFlags = 0;
+ q->setChangeFlags(0);
if (ev->modifiers() & Qt::ControlModifier) {
- d->lastScaleFactor = d->scaleFactor;
+ q->setLastScaleFactor(q->scaleFactor());
if (ev->delta() > 0)
- d->scaleFactor = 1.1 * qAbs(ev->delta()) / 8. / 15.;
+ q->setScaleFactor(1.1 * qAbs(ev->delta()) / 8. / 15.);
else
- d->scaleFactor = 0.9 / qAbs(ev->delta() / 8. / 15.);
- d->changeFlags |= QPinchGesture::ScaleFactorChanged;
+ q->setScaleFactor(0.9 / qAbs(ev->delta() / 8. / 15.));
+ q->setChangeFlags(q->changeFlags() | QPinchGesture::ScaleFactorChanged);
} else if (ev->modifiers() & Qt::ShiftModifier) {
- d->lastRotationAngle = d->rotationAngle;
- d->rotationAngle += ev->delta() / 8. / 15.;
- d->changeFlags |= QPinchGesture::RotationAngleChanged;
+ q->setLastRotationAngle(q->rotationAngle());
+ q->setRotationAngle(q->rotationAngle() + ev->delta() / 8. / 15.);
+ q->setChangeFlags(q->changeFlags() | QPinchGesture::RotationAngleChanged);
}
if (isNewSequence) {
- d->lastCenterPoint = d->centerPoint;
- d->lastScaleFactor = d->scaleFactor;
- d->lastRotationAngle = d->rotationAngle;
+ q->setLastCenterPoint(q->centerPoint());
+ q->setLastScaleFactor(q->scaleFactor());
+ q->setLastRotationAngle(q->rotationAngle());
}
int timerId = q->property("timerid").toInt();
@@ -430,7 +427,7 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
int timerId = state->property("timerid").toInt();
if (obj == state && timerId) {
state->killTimer(timerId);
- d->changeFlags = 0;
+ q->setChangeFlags(0);
return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint;
}
}
@@ -447,18 +444,25 @@ void QPinchGestureRecognizer::reset(QGesture *state)
if (!state)
return;
QPinchGesture *pinch = static_cast<QPinchGesture *>(state);
- QPinchGesturePrivate *d = pinch->d_func();
- d->totalChangeFlags = d->changeFlags = 0;
+ pinch->setTotalChangeFlags(0);
+ pinch->setChangeFlags(0);
- d->startCenterPoint = d->lastCenterPoint = d->centerPoint = QPointF();
- d->totalScaleFactor = d->lastScaleFactor = d->scaleFactor = 1;
- d->totalRotationAngle = d->lastRotationAngle = d->rotationAngle = 0;
+ pinch->setStartCenterPoint(QPointF());
+ pinch->setLastCenterPoint(QPointF());
+ pinch->setCenterPoint(QPointF());
+ pinch->setTotalScaleFactor(1);
+ pinch->setLastScaleFactor(1);
+ pinch->setScaleFactor(1);
+ pinch->setTotalRotationAngle(0);
+ pinch->setLastRotationAngle(0);
+ pinch->setRotationAngle(0);
- d->isNewSequence = true;
- d->startPosition[0] = d->startPosition[1] = QPointF();
+ pinch->setProperty("isNewSequence", true);
+ pinch->setProperty("startPosition0", QPointF());
+ pinch->setProperty("startPosition1", QPointF());
- d->gotTouched = false;
+ pinch->setProperty("gotTouched", false);
int timerId = state->property("timerid").toInt();
if (timerId) {
@@ -467,7 +471,7 @@ void QPinchGestureRecognizer::reset(QGesture *state)
}
QGestureRecognizer::reset(state);
}
-
+/*
//
// QSwipeGestureRecognizer
//