qstmgesturelib/qstmgestureevent.h
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
equal deleted inserted replaced
14:6aeb7a756187 16:3c88a81ff781
    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,
    51 	    QStmUpDownGestureType,
    55 	    QStmUpDownGestureType,
    52 	    QStmFlickGestureType,     
    56 	    QStmFlickGestureType,     
    53 	    QStmEdgeScrollGestureType,
    57 	    QStmEdgeScrollGestureType,
    54 	    
    58 	    
    55 	    QStmPinchGestureType, 
    59 	    QStmPinchGestureType, 
    56 	    QStmCornerZoomGestureType
    60 	    QStmCornerZoomGestureType,
       
    61 	    QStmMaybeTapGestureType
    57 	};
    62 	};
    58 
    63 
    59 
    64 
    60 
    65 
    61 class QSTMGESTURELIB_EXPORT QStm_Gesture : public QGesture
    66 class QSTMGESTURELIB_EXPORT QStm_Gesture : public QGesture
    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_ */