From: GiWoong Kim Date: Fri, 26 Sep 2014 04:59:14 +0000 (+0900) Subject: controller: set region to docking controller X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6ac5a1cb03ddad6b602561ba5ab1dddaf6443b5d;p=sdk%2Femulator%2Fqemu.git controller: set region to docking controller Change-Id: I2305ee58a2f536f2ad251b4675159b1955c6b04d Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/display/qt5_supplement.cpp b/tizen/src/display/qt5_supplement.cpp index 8594d0812f..22fb31641e 100644 --- a/tizen/src/display/qt5_supplement.cpp +++ b/tizen/src/display/qt5_supplement.cpp @@ -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(); } diff --git a/tizen/src/ui/mainwindow.cpp b/tizen/src/ui/mainwindow.cpp index 4ee0f7472c..74531f7839 100644 --- a/tizen/src/ui/mainwindow.cpp +++ b/tizen/src/ui/mainwindow.cpp @@ -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"); diff --git a/tizen/src/ui/mainwindow.h b/tizen/src/ui/mainwindow.h index 74b5e37e5c..b02c5d3d53 100644 --- a/tizen/src/ui/mainwindow.h +++ b/tizen/src/ui/mainwindow.h @@ -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; diff --git a/tizen/src/ui/skinview.cpp b/tizen/src/ui/skinview.cpp index 531cd35104..720e937fa5 100644 --- a/tizen/src/ui/skinview.cpp +++ b/tizen/src/ui/skinview.cpp @@ -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 */ diff --git a/tizen/src/ui/uiinformation.cpp b/tizen/src/ui/uiinformation.cpp index 431a7e5b28..10fdb85668 100644 --- a/tizen/src/ui/uiinformation.cpp +++ b/tizen/src/ui/uiinformation.cpp @@ -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() diff --git a/tizen/src/ui/uiinformation.h b/tizen/src/ui/uiinformation.h index 9c88a2e5c7..5eb7d1db55 100644 --- a/tizen/src/ui/uiinformation.h +++ b/tizen/src/ui/uiinformation.h @@ -55,7 +55,9 @@ public: UIState uiState; /* runtime information */ MainForm *getMainForm(); /* current */ - QSize getMainFormSize(); /* current */ + ControllerForm *getConForm(); + QSize getMainSize(); + QRegion getMainRegion(); }; #endif // UIINFORMATION_H diff --git a/tizen/src/ui/uistate.cpp b/tizen/src/ui/uistate.cpp index 7f6c07cb88..5cde385af0 100644 --- a/tizen/src/ui/uistate.cpp +++ b/tizen/src/ui/uistate.cpp @@ -32,6 +32,8 @@ UIState::UIState() : mainFormAngle(0), mainFormScale(100) { + conState.conFormIndex = 0; + conState.dockingCon = NULL; conState.floatingCon = NULL; } diff --git a/tizen/src/ui/uistate.h b/tizen/src/ui/uistate.h index 30579ee23e..a35edb09d9 100644 --- a/tizen/src/ui/uistate.h +++ b/tizen/src/ui/uistate.h @@ -38,6 +38,11 @@ class ControllerState { public: + inline int getConFormIndex() { + return conFormIndex; + } + + int conFormIndex; DockingController *dockingCon; FloatingController *floatingCon; };