diff options
author | Zeno Albisser <zeno.albisser@nokia.com> | 2010-09-07 12:38:54 -0400 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@nokia.com> | 2010-09-08 10:13:28 -0400 |
commit | 36194e4951ce0b9e076e3da1c863fc10f6555a31 (patch) | |
tree | 542eaf0feba98fa9d338ba7079893076a3a6c62e | |
parent | 9d1881a807a1e1f393d0374b71555601970b59a2 (diff) |
avoid using private headers in QPinchGestureRecognizer
Reviewed-by: Denis Dzyubenko
-rw-r--r-- | plugin.cpp | 2 | ||||
-rw-r--r-- | qdeclarativegesturerecognizers.cpp | 110 |
2 files changed, 58 insertions, 54 deletions
@@ -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 // |