controller: set region to docking controller 84/29084/2
authorGiWoong Kim <giwoong.kim@samsung.com>
Fri, 26 Sep 2014 04:59:14 +0000 (13:59 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 22 Oct 2014 04:49:48 +0000 (21:49 -0700)
Change-Id: I2305ee58a2f536f2ad251b4675159b1955c6b04d
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/display/qt5_supplement.cpp
tizen/src/ui/mainwindow.cpp
tizen/src/ui/mainwindow.h
tizen/src/ui/skinview.cpp
tizen/src/ui/uiinformation.cpp
tizen/src/ui/uiinformation.h
tizen/src/ui/uistate.cpp
tizen/src/ui/uistate.h

index 8594d0812f8bd0aff9317cbf50fd4beed039617e..22fb31641e882d7f099a29a3b822d1bc65204b43 100644 (file)
@@ -119,7 +119,7 @@ void qt5_skin_init(void)
 //    mainwindow->move(100, 100); // TODO: MRU
     mainwindow->show();
 
-    mainwindow->openController(getControlIndex(), false);
+    mainwindow->openController(getControlIndex(), true);
 
     mainwindow->startSwapper();
 }
index 4ee0f7472c4a7354abb5b4d0f5eabb1450df061a..74531f7839b9b0a78b82c5249c6c968ab14e030d 100644 (file)
@@ -209,18 +209,26 @@ void MainWindow::openController(int index, bool docking)
         return;
     }
 
+    /* create */
     if (docking == true) {
         QAction *action = (QAction *)popupMenu->getControllerMapper()->mapping(index);
         conScene = new QGraphicsScene(this);
+        conScene->setBackgroundBrush(Qt::black);
         getUIState()->conState.dockingCon =
             new DockingController(conForm, conScene, action, this);
-
-        winLayout->addWidget(getDockingCon());
     } else {
         QAction *action = (QAction *)popupMenu->getControllerMapper()->mapping(index);
         getUIState()->conState.floatingCon =
             new FloatingController(conForm, action, this);
+    }
 
+    getUIState()->conState.conFormIndex = index;
+    adjustSize();
+
+    /* arrange */
+    if (docking == true) {
+        winLayout->addWidget(getDockingCon());
+    } else {
         QPoint globalPos = mapToGlobal(QPoint(0, 0));
         getFloatingCon()->move(globalPos.x() + size().width(), globalPos.y());
         getFloatingCon()->show();
@@ -254,13 +262,17 @@ void MainWindow::resizeEvent(QResizeEvent *event)
 {
     qDebug("resize main window");
 
-    resize(uiInfo->getMainFormSize().width(),
-        uiInfo->getMainFormSize().height());
+    resize(uiInfo->getMainSize().width(),
+        uiInfo->getMainSize().height());
 
-    MainForm *mainForm = uiInfo->getMainForm();
-    if (mainForm != NULL) {
-        setRegion(mainForm->skinImg[MainForm::normal]);
-    }
+    setRegion();
+}
+
+void MainWindow::setRegion()
+{
+    //qDebug("set region");
+
+    setMask(uiInfo->getMainRegion());
 }
 
 void MainWindow::rotate(int angle)
@@ -287,21 +299,6 @@ void MainWindow::scale(int scale)
     adjustSize();
 }
 
-void MainWindow::setRegion(QImage baseImage)
-{
-    //qDebug("set region");
-
-    if (baseImage.isNull() == true) {
-        qWarning("invalid image for region");
-        return;
-    }
-
-    QImage region = baseImage.createAlphaMask().scaled(
-                baseImage.width() * getUIState()->getScaleFactor(),
-                baseImage.height() * getUIState()->getScaleFactor());
-    setMask(QRegion(QBitmap::fromImage(region)));
-}
-
 MainWindow::~MainWindow()
 {
     qDebug("destory main window");
index 74b5e37e5ce29de9004f19f530ed63b2197e478b..b02c5d3d5358fd4748b703d2a14bedaf07af460b 100644 (file)
@@ -93,14 +93,14 @@ protected:
     void resizeEvent(QResizeEvent *event);
     void closeEvent(QCloseEvent *);
 
-    void setRegion(QImage baseImage);
+    void setRegion();
     QLabel *label;
 
 private:
     /* windowing */
     QHBoxLayout *winLayout;
     QGraphicsScene *skinScene;
-    QGraphicsScene *conScene;
+    QGraphicsScene *conScene; /* for docking controller */
     SkinView* skinView;
     DisplayBase *display;
     ContextMenu *popupMenu;
index 531cd351045e82513c3407cac983ef5e641ed207..720e937fa507004eb1fc26aa33a90c43500a09d5 100644 (file)
@@ -89,8 +89,8 @@ void SkinView::resizeEvent(QResizeEvent *event)
     MainWindow *win = ((MainWindow *)this->parent());
 
     /* geometry */
-    const int width = win->uiInfo->getMainFormSize().width();
-    const int height = win->uiInfo->getMainFormSize().height();
+    const int width = win->uiInfo->getMainSize().width();
+    const int height = win->uiInfo->getMainSize().height();
     setGeometry(0, 0, width, height);
 
     /* scaling */
index 431a7e5b28b9fc8ff020f4b480a6d7685407081d..10fdb856686220aa92a2abbc6734f296cba3f36e 100644 (file)
@@ -37,24 +37,79 @@ UIInformation::UIInformation() :
 
 MainForm *UIInformation::getMainForm()
 {
-    if (uiState.getMainFormIndex() > (mainFormList.count() - 1)
-            || uiState.getMainFormIndex() < 0) {
+    int index = uiState.getMainFormIndex();
+
+    if (index > (mainFormList.count() - 1) || index < 0) {
         qWarning("invalid form found");
 
         uiState.mainFormAngle = 0;
     }
 
-    return mainFormList.at(uiState.getMainFormIndex());
+    return mainFormList.at(index);
+}
+
+ControllerForm *UIInformation::getConForm()
+{
+    int index = uiState.conState.getConFormIndex();
+
+    if (index > (conFormList.count() - 1) || index < 0) {
+        qWarning("invalid form found");
+
+        uiState.conState.conFormIndex = 0;
+    }
+
+    return conFormList.at(index);
 }
 
-QSize UIInformation::getMainFormSize()
+QSize UIInformation::getMainSize()
 {
-    MainForm *form = getMainForm();
-    if (form == NULL) {
+    MainForm *mainForm = getMainForm();
+    if (mainForm == NULL) {
+        qWarning("main form is null");
         return QSize(0, 0);
     }
 
-    return form->skinImg[MainForm::normal].size() * uiState.getScaleFactor();
+    QSize mainSize = mainForm->skinImg[MainForm::normal].size() * uiState.getScaleFactor();
+
+    if (uiState.conState.dockingCon != NULL) {
+        ControllerForm *conForm = getConForm();
+        if (conForm != NULL) {
+            QSize conSize = conForm->conImg[ControllerForm::normal].size();
+
+            mainSize.setWidth(mainSize.width() + conSize.width());
+        }
+    }
+
+    return mainSize;
+}
+
+QRegion UIInformation::getMainRegion()
+{
+    MainForm *mainForm = getMainForm();
+    if (mainForm == NULL) {
+        qWarning("main form is null");
+        return QRegion(0, 0, 100, 100);
+    }
+
+    QImage *mainImage = &(mainForm->skinImg[MainForm::normal]);
+
+    QImage regionImage = mainImage->scaled(
+        mainImage->width() * uiState.getScaleFactor(),
+        mainImage->height() * uiState.getScaleFactor()).createAlphaMask();
+
+    QRegion region(QBitmap::fromImage(regionImage));
+
+    if (uiState.conState.dockingCon != NULL) {
+        ControllerForm *conForm = getConForm();
+        if (conForm != NULL) {
+            QImage *conImage = &(conForm->conImg[ControllerForm::normal]);
+            QRegion regionCon(QBitmap::fromImage(conImage->createAlphaMask()));
+            regionCon.translate(regionImage.width() + 1, 0);
+            region = region.united(regionCon);
+        }
+    }
+
+    return region;
 }
 
 UIInformation::~UIInformation()
index 9c88a2e5c71c27a0954b6bcaa58d8816cf16f731..5eb7d1db55ea75650b9c48c2c18afd94de958b70 100644 (file)
@@ -55,7 +55,9 @@ public:
     UIState uiState; /* runtime information */
 
     MainForm *getMainForm(); /* current */
-    QSize getMainFormSize(); /* current */
+    ControllerForm *getConForm();
+    QSize getMainSize();
+    QRegion getMainRegion();
 };
 
 #endif // UIINFORMATION_H
index 7f6c07cb885f75a0bb9d98b263cea1c7acb43ed5..5cde385af0e7fa15873b4161b0d16214072f14b0 100644 (file)
@@ -32,6 +32,8 @@
 UIState::UIState() :
     mainFormAngle(0), mainFormScale(100)
 {
+    conState.conFormIndex = 0;
+    conState.dockingCon = NULL;
     conState.floatingCon = NULL;
 }
 
index 30579ee23eaf900a73a4d99f6161e96767d19f15..a35edb09d9d99e48a44cc39a90b84e65ace9b681 100644 (file)
 class ControllerState
 {
 public:
+    inline int getConFormIndex() {
+        return conFormIndex;
+    }
+
+    int conFormIndex;
     DockingController *dockingCon;
     FloatingController *floatingCon;
 };