17 #ifndef UBUNTU_TOUCH_GATE_H
18 #define UBUNTU_TOUCH_GATE_H
20 #include "UbuntuGesturesQmlGlobal.h"
27 #define TOUCHGATE_DEBUG 0
29 class TouchOwnershipEvent;
41 class UBUNTUGESTURESQML_EXPORT TouchGate :
public QQuickItem {
45 Q_PROPERTY(QQuickItem* targetItem READ targetItem WRITE setTargetItem NOTIFY targetItemChanged)
48 bool event(QEvent *e)
override;
50 QQuickItem *targetItem() {
return m_targetItem; }
51 void setTargetItem(QQuickItem *item);
54 void targetItemChanged(QQuickItem *item);
57 void touchEvent(QTouchEvent *event)
override;
61 TouchEvent(
const QTouchEvent *event);
63 bool removeTouch(
int touchId);
65 QEvent::Type eventType;
67 Qt::KeyboardModifiers modifiers;
68 QList<QTouchEvent::TouchPoint> touchPoints;
74 void touchOwnershipEvent(TouchOwnershipEvent *event);
75 bool isTouchPointOwned(
int touchId)
const;
76 void storeTouchEvent(
const QTouchEvent *event);
77 void removeTouchFromStoredEvents(
int touchId);
78 void dispatchFullyOwnedEvents();
79 bool eventIsFullyOwned(
const TouchEvent &event)
const;
81 void dispatchTouchEventToTarget(
const TouchEvent &event);
82 void dispatchTouchEventToTarget(QTouchEvent* event);
83 void dispatchTouchEventToTarget(
84 QEvent::Type eventType,
86 Qt::KeyboardModifiers modifiers,
87 const QList<QTouchEvent::TouchPoint> &touchPoints,
92 void transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints,
const QTransform &transform);
93 static QTouchEvent *createQTouchEvent(QEvent::Type eventType,
95 Qt::KeyboardModifiers modifiers,
96 const QList<QTouchEvent::TouchPoint> &touchPoints,
100 void removeTouchInfoForEndedTouches(
const QList<QTouchEvent::TouchPoint> &touchPoints);
103 QString oldestPendingTouchIdsString();
106 QList<TouchEvent> m_storedEvents;
115 TouchInfo() {ownership = OwnershipUndefined; ended =
false;}
119 QMap<int, TouchInfo> m_touchInfoMap;
121 QPointer<QQuickItem> m_targetItem;
123 friend class tst_TouchGate;
126 #endif // UBUNTU_TOUCH_GATE_H