コード例 #1
0
bool MenuWindowManager::sceneEvent(QEvent* event)
{
	switch (event->type()) {
	case QEvent::GestureOverride: {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QList<QGesture*> activeGestures = ge->activeGestures();
		Q_FOREACH(QGesture* g, activeGestures) {
			if (g->hasHotSpot()) {
				QPointF pt = ge->mapToGraphicsScene(g->hotSpot());
				if (m_systemMenuOpened || (!m_winArray.empty() && m_positiveSpace.contains(pt.x() - boundingRect().x(), pt.y() - boundingRect().y()))) {
					ge->accept(g);
				}
				else {
					ge->ignore(g);
				}
			}
		}
		break;
	}
	case QEvent::Gesture: {

		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
		QGesture* g = ge->gesture((Qt::GestureType) SysMgrGestureFlick);
#else
        QGesture* g = ge->gesture(FlickGesture::gestureType());
#endif
		if (g && g->state() == Qt::GestureFinished) {
			flickGestureEvent(ge);
			return true;
		}
	}
	default:
		break;
	}

	return WindowManagerBase::sceneEvent(event);
}
コード例 #2
0
ファイル: IMEView.cpp プロジェクト: 22350/luna-sysmgr
bool IMEView::sceneEvent(QEvent* event)
{
	switch (event->type()) {
	case QEvent::GestureOverride: {
		// consume all gestures if we are handling touches
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QGesture* g = 0;

		if ((g = ge->gesture(Qt::TapGesture))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		else if ((g = ge->gesture(Qt::TapAndHoldGesture))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		else if ((g = ge->gesture(Qt::PinchGesture))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureFlick))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureSingleClick))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		else if ((g = ge->gesture((Qt::GestureType) SysMgrGestureSingleClick))) {
			if (acceptPoint(mapFromScene(ge->mapToGraphicsScene(g->hotSpot())))) {
				event->accept();
				return true;
			}
		}
		}
		break;
	case QEvent::Gesture: {
		QGestureEvent* ge = static_cast<QGestureEvent*>(event);
		QGesture* g = ge->gesture(Qt::TapGesture);
		if (g && g->state() == Qt::GestureFinished) {
			tapEvent(static_cast<QTapGesture*>(g));
			return true;
		}
		if (!g) {
			QGesture* g = ge->gesture((Qt::GestureType) SysMgrGestureScreenEdgeFlick);
			if (g && g->state() == Qt::GestureFinished) {
				screenEdgeFlickEvent(static_cast<ScreenEdgeFlickGesture*>(g));
				return true;
			}
		}
		}
		break;
	case QEvent::TouchBegin:
		touchBegin(static_cast<QTouchEvent*>(event));
		return event->isAccepted();
	case QEvent::TouchUpdate:
		touchUpdate(static_cast<QTouchEvent*>(event));
		return event->isAccepted();
	case QEvent::TouchEnd:
		touchEnd(static_cast<QTouchEvent*>(event));
		return event->isAccepted();
	default: 
		break;
	}
	return QGraphicsObject::sceneEvent(event);
}