ui: set a constraint about the docking controller
authorJihye Won <jihye.won1@samsung.com>
Wed, 29 Jul 2015 02:47:44 +0000 (11:47 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Fri, 31 Jul 2015 12:29:18 +0000 (21:29 +0900)
- improved a usability
  when the user clicks the docking controller.
- the docking controller can be floating state
  only when the user presses, moves and releases the contoller.

Change-Id: Ifabb5f7a92d525086c0b1f25ebe177573521e27e
Signed-off-by: Jihye Won <jihye.won1@samsung.com>
tizen/src/ui/controller/dockingconview.cpp
tizen/src/ui/controller/dockingconview.h

index 23ff6c7..e23876d 100644 (file)
@@ -110,6 +110,8 @@ void DockingConView::mousePressEvent(QMouseEvent *event)
             rubberBand->show();
         }
     }
+
+    setConViewStatus(CONVIEW_PRESSED);
 }
 
 void DockingConView::mouseReleaseEvent(QMouseEvent *event)
@@ -127,14 +129,16 @@ void DockingConView::mouseReleaseEvent(QMouseEvent *event)
                 rubberBand->hide();
             }
 
-            /* toggle */
-            MainWindow *win = ((MainWindow *)parent->parent());
-            win->getUIState()->conState.recentlyFloatPos = event->globalPos() - eventPos;
-
-            win->openController(win->getUIState()->conState.conFormIndex, -1);
-            return;
+            if (getConViewStatus() != CONVIEW_PRESSED) {
+                /* toggle */
+                MainWindow *win = ((MainWindow *)parent->parent());
+                win->getUIState()->conState.recentlyFloatPos = event->globalPos() - eventPos;
+                win->openController(win->getUIState()->conState.conFormIndex, -1);
+            }
         }
     }
+
+    setConViewStatus(CONVIEW_RELEASED);
 }
 
 void DockingConView::mouseMoveEvent(QMouseEvent *event)
@@ -150,6 +154,22 @@ void DockingConView::mouseMoveEvent(QMouseEvent *event)
         rubberBand->setGeometry(
             QRect(rubberPos + (event->globalPos() - grabPos), size()));
     }
+
+    setConViewStatus(CONVIEW_MOVED);
+}
+
+void DockingConView::setConViewStatus(conViewStatus status)
+{
+    if (conViewStat == CONVIEW_PRESSED && status == CONVIEW_MOVED) {
+        conViewStat = CONVIEW_DRAGGED;
+    } else {
+        conViewStat = status;
+    }
+}
+
+int DockingConView::getConViewStatus()
+{
+    return conViewStat;
 }
 
 QList<HardwareKey *> DockingConView::getKeyList()
index 46c67bf..b9a5b7a 100644 (file)
@@ -40,11 +40,22 @@ class DockingController;
 
 class DockingConView : public QGraphicsView
 {
+    Q_ENUMS(conViewStatus)
+
 public:
     DockingConView(ControllerForm *conForm, QGraphicsScene *scene, QWidget *parent = 0);
     ~DockingConView();
     QList<HardwareKey *> getKeyList();
 
+    enum conViewStatus {
+        CONVIEW_PRESSED,
+        CONVIEW_RELEASED,
+        CONVIEW_MOVED,
+        CONVIEW_DRAGGED
+    };
+    void setConViewStatus(conViewStatus status);
+    int getConViewStatus();
+
 protected:
     void resizeEvent(QResizeEvent *event);
     void mousePressEvent(QMouseEvent *event);
@@ -62,6 +73,8 @@ private:
     SkinBezelItem *bezelItem;
     QRubberBand *rubberBand;
     QList<HardwareKey *> keyList;
+
+    conViewStatus conViewStat;
 };
 
 #endif // DOCKINGCONVIEW_H