tests/manual/gestures/graphicsview/gestures.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    43 
    43 
    44 #include <QTouchEvent>
    44 #include <QTouchEvent>
    45 
    45 
    46 Qt::GestureType ThreeFingerSlideGesture::Type = Qt::CustomGesture;
    46 Qt::GestureType ThreeFingerSlideGesture::Type = Qt::CustomGesture;
    47 
    47 
    48 QGesture *ThreeFingerSlideGestureRecognizer::createGesture(QObject *)
    48 QGesture *ThreeFingerSlideGestureRecognizer::create(QObject *)
    49 {
    49 {
    50     return new ThreeFingerSlideGesture;
    50     return new ThreeFingerSlideGesture;
    51 }
    51 }
    52 
    52 
    53 QGestureRecognizer::Result ThreeFingerSlideGestureRecognizer::filterEvent(QGesture *state, QObject *, QEvent *event)
    53 QGestureRecognizer::Result ThreeFingerSlideGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event)
    54 {
    54 {
    55     ThreeFingerSlideGesture *d = static_cast<ThreeFingerSlideGesture *>(state);
    55     ThreeFingerSlideGesture *d = static_cast<ThreeFingerSlideGesture *>(state);
    56     QGestureRecognizer::Result result;
    56     QGestureRecognizer::Result result;
    57     switch (event->type()) {
    57     switch (event->type()) {
    58     case QEvent::TouchBegin:
    58     case QEvent::TouchBegin:
    59         result = QGestureRecognizer::MaybeGesture;
    59         result = QGestureRecognizer::MayBeGesture;
    60     case QEvent::TouchEnd:
    60     case QEvent::TouchEnd:
    61         if (d->gestureFired)
    61         if (d->gestureFired)
    62             result = QGestureRecognizer::GestureFinished;
    62             result = QGestureRecognizer::FinishGesture;
    63         else
    63         else
    64             result = QGestureRecognizer::NotGesture;
    64             result = QGestureRecognizer::CancelGesture;
    65     case QEvent::TouchUpdate:
    65     case QEvent::TouchUpdate:
    66         if (d->state() != Qt::NoGesture) {
    66         if (d->state() != Qt::NoGesture) {
    67             QTouchEvent *ev = static_cast<QTouchEvent*>(event);
    67             QTouchEvent *ev = static_cast<QTouchEvent*>(event);
    68             if (ev->touchPoints().size() == 3) {
    68             if (ev->touchPoints().size() == 3) {
    69                 d->gestureFired = true;
    69                 d->gestureFired = true;
    70                 result = QGestureRecognizer::GestureTriggered;
    70                 result = QGestureRecognizer::TriggerGesture;
    71             } else {
    71             } else {
    72                 result = QGestureRecognizer::MaybeGesture;
    72                 result = QGestureRecognizer::MayBeGesture;
    73                 for (int i = 0; i < ev->touchPoints().size(); ++i) {
    73                 for (int i = 0; i < ev->touchPoints().size(); ++i) {
    74                     const QTouchEvent::TouchPoint &pt = ev->touchPoints().at(i);
    74                     const QTouchEvent::TouchPoint &pt = ev->touchPoints().at(i);
    75                     const int distance = (pt.pos().toPoint() - pt.startPos().toPoint()).manhattanLength();
    75                     const int distance = (pt.pos().toPoint() - pt.startPos().toPoint()).manhattanLength();
    76                     if (distance > 20) {
    76                     if (distance > 20) {
    77                         result = QGestureRecognizer::NotGesture;
    77                         result = QGestureRecognizer::CancelGesture;
    78                     }
    78                     }
    79                 }
    79                 }
    80             }
    80             }
    81         } else {
    81         } else {
    82             result = QGestureRecognizer::NotGesture;
    82             result = QGestureRecognizer::CancelGesture;
    83         }
    83         }
    84 
    84 
    85         break;
    85         break;
    86     case QEvent::MouseButtonPress:
    86     case QEvent::MouseButtonPress:
    87     case QEvent::MouseButtonRelease:
    87     case QEvent::MouseButtonRelease:
    88     case QEvent::MouseMove:
    88     case QEvent::MouseMove:
    89         if (d->state() != Qt::NoGesture)
    89         if (d->state() != Qt::NoGesture)
    90             result = QGestureRecognizer::Ignore;
    90             result = QGestureRecognizer::Ignore;
    91         else
    91         else
    92             result = QGestureRecognizer::NotGesture;
    92             result = QGestureRecognizer::CancelGesture;
    93         break;
    93         break;
    94     default:
    94     default:
    95         result = QGestureRecognizer::Ignore;
    95         result = QGestureRecognizer::Ignore;
    96         break;
    96         break;
    97     }
    97     }
   103     static_cast<ThreeFingerSlideGesture *>(state)->gestureFired = false;
   103     static_cast<ThreeFingerSlideGesture *>(state)->gestureFired = false;
   104     QGestureRecognizer::reset(state);
   104     QGestureRecognizer::reset(state);
   105 }
   105 }
   106 
   106 
   107 
   107 
   108 QGesture *RotateGestureRecognizer::createGesture(QObject *)
   108 QGesture *RotateGestureRecognizer::create(QObject *)
   109 {
   109 {
   110     return new QGesture;
   110     return new QGesture;
   111 }
   111 }
   112 
   112 
   113 QGestureRecognizer::Result RotateGestureRecognizer::filterEvent(QGesture *, QObject *, QEvent *event)
   113 QGestureRecognizer::Result RotateGestureRecognizer::recognize(QGesture *, QObject *, QEvent *event)
   114 {
   114 {
   115     switch (event->type()) {
   115     switch (event->type()) {
   116     case QEvent::TouchBegin:
   116     case QEvent::TouchBegin:
   117     case QEvent::TouchEnd:
   117     case QEvent::TouchEnd:
   118     case QEvent::TouchUpdate:
   118     case QEvent::TouchUpdate: