bool EmulatedCardWindow::sceneEvent(QEvent* event) { if (isMaximized()) { if (event->type() == QEvent::GestureOverride) { event->accept(); } else if (event->type() == QEvent::Gesture) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture* g = ge->gesture(Qt::TapGesture); if (g && g->state() == Qt::GestureFinished) { QTapGesture* gt = static_cast<QTapGesture*>(g); QPoint touchPoint = mapFromScene(gt->position()).toPoint(); QRectF hitTarget = mapRectFromItem(m_keyboardButton, m_keyboardButton->boundingRect()); if (hitTarget.contains(touchPoint)) { //The tap coordinates landed on the keyboard button, so let them through //without adjusting them m_keyboardButton->simulateClick(); return true; } } } } return CardWindow::sceneEvent(event); }
void QTapGestureRecognizer::reset(QGesture *state) { QTapGesture *q = static_cast<QTapGesture *>(state); QTapGesturePrivate *d = q->d_func(); d->position = QPointF(); QGestureRecognizer::reset(state); }
bool DashboardWindowContainer::sceneEvent(QEvent* event) { if (event->type() == QEvent::GestureOverride) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); ge->accept(); return true; } else if (event->type() == QEvent::Gesture) { QGesture* g = static_cast<QGestureEvent*>(event)->gesture(Qt::TapGesture); if (g) { QTapGesture* tap = static_cast<QTapGesture*>(g); if (tap->state() == Qt::GestureFinished) { handleTap(mapFromScene(tap->position())); } return true; } if(!m_isMenu) { #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) g = static_cast<QGestureEvent*>(event)->gesture((Qt::GestureType) SysMgrGestureFlick); #else g = static_cast<QGestureEvent*>(event)->gesture(FlickGesture::gestureType()); #endif if (g) { FlickGesture* flick = static_cast<FlickGesture*>(g); if (flick->state() == Qt::GestureFinished) { bool flick_delete = abs(flick->velocity().x()) > abs(flick->velocity().y()); if (flick_delete) { if (DashboardWindow* w = m_draggedWindow.data()) { m_draggedWindow.clear(); if (!w->persistent()) { m_seenFlick = true; triggerItemDelete(w); } } } } return true; } } } else if (event->type() == QEvent::TouchBegin) { return true; } else if (event->type() == QEvent::TouchUpdate) { return true; } else if (event->type() == QEvent::TouchEnd){ return true; } return QGraphicsObject::sceneEvent(event); }
QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event) { QTapGesture *q = static_cast<QTapGesture *>(state); QTapGesturePrivate *d = q->d_func(); const QTouchEvent *ev = static_cast<const QTouchEvent *>(event); QGestureRecognizer::Result result = QGestureRecognizer::CancelGesture; switch (event->type()) { case QEvent::TouchBegin: { d->position = ev->touchPoints().at(0).pos(); q->setHotSpot(ev->touchPoints().at(0).screenPos()); result = QGestureRecognizer::TriggerGesture; break; } case QEvent::TouchUpdate: case QEvent::TouchEnd: { if (q->state() != Qt::NoGesture && ev->touchPoints().size() == 1) { QTouchEvent::TouchPoint p = ev->touchPoints().at(0); QPoint delta = p.pos().toPoint() - p.startPos().toPoint(); enum { TapRadius = 40 }; if (delta.manhattanLength() <= TapRadius) { if (event->type() == QEvent::TouchEnd) result = QGestureRecognizer::FinishGesture; else result = QGestureRecognizer::TriggerGesture; } } break; } case QEvent::MouseButtonPress: case QEvent::MouseMove: case QEvent::MouseButtonRelease: result = QGestureRecognizer::Ignore; break; default: result = QGestureRecognizer::Ignore; break; } return result; }
//virtual bool PixButton::sceneEvent(QEvent * event) { if (event->type() == QEvent::GestureOverride) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); ge->accept(); return true; } else if (event->type() == QEvent::Gesture) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture * g = 0; g = ge->gesture(Qt::TapGesture); if (g) { QTapGesture* tap = static_cast<QTapGesture*>(g); if (tap->state() == Qt::GestureFinished) { tapGesture(tap); } return true; } g = ge->gesture(Qt::TapAndHoldGesture); if (g) { QTapAndHoldGesture* hold = static_cast<QTapAndHoldGesture*>(g); if (hold->state() == Qt::GestureFinished) { tapAndHoldGesture(hold); } return true; } } else if (event->type() == QEvent::TouchBegin) { return touchStartEvent(static_cast<QTouchEvent *>(event)); } else if (event->type() == QEvent::TouchUpdate) { return touchUpdateEvent(static_cast<QTouchEvent *>(event)); } else if (event->type() == QEvent::TouchEnd) { return touchEndEvent(static_cast<QTouchEvent *>(event)); } return QGraphicsObject::sceneEvent(event); }
bool PageTab::sceneEvent(QEvent* event) { if (event->type() == QEvent::GestureOverride) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); ge->accept(); return true; } else if (event->type() == QEvent::Gesture) { QGestureEvent* ge = static_cast<QGestureEvent*>(event); QGesture* g = ge->gesture(Qt::TapGesture); if (g) { QTapGesture* tap = static_cast<QTapGesture*>(g); if (tap->state() == Qt::GestureFinished) { tapGesture(tap,ge); } return true; } g = ge->gesture(Qt::TapAndHoldGesture); if (g) { QTapAndHoldGesture* hold = static_cast<QTapAndHoldGesture*>(g); if (hold->state() == Qt::GestureFinished) { tapAndHoldGesture(hold,ge); } return true; } // g = ge->gesture((Qt::GestureType) SysMgrGestureFlick); // if (g) { // FlickGesture* flick = static_cast<FlickGesture*>(g); // if (flick->state() == Qt::GestureFinished) { // flickGesture(flick,ge); // } // return true; // } } return QGraphicsObject::sceneEvent(event); }
QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event) { QTapGesture *q = static_cast<QTapGesture *>(state); QTapGesturePrivate *d = q->d_func(); const QTouchEvent *ev = static_cast<const QTouchEvent *>(event); QGestureRecognizer::Result result = QGestureRecognizer::CancelGesture; switch (event->type()) { case QEvent::TouchBegin: { #ifndef QT_WEBOS // REBASE_CHECK_REQUIRED necessary? d->position = ev->touchPoints().at(0).pos(); q->setHotSpot(ev->touchPoints().at(0).screenPos()); #else // QT_WEBOS QTouchEvent::TouchPoint p = ev->touchPoints().at(0); d->position = p.pos(); d->hotSpot = p.screenPos(); d->isHotSpotSet = true; #endif // QT_WEBOS result = QGestureRecognizer::TriggerGesture; break; } case QEvent::TouchUpdate: case QEvent::TouchEnd: { if (q->state() != Qt::NoGesture && ev->touchPoints().size() == 1) { QTouchEvent::TouchPoint p = ev->touchPoints().at(0); #ifdef QT_WEBOS // REBASE_CHECK_REQUIRED use setHotSpot? d->hotSpot = p.screenPos(); d->isHotSpotSet = true; #endif // QT_WEBOS QPoint delta = p.pos().toPoint() - p.startPos().toPoint(); enum { TapRadius = 40 }; if (delta.manhattanLength() <= TapRadius) { if (event->type() == QEvent::TouchEnd) result = QGestureRecognizer::FinishGesture; else result = QGestureRecognizer::TriggerGesture; } } break; } case QEvent::MouseButtonPress: case QEvent::MouseMove: case QEvent::MouseButtonRelease: result = QGestureRecognizer::Ignore; break; #ifdef QT_WEBOS case QEvent::Gesture: { QGesture* g = static_cast<QGestureEvent*>(event)->gesture(Qt::SysMgrGestureFlick); if (g && g->state() == Qt::GestureFinished && q->state() != Qt::NoGesture ) { result = QGestureRecognizer::CancelGesture; break; } g = static_cast<QGestureEvent*>(event)->gesture(Qt::SysMgrGestureScreenEdgeFlick); if (g && g->state() == Qt::GestureFinished && q->state() != Qt::NoGesture ) { result = QGestureRecognizer::CancelGesture; break; } } // fall through #endif // QT_WEBOS default: result = QGestureRecognizer::Ignore; break; } return result; }