24 #include <QEvent> |
24 #include <QEvent> |
25 #include <QPoint> |
25 #include <QPoint> |
26 #include <QString> |
26 #include <QString> |
27 #include <QVarLengthArray> |
27 #include <QVarLengthArray> |
28 #include <QMouseEvent> |
28 #include <QMouseEvent> |
|
29 #include <QWidget> |
|
30 #include <QApplication> |
|
31 #include <QGraphicsScene> |
|
32 #include <QGraphicsView> |
29 #include <QGesture> |
33 #include <QGesture> |
30 #include <QWidget> |
34 #include <QString> |
|
35 #include <QGraphicsWidget> |
31 |
36 |
32 #include "qstmgesturedefs.h" |
37 #include "qstmgesturedefs.h" |
33 #include "qstmgesture_if.h" |
38 #include "qstmgesture_if.h" |
34 |
39 |
35 #define QStmGestureEventType QEvent::User + 1 |
40 #define QStmGestureEventType QEvent::User + 1 |
36 #define QStmGestureType Qt::CustomGesture |
41 #define QStmGestureType Qt::CustomGesture |
37 |
|
38 |
42 |
39 enum QStm_GestureType |
43 enum QStm_GestureType |
40 { |
44 { |
41 QStmUknownGestureType = 0, |
45 QStmUknownGestureType = 0, |
42 QStmTouchGestureType, |
46 QStmTouchGestureType, |
68 |
73 |
69 virtual ~QStm_Gesture() {} |
74 virtual ~QStm_Gesture() {} |
70 |
75 |
71 QStm_Gesture& operator=(QStm_Gesture& other); |
76 QStm_Gesture& operator=(QStm_Gesture& other); |
72 QPoint position() const { return m_pos; } |
77 QPoint position() const { return m_pos; } |
|
78 QPointF scenePosition(QGraphicsItem* i); |
73 void setPosition(const QPoint &pos) { m_pos = pos; /*setHotSpot(QPointF(pos)); */} |
79 void setPosition(const QPoint &pos) { m_pos = pos; /*setHotSpot(QPointF(pos)); */} |
|
80 QPoint position2() const { return m_pos2; } |
|
81 QPointF scenePosition2(QGraphicsItem* i); |
|
82 void setPosition2(const QPoint &pos) { m_pos2 = pos; /*setHotSpot(QPointF(pos)); */} |
74 |
83 |
75 void setGestureStmType(QStm_GestureType type) { m_gstType = type; } |
84 void setGestureStmType(QStm_GestureType type) { m_gstType = type; } |
76 QStm_GestureType getGestureStmType() const { return m_gstType; } |
85 QStm_GestureType getGestureStmType() const { return m_gstType; } |
|
86 QStm_GestureType gestureUidToStmType(qstmGesture::QStm_GestureUid uid, int stmGestSubType); |
77 |
87 |
78 void setGestureState(Qt::GestureState state) { m_state = state; } |
88 void setGestureState(Qt::GestureState state) { m_state = state; } |
79 Qt::GestureState gestureState() { return m_state; } |
89 Qt::GestureState gestureState() { return m_state; } |
80 |
90 |
81 void setGestureSubType(int type) { m_gstSubType = type; } |
91 void setGestureSubType(int type) { m_gstSubType = type; } |
83 |
93 |
84 qreal getSpeed() { return m_speed; } |
94 qreal getSpeed() { return m_speed; } |
85 void setSpeed(qreal speed) { m_speed = speed; } |
95 void setSpeed(qreal speed) { m_speed = speed; } |
86 |
96 |
87 QPointF getSpeedVec() { return m_speedVec; } |
97 QPointF getSpeedVec() { return m_speedVec; } |
|
98 QPointF sceneSpeedVec(QGraphicsItem* i); |
88 void setSpeedVec(QPointF speedVec) { m_speedVec = speedVec; } |
99 void setSpeedVec(QPointF speedVec) { m_speedVec = speedVec; } |
89 |
100 |
90 QPoint getLengthAndDirection() { return m_vector; } |
101 QPoint getLengthAndDirection() { return m_vector; } |
|
102 QPointF sceneLengthAndDirection(QGraphicsItem* i); |
|
103 |
91 void setLengthAndDirection(QPoint vec) { m_vector = vec; } |
104 void setLengthAndDirection(QPoint vec) { m_vector = vec; } |
92 |
105 |
93 int getDirection() { return m_direction; } |
106 int getDirection() { return m_direction; } |
|
107 int sceneDirection(QGraphicsItem* i); |
94 void setDirection(int dir) { m_direction = dir; } |
108 void setDirection(int dir) { m_direction = dir; } |
95 QString gestureName(); |
109 QString gestureName(); |
96 |
110 |
97 void* getDetails() { return m_details; } |
111 void* getDetails() { return m_details; } |
98 void setDetails(void* details ) { m_details = details; } |
112 void setDetails(void* details ) { m_details = details; } |
|
113 QTime timestamp() { return m_timestamp; } |
|
114 void setTimestamp(QTime ts) { m_timestamp.setHMS(ts.hour(), |
|
115 ts.minute(), ts.second(), ts.msec()); } |
99 |
116 |
100 bool sendEvent(QEvent* event); |
117 bool sendEvent(QEvent* event); |
101 QList<QMouseEvent*> getMouseEvents(); |
118 QList<QMouseEvent*> getMouseEvents(); |
102 bool sendMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier = Qt::NoModifier); |
119 bool sendMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier = Qt::NoModifier); |
103 bool sendMouseEvents(Qt::KeyboardModifier modifier = Qt::NoModifier); |
120 bool sendMouseEvents(Qt::KeyboardModifier modifier = Qt::NoModifier); |
104 bool postMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier = Qt::NoModifier); |
121 bool postMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier = Qt::NoModifier); |
105 |
122 bool sendGraphicsSceneMouseEvent(QGraphicsObject* go); |
106 void setTarget(QWidget* target) { m_target = target; } |
123 void setTarget(QWidget* target) { m_target = target; } |
107 QWidget* target() { return m_target; } |
124 QWidget* target() { return m_target; } |
108 |
125 |
109 static void setAssignedGestureType(Qt::GestureType type) { s_assignedType = type; } |
126 static void setAssignedGestureType(Qt::GestureType type); |
110 static Qt::GestureType assignedType() { return s_assignedType; } |
127 static Qt::GestureType assignedType(); |
111 |
128 static QGraphicsItem* gestureGrabberItem(); |
112 |
129 static void setGestureGrabberItem(QGraphicsItem* item); |
|
130 static QGraphicsItem* gestureFocusedItem(); |
|
131 static void setGestureFocusedItem(QGraphicsItem* item); |
|
132 bool clearGestureFocusedItemIfNeeded(); |
|
133 bool isGestureEnded(); |
|
134 void updateGestureFocusedItemIfNeeded(QGraphicsItem* gi); |
|
135 QEvent::Type gestureType2GraphicsSceneMouseType(); |
113 |
136 |
114 private: |
137 private: |
115 bool sendOrPostMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier, bool send); |
138 bool sendOrPostMouseEvents(QObject* receiver, Qt::KeyboardModifier modifier, bool send); |
116 void gestureTypeToMouseTypes(QVarLengthArray<int, 4>& types); |
139 void gestureTypeToMouseTypes(QVarLengthArray<int, 4>& types); |
117 |
140 |
121 QPoint m_vector; |
144 QPoint m_vector; |
122 QStm_GestureType m_gstType; |
145 QStm_GestureType m_gstType; |
123 Qt::GestureState m_state; |
146 Qt::GestureState m_state; |
124 int m_gstSubType; |
147 int m_gstSubType; |
125 QPoint m_pos; |
148 QPoint m_pos; |
|
149 QPoint m_pos2; |
126 void* m_details; |
150 void* m_details; |
127 QPointF m_speedVec; |
151 QPointF m_speedVec; |
128 static Qt::GestureType s_assignedType; |
|
129 QWidget* m_target; |
152 QWidget* m_target; |
|
153 QTime m_timestamp; |
130 }; |
154 }; |
131 |
155 |
|
156 QSTMGESTURELIB_EXPORT QStm_Gesture* getQStmGesture(QEvent* event); |
|
157 QSTMGESTURELIB_EXPORT QPointF qstmMapFromGlobal(const QPointF& gpos, QGraphicsObject* graphicsObj); |
|
158 QSTMGESTURELIB_EXPORT QPoint qstmMapFromScene(const QPointF& gpos, QGraphicsObject* graphicsObj); |
|
159 QSTMGESTURELIB_EXPORT QPointF qstmMapToScene(const QPointF& gpos, QGraphicsObject* graphicsObj); |
|
160 QSTMGESTURELIB_EXPORT QGraphicsView* qstmGetGraphicsView(QGraphicsObject* graphicsObj); |
|
161 QSTMGESTURELIB_EXPORT bool qstmDeliverGestureEventToGraphicsItem(QGraphicsView* gv, QEvent* event); |
|
162 QSTMGESTURELIB_EXPORT void qstmSetGraphicsSceneMouseEvent(const QPointF& scenePos, QGraphicsObject* graphicsObj, |
|
163 QGraphicsSceneMouseEvent& event, bool select = false); |
132 |
164 |
133 QSTMGESTURELIB_EXPORT QStm_Gesture* getQStmGesture(QEvent* event); |
165 QSTMGESTURELIB_EXPORT bool qstmIsGraphicsSceneMouseEvent(QEvent* event); |
134 |
166 QSTMGESTURELIB_EXPORT bool qstmIsMouseEvent(QEvent* event); |
135 |
167 QSTMGESTURELIB_EXPORT bool qstmIsTouchEvent(QEvent* event); |
|
168 QSTMGESTURELIB_EXPORT bool qstmIsContextMenuEvent(QEvent* event); |
136 |
169 |
137 class QSTMGESTURELIB_EXPORT QStm_GestureEvent : public QEvent |
170 class QSTMGESTURELIB_EXPORT QStm_GestureEvent : public QEvent |
138 { |
171 { |
139 public: |
172 public: |
140 QStm_GestureEvent(); |
173 QStm_GestureEvent(); |
141 virtual ~QStm_GestureEvent(); |
174 virtual ~QStm_GestureEvent(); |
142 static QEvent::Type stmGestureEventType() { return static_cast<QEvent::Type>(QStmGestureEventType); } |
175 static QEvent::Type stmGestureEventType(); |
143 }; |
176 }; |
144 |
177 |
145 |
178 |
|
179 class QSTMGESTURELIB_EXPORT QStm_GestureEventFilter : public QObject |
|
180 { |
|
181 public: |
|
182 QStm_GestureEventFilter() {} |
|
183 virtual ~QStm_GestureEventFilter() {} |
|
184 static QStm_GestureEventFilter* instance(); |
|
185 bool eventFilter(QObject* receiver, QEvent* event); |
|
186 bool event(QEvent* event); |
|
187 bool sendGraphicsSceneMouseEvent(QEvent* event, QGraphicsObject* go); |
|
188 |
|
189 |
|
190 private: |
|
191 static QStm_GestureEventFilter* m_instance; |
|
192 }; |
|
193 |
|
194 |
|
195 |
146 #endif /* QSTMGESTUREEVENT_H_ */ |
196 #endif /* QSTMGESTUREEVENT_H_ */ |