touch: minor cleanup for touch event
authorGiWoong Kim <giwoong.kim@samsung.com>
Thu, 4 Feb 2016 07:28:21 +0000 (16:28 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Tue, 16 Feb 2016 05:24:31 +0000 (14:24 +0900)
- remove dependency with emul_state
- modify function and variable names

Change-Id: I675bc802ea9ee54e7b587f7f5441623cdd71ac12
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/emul_state.c
tizen/src/emul_state.h
tizen/src/ui/displaybase.cpp
tizen/src/ui/input/keyboardhelper.cpp
tizen/src/ui/input/multitouchtracker.cpp
tizen/src/ui/input/multitouchtracker.h
tizen/src/ui/input/touchscreenhelper.cpp
tizen/src/ui/input/touchscreenhelper.h

index 862a5b8c4081321ffe5b92a52e607ad0014b5582..22d9dd52387bccedf1fc715472146259fe85a2e2 100644 (file)
@@ -94,17 +94,6 @@ void set_emulator_condition(int state)
     _emul_state.emulator_condition = state;
 }
 
-/* emulator multi-touch */
-void set_multi_touch_enable(int mode)
-{
-    _emul_state.multitouch_enable = mode;
-}
-
-int get_multi_touch_enable(void)
-{
-    return _emul_state.multitouch_enable;
-}
-
 void set_emuld_connection(bool connected)
 {
     _emul_state.emuld_connection = connected;
index 988d748ad846b8cef55ac7d8edbd4a0da5df97fb..90cccf1b7ea62d333e6abbc45fedd831de7e737e 100644 (file)
@@ -112,10 +112,6 @@ bool get_emuld_connection(void);
 bool get_sdb_connection(void);
 int get_max_touch_point(void);
 
-/* multi-touch */
-void set_multi_touch_enable(int mode);
-int get_multi_touch_enable(void);
-
 // cleaned-up
 extern const char *launch_conf_file;
 extern const char *bin_path;
index 6db630a0c6b1c1fdb54cbba47e01eb0fc0e9f082..f74364bf3ac8f50fd308fc30d2b7e69355983d9b 100644 (file)
@@ -280,7 +280,7 @@ void DisplayBase::handleMousePress(QMouseEvent *event)
         isDragging = true;
 
         if (tsHelper != NULL) {
-            tsHelper->mousePressed(event, getGuestPos(event->pos()));
+            tsHelper->touchPressed(event->pos(), getGuestPos(event->pos()));
         }
         if (mouseHelper != NULL) {
             mouseHelper->mousePressed();
@@ -308,7 +308,7 @@ void DisplayBase::handleMouseRelease(QMouseEvent *event)
         }
 
         if (tsHelper != NULL) {
-            tsHelper->mouseReleased(event, getGuestPos(event->pos()));
+            tsHelper->touchReleased(event->pos(), getGuestPos(event->pos()));
         }
         if (mouseHelper != NULL) {
             mouseHelper->mouseReleased();
@@ -354,10 +354,9 @@ void DisplayBase::handleMouseMove(QMouseEvent *event)
                 QPoint clientPos(hostPosX, hostPosY);
                 qDebug() << "drag out of touch screen:" << clientPos;
 
-                // TODO: modify event
-                tsHelper->mouseReleased(event, getGuestPos(clientPos));
+                tsHelper->touchReleased(event->pos(), getGuestPos(clientPos));
             } else {
-                tsHelper->mouseMoved(event, getGuestPos(event->pos()));
+                tsHelper->touchMoved(event->pos(), getGuestPos(event->pos()));
             }
         }
     }
index 30c2e5d50cf9e1d088620f7cb1661e4ec4636347..57560cb130c668669f74435c02f10a2b3f54abaa 100644 (file)
@@ -230,20 +230,23 @@ void KeyboardHelper::autoKeyRelease(void)
         keyCodeList.removeLast();
     }
 
-    /* disable multi-touch mode */
-    if (get_multi_touch_enable() != MultiTouchTracker::MT_OFF) {
-        qDebug() << "disable multi-touch";
+    if (mtTracker != NULL) {
+        /* disable multi-touch mode */
+        if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
+            qDebug() << "disable multi-touch";
 
-        set_multi_touch_enable(MultiTouchTracker::MT_OFF);
-        mtTracker->finishTracking();
+            mtTracker->finishTracking();
+        }
     }
 }
 
 int KeyboardHelper::keyCodeOperation(QKeyEvent *event, int keyCode)
 {
     /* keypad and specialKey translation */
-    if (!hostNumLockState && (event->modifiers() == (Qt::KeypadModifier | Qt::ShiftModifier))) {
+    if (!hostNumLockState &&
+        (event->modifiers() == (Qt::KeypadModifier | Qt::ShiftModifier))) {
         QMap<int, int>::iterator keypadIter = keypadMap.find(keyCode);
+
         while (keypadIter != keypadMap.end()) {
             if (keypadIter.key() == keyCode) {
                 keyCode = keypadIter.value();
@@ -298,37 +301,36 @@ void KeyboardHelper::pressFilterMtChecking(QKeyEvent *event)
     case Qt::Key_Alt:
         if (event->modifiers() == (Qt::ControlModifier | Qt::AltModifier)) {
             qDebug() << "enable multi-touch mode: SYMM";
-            set_multi_touch_enable(MultiTouchTracker::MT_SYMM);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SYMM);
 
-            mtTracker->leaveTouchPoint(MT_SYMM_MAX_POINT);
+            mtTracker->limitTouchCnt(MT_SYMM_MAX_POINT);
         }
 
         break;
     case Qt::Key_Shift:
         if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier)) {
             qDebug() << "enable multi-touch mode: PARA";
-            set_multi_touch_enable(MultiTouchTracker::MT_PARA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_PARA);
         } else if (event->modifiers() == Qt::ShiftModifier) {
             qDebug() << "enable multi-touch mode: SEPA";
-            set_multi_touch_enable(MultiTouchTracker::MT_SEPA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SEPA);
         }
 
         break;
     case Qt::Key_Control:
         if (event->modifiers() == Qt::ControlModifier) {
             qDebug() << "enable multi-touch mode: SEPA";
-            set_multi_touch_enable(MultiTouchTracker::MT_SEPA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SEPA);
         } else if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier)) {
             qDebug() << "enable multi-touch mode: PARA";
-            set_multi_touch_enable(MultiTouchTracker::MT_PARA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_PARA);
         }
 
         break;
     default:
-        if (get_multi_touch_enable() != MultiTouchTracker::MT_OFF) {
+        if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
             qDebug() << "disable multi-touch";
 
-            set_multi_touch_enable(MultiTouchTracker::MT_OFF);
             mtTracker->finishTracking();
         }
 
@@ -473,11 +475,10 @@ void KeyboardHelper::releaseFilterMtChecking(QKeyEvent *event)
     case Qt::Key_Alt:
         if (event->modifiers() == Qt::ControlModifier) {
             qDebug() << "enabled multi-touch mode: SYMM -> SEPA";
-            set_multi_touch_enable(MultiTouchTracker::MT_SEPA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SEPA);
         } else {
             qDebug() << "disable multi-touch";
 
-            set_multi_touch_enable(MultiTouchTracker::MT_OFF);
             mtTracker->finishTracking();
         }
 
@@ -485,11 +486,10 @@ void KeyboardHelper::releaseFilterMtChecking(QKeyEvent *event)
     case Qt::Key_Shift:
         if (event->modifiers() == Qt::ControlModifier) {
             qDebug() << "enabled multi-touch mode: PARA -> SEPA";
-            set_multi_touch_enable(MultiTouchTracker::MT_SEPA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SEPA);
         } else {
             qDebug() << "disable multi-touch";
 
-            set_multi_touch_enable(MultiTouchTracker::MT_OFF);
             mtTracker->finishTracking();
         }
 
@@ -497,11 +497,10 @@ void KeyboardHelper::releaseFilterMtChecking(QKeyEvent *event)
     case Qt::Key_Control:
         if (event->modifiers() == Qt::ShiftModifier) {
             qDebug() << "enabled multi-touch mode: PARA -> SEPA";
-            set_multi_touch_enable(MultiTouchTracker::MT_SEPA);
+            mtTracker->setMtMode(MultiTouchTracker::MT_SEPA);
         } else {
             qDebug() << "disable multi-touch";
 
-            set_multi_touch_enable(MultiTouchTracker::MT_OFF);
             mtTracker->finishTracking();
         }
 
index 67d82e48794be2ba83937a7e0f6b5d50eba6e75a..04594f58f5cc3dc049ff8a107aa8b616cddd39c6 100644 (file)
@@ -5,7 +5,8 @@
  *
  * Contact:
  * GiWoong Kim <giwoong.kim@samsung.com>
- * Sangho Park <sangho1206.park@samsung.com>
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * Sangho Park <sangho.p@samsung.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -91,13 +92,16 @@ MultiTouchTracker::MultiTouchTracker(
     this->parent = parent;
     this->maxTouchPoint = maxTouchPoint;
     this->pointRadius = 16; // TODO:
-    this->grabTouchPoint = NULL;
+
+    this->mtMode = MT_OFF;
+    this->selectedTouchPoint = NULL;
 
     mtProcessingFunc[MT_OFF] = &MultiTouchTracker::processingOff;
     mtProcessingFunc[MT_SEPA] = &MultiTouchTracker::processingSepa;
     mtProcessingFunc[MT_PARA] = &MultiTouchTracker::processingPara;
     mtProcessingFunc[MT_SYMM] = &MultiTouchTracker::processingSymm;
 
+    /* touch point image */
     touchPointImage.fill(Qt::transparent);
 
     QPainter painter(&touchPointImage);
@@ -142,6 +146,16 @@ bool MultiTouchTracker::isTrackingReady()
     return virtio_touchscreen_ready();
 }
 
+void MultiTouchTracker::setMtMode(MultiTouchMode mode)
+{
+    mtMode = mode;
+}
+
+int MultiTouchTracker::getMtMode()
+{
+    return mtMode;
+}
+
 int MultiTouchTracker::addTouchPoint(QPoint hostPos, QPoint guestPos)
 {
     const int touchCnt = touchPointList.count();
@@ -205,15 +219,15 @@ TouchPoint *MultiTouchTracker::searchTouchPoint(int targetID)
     return NULL;
 }
 
-int MultiTouchTracker::leaveTouchPoint(int remainCnt)
+int MultiTouchTracker::limitTouchCnt(int max)
 {
-    releaseGrabTouchPoint();
+    releaseSelectedTouchPoint();
 
     const int beforeCnt = touchPointList.count();
     TouchPoint *point = NULL;
-    int diff;
+    int diff = 0;
 
-    while (touchPointList.count() > remainCnt) {
+    while (touchPointList.count() > max) {
         point = touchPointList.last();
         if (point != NULL) {
             qDebug() << "ID" << point->getID() << "point releasing";
@@ -224,7 +238,6 @@ int MultiTouchTracker::leaveTouchPoint(int remainCnt)
 
             delete point;
         }
-
         touchPointList.removeLast();
 
         qt5_mt_count--;
@@ -239,12 +252,12 @@ int MultiTouchTracker::leaveTouchPoint(int remainCnt)
     return diff;
 }
 
-void MultiTouchTracker::mtProcessing(int mode, QPoint hostPos, QPoint guestPos)
+void MultiTouchTracker::mtProcessing(QPoint hostPos, QPoint guestPos)
 {
-    if (mode >= MT_OFF && mode < MT_MAX) {
-        (this->*(mtProcessingFunc[mode]))(hostPos, guestPos);
+    if (mtMode >= MT_OFF && mtMode < MT_MAX) {
+        (this->*(mtProcessingFunc[mtMode]))(hostPos, guestPos);
     } else {
-        qWarning() << "invalid MT mode:" << mode;
+        qWarning() << "invalid MT mode:" << mtMode;
     }
 }
 
@@ -261,11 +274,11 @@ void MultiTouchTracker::processingSepa(QPoint hostPos, QPoint guestPos)
     TouchPoint *point = NULL;
     const int touchCnt = touchPointList.count();
 
-    if (grabTouchPoint != NULL) {
-        grabTouchPoint->updatePos(hostPos, guestPos);
+    if (selectedTouchPoint != NULL) {
+        selectedTouchPoint->updatePos(hostPos, guestPos);
 
         virtio_touchscreen_event(guestPos.x(), guestPos.y(),
-            grabTouchPoint->getID() - 1, 1);
+            selectedTouchPoint->getID() - 1, 1);
         return;
     }
 
@@ -279,7 +292,7 @@ void MultiTouchTracker::processingSepa(QPoint hostPos, QPoint guestPos)
         virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
     } else if ((point = searchTouchPoint(hostPos)) != NULL) { /* grab a touch */
         qDebug() << "ID" << point->getID() << "point is taken";
-        grabTouchPoint = point;
+        selectedTouchPoint = point;
     } else if (touchCnt == getMaxTouchPoint()) { /* last touch */
         point = touchPointList.last();
         if (point != NULL) {
@@ -312,9 +325,9 @@ void MultiTouchTracker::processingPara(QPoint hostPos, QPoint guestPos)
     TouchPoint *point = NULL;
     const int touchCnt = touchPointList.count();
 
-    if (grabTouchPoint != NULL) {
-        const int hostPosDiffX = hostPos.x() - grabTouchPoint->getHostPos().x();
-        const int hostPosDiffY = hostPos.y() - grabTouchPoint->getHostPos().y();
+    if (selectedTouchPoint != NULL) {
+        const int hostPosDiffX = hostPos.x() - selectedTouchPoint->getHostPos().x();
+        const int hostPosDiffY = hostPos.y() - selectedTouchPoint->getHostPos().y();
 
         /* out of bounds checking */
         const QRect screenRect(QPoint(0, 0),
@@ -370,7 +383,7 @@ void MultiTouchTracker::processingPara(QPoint hostPos, QPoint guestPos)
         virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
     } else if ((point = searchTouchPoint(hostPos)) != NULL) { /* grab a touch */
         qDebug() << "ID" << point->getID() << "point is taken";
-        grabTouchPoint = point;
+        selectedTouchPoint = point;
     } else if (touchCnt == getMaxTouchPoint()) { /* last touch */
         /* do nothing */
         return;
@@ -391,14 +404,14 @@ void MultiTouchTracker::processingSymm(QPoint hostPos, QPoint guestPos)
     TouchPoint *point = NULL;
     const int touchCnt = touchPointList.count();
 
-    if (grabTouchPoint != NULL) {
-        const int hostPosDiffX = hostPos.x() - grabTouchPoint->getHostPos().x();
-        const int hostPosDiffY = hostPos.y() - grabTouchPoint->getHostPos().y();
+    if (selectedTouchPoint != NULL) {
+        const int hostPosDiffX = hostPos.x() - selectedTouchPoint->getHostPos().x();
+        const int hostPosDiffY = hostPos.y() - selectedTouchPoint->getHostPos().y();
 
         /* move selected point */
-        grabTouchPoint->updatePos(hostPos, guestPos);
+        selectedTouchPoint->updatePos(hostPos, guestPos);
         virtio_touchscreen_event(guestPos.x(), guestPos.y(),
-            grabTouchPoint->getID() - 1, 1);
+            selectedTouchPoint->getID() - 1, 1);
 
         /* out of bounds checking */
         const QRect screenRect(QPoint(0, 0),
@@ -408,7 +421,7 @@ void MultiTouchTracker::processingSymm(QPoint hostPos, QPoint guestPos)
 
         for (int i = 0; i < touchPointList.count(); i++) {
             point = touchPointList.at(i);
-            if (point != NULL && point != grabTouchPoint) {
+            if (point != NULL && point != selectedTouchPoint) {
                 if (screenRegion.isNull() == false &&
                     screenRegion.contains(QPoint(
                         point->getHostPos().x() - hostPosDiffX,
@@ -427,7 +440,7 @@ void MultiTouchTracker::processingSymm(QPoint hostPos, QPoint guestPos)
         /* move other points */
         for (int i = 0; i < touchPointList.count(); i++) {
             point = touchPointList.at(i);
-            if (point != NULL && point != grabTouchPoint) {
+            if (point != NULL && point != selectedTouchPoint) {
                 const QPoint hostMovedPos(
                     point->getHostPos().x() - hostPosDiffX,
                     point->getHostPos().y() - hostPosDiffY);
@@ -454,7 +467,7 @@ void MultiTouchTracker::processingSymm(QPoint hostPos, QPoint guestPos)
         virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
     } else if ((point = searchTouchPoint(hostPos)) != NULL) { /* grab a touch */
         qDebug() << "ID" << point->getID() << "point is taken";
-        grabTouchPoint = point;
+        selectedTouchPoint = point;
     } else if (touchCnt >= MT_SYMM_MAX_POINT) { /* last touch */
         /* supports up to 2 touch points */
         point = touchPointList.last();
@@ -482,17 +495,19 @@ void MultiTouchTracker::processingSymm(QPoint hostPos, QPoint guestPos)
     }
 }
 
-void MultiTouchTracker::releaseGrabTouchPoint()
+void MultiTouchTracker::releaseSelectedTouchPoint()
 {
-    if (grabTouchPoint != NULL) {
-        qDebug() << "ID" << grabTouchPoint->getID() << "point let go";
-        grabTouchPoint = NULL;
+    if (selectedTouchPoint != NULL) {
+        qDebug() << "ID" << selectedTouchPoint->getID() << "point let go";
+        selectedTouchPoint = NULL;
     }
 }
 
 void MultiTouchTracker::finishTracking()
 {
-    releaseGrabTouchPoint();
+    setMtMode(MT_OFF);
+
+    releaseSelectedTouchPoint();
 
     TouchPoint *point = NULL;
     for (int i = 0; i < touchPointList.count(); i++) {
index bbf3d3f8e452aa00c6e4ecd721eece111a120bc7..1f6361c435487accd881c2cdfb8c7d1a9d65ccdb 100644 (file)
@@ -65,14 +65,6 @@ public:
     QList<TouchPoint *> getTouchPointList();
     bool isTrackingReady();
 
-    int addTouchPoint(QPoint hostPos, QPoint guestPos);
-    TouchPoint *searchTouchPoint(QPoint targetPos);
-    TouchPoint *searchTouchPoint(int targetID);
-    int leaveTouchPoint(int remainCnt);
-    void releaseGrabTouchPoint();
-    void finishTracking();
-
-    void mtProcessing(int mode, QPoint, QPoint);
     enum MultiTouchMode {
         MT_OFF = 0,
         MT_SEPA,
@@ -80,6 +72,17 @@ public:
         MT_SYMM,
         MT_MAX
     };
+    void setMtMode(MultiTouchMode mode);
+    int getMtMode();
+
+    int addTouchPoint(QPoint hostPos, QPoint guestPos);
+    TouchPoint *searchTouchPoint(QPoint targetPos);
+    TouchPoint *searchTouchPoint(int targetID);
+    int limitTouchCnt(int remainCnt);
+
+    void mtProcessing(QPoint hostPos, QPoint guestPos);
+    void releaseSelectedTouchPoint();
+    void finishTracking();
 
 private:
     void processingOff(QPoint hostPos, QPoint guestPos);
@@ -91,10 +94,11 @@ private:
     TouchScreenHelper *parent;
     int maxTouchPoint;
     int pointRadius;
+    QImage touchPointImage;
 
-    TouchPoint *grabTouchPoint;
+    int mtMode;
+    TouchPoint *selectedTouchPoint;
     QList<TouchPoint *> touchPointList;
-    QImage touchPointImage;
 };
 
 #endif // MULTITOUCHTRACKER_H
index e690e680d2cf0c0e8ce0f5fcc1cd208a6f9cdfac..a0c56d7d943ee00e2695f5f23f8c0ad6b8e3a7c2 100644 (file)
@@ -5,7 +5,8 @@
  *
  * Contact:
  * GiWoong Kim <giwoong.kim@samsung.com>
- * Sangho Park <sangho1206.park@samsung.com>
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * Sangho Park <sangho.p@samsung.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -55,37 +56,39 @@ MultiTouchTracker *TouchScreenHelper::getMtTracker()
     return mtTracker;
 }
 
-void TouchScreenHelper::mousePressed(QMouseEvent *event, QPoint guestPos)
+void TouchScreenHelper::touchPressed(QPoint hostPos, QPoint guestPos)
 {
     /* multi-touch processing */
-    const int mtMode = get_multi_touch_enable();
-    if (mtMode != MultiTouchTracker::MT_OFF) {
-        mtTracker->mtProcessing(mtMode, QPoint(event->x(), event->y()), guestPos);
+    if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
+        mtTracker->mtProcessing(hostPos, guestPos);
         return;
     }
 
+    /* single-touch processing */
     virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
 }
 
-void TouchScreenHelper::mouseReleased(QMouseEvent *event, QPoint guestPos)
+void TouchScreenHelper::touchReleased(QPoint hostPos, QPoint guestPos)
 {
-    if (get_multi_touch_enable() != MultiTouchTracker::MT_OFF) {
-        mtTracker->releaseGrabTouchPoint();
+       /* multi-touch processing */
+    if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
+        mtTracker->releaseSelectedTouchPoint();
         return;
     }
 
+    /* single-touch processing */
     virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 0);
 }
 
-void TouchScreenHelper::mouseMoved(QMouseEvent *event, QPoint guestPos)
+void TouchScreenHelper::touchMoved(QPoint hostPos, QPoint guestPos)
 {
     /* multi-touch processing */
-    const int mtMode = get_multi_touch_enable();
-    if (mtMode != MultiTouchTracker::MT_OFF) {
-        mtTracker->mtProcessing(mtMode, QPoint(event->x(), event->y()), guestPos);
+    if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
+        mtTracker->mtProcessing(hostPos, guestPos);
         return;
     }
 
+    /* single-touch processing */
     virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
 }
 
@@ -95,6 +98,5 @@ TouchScreenHelper::~TouchScreenHelper()
 
     if (mtTracker != NULL) {
         delete mtTracker;
-        mtTracker = NULL;
     }
 }
index bd33329d8c53b9cef85cd3655dbaa483adf6da8f..8b24342b3afbf568cbb843e9d2afbb438bc618c3 100644 (file)
@@ -41,9 +41,9 @@ public:
     void *getParent();
     MultiTouchTracker *getMtTracker();
 
-    void mousePressed(QMouseEvent *event, QPoint guestPos);
-    void mouseReleased(QMouseEvent *event, QPoint guestPos);
-    void mouseMoved(QMouseEvent *event, QPoint guestPos);
+    void touchPressed(QPoint hostPos, QPoint guestPos);
+    void touchReleased(QPoint hostPos, QPoint guestPos);
+    void touchMoved(QPoint hostPos, QPoint guestPos);
 
 private:
     void *parent;