controller: make mutually exclusive event 92/29292/1
authorGiWoong Kim <giwoong.kim@samsung.com>
Wed, 1 Oct 2014 08:29:52 +0000 (17:29 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Fri, 24 Oct 2014 05:46:44 +0000 (14:46 +0900)
The controller view events and key events should be
mutually exclusive each other.

Change-Id: I1aa9341bbd4524fd0176bb38babcdfee60525b41
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/ui/dockingconview.cpp
tizen/src/ui/dockingconview.h
tizen/src/ui/floatingconview.cpp
tizen/src/ui/floatingconview.h
tizen/src/ui/skinbezelitem.cpp
tizen/src/ui/skinbezelitem.h
tizen/src/ui/skinkeyitem.cpp
tizen/src/ui/skinkeyitem.h

index adcc8707e03a56a4ee4ddb7c063f4ba2cf96065b..84725cb7315740fccf4e21bf0dad198459bd328f 100644 (file)
@@ -35,7 +35,6 @@ DockingConView::DockingConView(ControllerForm *conForm, QGraphicsScene *scene, Q
     QGraphicsView(scene, parent)
 {
     setStyleSheet("background: transparent");
-    //setAttribute(Qt::WA_TranslucentBackground);
     setStyleSheet("border-style: none");
 
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -52,7 +51,7 @@ DockingConView::DockingConView(ControllerForm *conForm, QGraphicsScene *scene, Q
 void DockingConView::createItems(ControllerForm *conForm)
 {
     /* bezel */
-    SkinBezelItem *bezelItem = new SkinBezelItem(conForm->conImg[ControllerForm::normal]);
+    bezelItem = new SkinBezelItem(conForm->conImg[ControllerForm::normal]);
     scene()->addItem(bezelItem);
 
     /* HW keys */
@@ -77,6 +76,12 @@ void DockingConView::resizeEvent(QResizeEvent *event)
 
 void DockingConView::mousePressEvent(QMouseEvent *event)
 {
+    QGraphicsView::mousePressEvent(event);
+
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
     if (event->button() == Qt::LeftButton) {
         QWidget *win = ((QWidget *) this->parent());
 
@@ -89,12 +94,16 @@ void DockingConView::mousePressEvent(QMouseEvent *event)
             rubberBand->show();
         }
     }
-
-    QGraphicsView::mousePressEvent(event);
 }
 
 void DockingConView::mouseReleaseEvent(QMouseEvent *event)
 {
+    QGraphicsView::mouseReleaseEvent(event);
+
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
     if (event->button() == Qt::LeftButton) {
         if (grabPos != QPoint(-1, -1)) {
             if (rubberBand != NULL) {
@@ -109,18 +118,20 @@ void DockingConView::mouseReleaseEvent(QMouseEvent *event)
             return;
         }
     }
-
-    QGraphicsView::mouseReleaseEvent(event);
 }
 
 void DockingConView::mouseMoveEvent(QMouseEvent *event)
 {
+    QGraphicsView::mouseMoveEvent(event);
+
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
     if (grabPos != QPoint(-1, -1)) {
         rubberBand->setGeometry(
             QRect(rubberPos + (event->globalPos() - grabPos), size()));
     }
-
-    QGraphicsView::mouseMoveEvent(event);
 }
 
 DockingConView::~DockingConView()
index 75450669d6e48cd96dd758385f4fb3ac3e49bf73..dc1b6ff9d5258882b5edaf91d7c2193c5cc44b7e 100644 (file)
@@ -33,6 +33,7 @@
 #include <QRubberBand>
 
 #include "skinview.h"
+#include "skinbezelitem.h"
 #include "controllerform.h"
 
 class DockingConView : public QGraphicsView
@@ -55,6 +56,7 @@ protected:
 private:
     void createItems(ControllerForm *conForm);
 
+    SkinBezelItem *bezelItem;
     QRubberBand *rubberBand;
 };
 
index 4a9d70e022210f3cbeb22fdc9840c70369ef0bb3..a798e3247d22c9e6f3113640504b1829266039a1 100644 (file)
@@ -53,7 +53,7 @@ FloatingConView::FloatingConView(ControllerForm *conForm, QGraphicsScene *scene,
 void FloatingConView::createItems(ControllerForm *conForm)
 {
     /* bezel */
-    SkinBezelItem *bezelItem = new SkinBezelItem(conForm->conImg[ControllerForm::normal]);
+    bezelItem = new SkinBezelItem(conForm->conImg[ControllerForm::normal]);
     scene()->addItem(bezelItem);
 
     /* HW keys */
@@ -78,18 +78,28 @@ void FloatingConView::resizeEvent(QResizeEvent *event)
 
 void FloatingConView::mousePressEvent(QMouseEvent *event)
 {
+    QGraphicsView::mousePressEvent(event);
+
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
     if (event->button() == Qt::LeftButton) {
         QWidget *con = ((QWidget *) this->parent());
 
         grabPos = event->globalPos();
         conPos = con->pos();
     }
-
-    QGraphicsView::mousePressEvent(event);
 }
 
 void FloatingConView::mouseReleaseEvent(QMouseEvent *event)
 {
+    QGraphicsView::mouseReleaseEvent(event);
+
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
     if (event->button() == Qt::LeftButton) {
         grabPos = QPoint(-1, -1);
     }
@@ -113,19 +123,20 @@ void FloatingConView::mouseReleaseEvent(QMouseEvent *event)
         win->openController(win->getUIState()->conState.conFormIndex, true);
         return;
     }
-
-    QGraphicsView::mouseReleaseEvent(event);
 }
 
 void FloatingConView::mouseMoveEvent(QMouseEvent *event)
 {
-    QWidget *con = ((QWidget *)this->parent());
+    QGraphicsView::mouseMoveEvent(event);
 
+    if (bezelItem->isKeyHandling() == true) {
+        return;
+    }
+
+    QWidget *con = ((QWidget *)this->parent());
     if (grabPos != QPoint(-1, -1)) {
         con->move(conPos + (event->globalPos() - grabPos));
     }
-
-    QGraphicsView::mouseMoveEvent(event);
 }
 
 FloatingConView::~FloatingConView()
index e717e8c92df90227523029de020e44a319406c01..81fa6d9762243ba8371e65a06debb87025767c22 100644 (file)
@@ -31,6 +31,7 @@
 #define FLOATINGCONVIEW_H
 
 #include "skinview.h"
+#include "skinbezelitem.h"
 #include "controllerform.h"
 
 class FloatingConView : public QGraphicsView
@@ -51,6 +52,8 @@ protected:
 
 private:
     void createItems(ControllerForm *conForm);
+
+    SkinBezelItem *bezelItem;
 };
 
 #endif // FLOATINGCONVIEW_H
index 06d5f8b8dc46b88da7379540183965e4d1f64f05..4d900660fe3f15a89b8eab0f2b83f02715ff8500 100644 (file)
 SkinBezelItem::SkinBezelItem(QImage bezelImg, QGraphicsItem *parent) :
     QGraphicsPixmapItem(QPixmap::fromImage(bezelImg), parent)
 {
+    keyHandling = false;
+}
+
+void SkinBezelItem::setKeyHandling(bool doing)
+{
+    keyHandling = doing;
+}
+
+bool SkinBezelItem::isKeyHandling()
+{
+    return keyHandling;
 }
 
 SkinBezelItem::~SkinBezelItem()
index 876db43e237d0d5e78afa8e42785633e280efbeb..e8754f856fb9780385350d4cb7e57ae819871256 100644 (file)
@@ -38,9 +38,13 @@ public:
     SkinBezelItem(QImage bezelImg, QGraphicsItem *parent = 0);
     ~SkinBezelItem();
 
+    void setKeyHandling(bool doing);
+    bool isKeyHandling();
+
 protected:
 
 private:
+    bool keyHandling;
 };
 
 #endif // SKINBEZELITEM_H
index 1a160be223bbb43a2fb318d7135527667e4029ec..5685fa6cbd4e05794531e81224e27c705d16db44 100644 (file)
 
 #include "skinkeyitem.h"
 
-SkinKeyItem::SkinKeyItem(QImage pressedImg, HardwareKey *key, QGraphicsItem *parent) :
-    QGraphicsRectItem(key->region, parent)
+SkinKeyItem::SkinKeyItem(QImage pressedImg, HardwareKey *key, SkinBezelItem *parent) :
+    QGraphicsRectItem(key->region, (QGraphicsItem *)parent)
 {
+    this->bezelParent = parent;
     this->pressedImg = pressedImg;
     this->key = key;
     isPressed = false;
     hoverColor = Qt::white; // TODO:
     pen.setColor(Qt::transparent);
+
     longPressTimer = new QTimer();
     longPressTimer->setInterval(3 * 1000);
     longPressTimer->setSingleShot(true);
@@ -53,6 +55,7 @@ void SkinKeyItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
     Q_UNUSED(event)
 
     isPressed = true;
+    bezelParent->setKeyHandling(true);
     pen.setColor(Qt::transparent);
 
     update();
@@ -72,6 +75,7 @@ void SkinKeyItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     Q_UNUSED(event)
     int keyCode = 0;
     isPressed = false;
+    bezelParent->setKeyHandling(false);
 
     update();
 
index 228f2d30d1d152fae0548b1f5e921eeb16e19a34..ce311b9322a509160123d156cb6e6e03975b6c7e 100644 (file)
@@ -34,6 +34,7 @@
 #include <QPainter>
 #include <QTimer>
 
+#include "skinbezelitem.h"
 #include "hardwarekey.h"
 
 extern "C" {
@@ -48,7 +49,7 @@ class SkinKeyItem : public QObject, public QGraphicsRectItem
     Q_OBJECT
 
 public:
-    SkinKeyItem(QImage pressedImg, HardwareKey *key, QGraphicsItem *parent = 0);
+    SkinKeyItem(QImage pressedImg, HardwareKey *key, SkinBezelItem *parent = 0);
     ~SkinKeyItem();
 
     HardwareKey *key;
@@ -69,6 +70,7 @@ protected:
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
 
 private:
+    SkinBezelItem *bezelParent;
     bool isPressed;
     QColor hoverColor;
     QPen pen;