From d63dc25b8a20180f1640314cc5f14092cd687294 Mon Sep 17 00:00:00 2001 From: GiWoong Kim Date: Thu, 7 Aug 2014 19:09:33 +0900 Subject: [PATCH] menu: controller can connected to the menu action Change-Id: Idd67931bb1bc410424a0f56523f83750ff196386 Signed-off-by: GiWoong Kim --- tizen/src/ui/controllerwidget.cpp | 14 ++++++++++++-- tizen/src/ui/controllerwidget.h | 4 +++- tizen/src/ui/mainwindow.cpp | 17 +++++++---------- tizen/src/ui/mainwindow.h | 4 +--- tizen/src/ui/menu/aboutdialog.h | 1 + tizen/src/ui/menu/contextmenu.cpp | 25 ++++++++++++++++++------- tizen/src/ui/menu/contextmenu.h | 12 ++++++++++-- tizen/src/ui/uistate.cpp | 1 + tizen/src/ui/uistate.h | 5 ++++- 9 files changed, 57 insertions(+), 26 deletions(-) diff --git a/tizen/src/ui/controllerwidget.cpp b/tizen/src/ui/controllerwidget.cpp index b60cddb90e..f3b3867b54 100644 --- a/tizen/src/ui/controllerwidget.cpp +++ b/tizen/src/ui/controllerwidget.cpp @@ -1,11 +1,13 @@ #include #include "controllerwidget.h" +#include "mainwindow.h" -ControllerWidget::ControllerWidget(ControllerForm *conForm, QWidget *parent) : - QDialog(parent) +ControllerWidget::ControllerWidget(ControllerForm *conForm, + QAction *menu, QWidget *parent) : QDialog(parent) { this->conForm = conForm; + this->menu = menu; setStyleSheet("border-style: none"); setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); @@ -26,9 +28,17 @@ ControllerWidget::ControllerWidget(ControllerForm *conForm, QWidget *parent) : void ControllerWidget::showEvent(QShowEvent *event) { + menu->setChecked(true); setRegion(conForm->conImg[ControllerForm::normal]); } +void ControllerWidget::closeEvent(QCloseEvent *event) { + menu->setChecked(false); + + MainWindow *win = ((MainWindow *)this->parent()); + win->getUIState()->activatedCon = NULL; +} + void ControllerWidget::setRegion(QImage baseImage) { //qDebug("set region"); diff --git a/tizen/src/ui/controllerwidget.h b/tizen/src/ui/controllerwidget.h index 36b5a29b44..fb8a006551 100644 --- a/tizen/src/ui/controllerwidget.h +++ b/tizen/src/ui/controllerwidget.h @@ -11,17 +11,19 @@ class ControllerWidget : public QDialog Q_OBJECT public: - explicit ControllerWidget(ControllerForm *conForm, QWidget *parent = 0); + explicit ControllerWidget(ControllerForm *conForm, QAction *menu, QWidget *parent = 0); ~ControllerWidget(); protected: void showEvent(QShowEvent *event); + void closeEvent(QCloseEvent *event); void setRegion(QImage baseImage); private: SkinControllerView *conView; ControllerForm *conForm; + QAction *menu; }; #endif // CONTROLLERWIDGET_H diff --git a/tizen/src/ui/mainwindow.cpp b/tizen/src/ui/mainwindow.cpp index 6c7fff83ff..3a025ee5a3 100644 --- a/tizen/src/ui/mainwindow.cpp +++ b/tizen/src/ui/mainwindow.cpp @@ -1,5 +1,3 @@ -#include - #include "mainwindow.h" #include "skinform.h" @@ -60,7 +58,6 @@ MainWindow::MainWindow(UIInformation *uiInfo, QWidget *parent) : skinView = NULL; display = NULL; conView = NULL; - con = NULL; /* windowing */ setWindowTitle("Emulator"); @@ -164,7 +161,7 @@ UIState *MainWindow::getUIState() ControllerWidget *MainWindow::getController() { - return con; + return getUIState()->activatedCon; } void MainWindow::openController(int index) @@ -179,20 +176,20 @@ void MainWindow::openController(int index) } ControllerForm *conForm = uiInfo->controllerList.at(index); - con = new ControllerWidget(conForm, this); + QAction *action = (QAction *)popupMenu->getControllerMapper()->mapping(index); + getUIState()->activatedCon = new ControllerWidget(conForm, action, this); QPoint globalPos = mapToGlobal(QPoint(0, 0)); - con->move(globalPos.x() + size().width(), globalPos.y()); - con->show(); + getUIState()->activatedCon->move(globalPos.x() + size().width(), globalPos.y()); + getUIState()->activatedCon->show(); } void MainWindow::closeController() { - if (con != NULL) { + if (getUIState()->activatedCon != NULL) { qDebug("close controller"); - con->close(); - con = NULL; + getUIState()->activatedCon->close(); } } diff --git a/tizen/src/ui/mainwindow.h b/tizen/src/ui/mainwindow.h index 71cda0c7b3..0aa90a15d3 100644 --- a/tizen/src/ui/mainwindow.h +++ b/tizen/src/ui/mainwindow.h @@ -64,10 +64,10 @@ public slots: protected: void resizeEvent(QResizeEvent *event); + void closeEvent(QCloseEvent *); void updateSkin(); void setRegion(QImage baseImage); - void closeEvent(QCloseEvent *); QLabel *label; private: @@ -78,8 +78,6 @@ private: SkinControllerView *conView; QThread *swapperThread; DisplaySwapper *swapper; - - ControllerWidget *con; }; #endif // MAINWINDOW_H diff --git a/tizen/src/ui/menu/aboutdialog.h b/tizen/src/ui/menu/aboutdialog.h index 36a3e5affd..57e314f9a6 100644 --- a/tizen/src/ui/menu/aboutdialog.h +++ b/tizen/src/ui/menu/aboutdialog.h @@ -6,6 +6,7 @@ class AboutDialog : public QDialog { Q_OBJECT + public: explicit AboutDialog(QWidget *parent = 0); ~AboutDialog(); diff --git a/tizen/src/ui/menu/contextmenu.cpp b/tizen/src/ui/menu/contextmenu.cpp index 312b32cd3f..890e7c0503 100644 --- a/tizen/src/ui/menu/contextmenu.cpp +++ b/tizen/src/ui/menu/contextmenu.cpp @@ -25,7 +25,7 @@ ContextMenu::ContextMenu(QWidget *parent) : /* = Rotate menu = */ QMenu *rotateMenu = addMenu(QIcon(QPixmap(":/icons/rotate.png")), "Rotate"); QActionGroup *rotateGroup = new QActionGroup(this); - QSignalMapper *rotateMapper = new QSignalMapper(this); + rotateMapper = new QSignalMapper(this); connect(rotateMapper, SIGNAL(mapped(int)), this, SLOT(slotRotate(int))); action = rotateMenu->addAction("Portrait"); @@ -59,13 +59,12 @@ ContextMenu::ContextMenu(QWidget *parent) : /* = Scale menu = */ QMenu *scaleMenu = addMenu(QIcon(QPixmap(":/icons/scale.png")), "Scale"); QActionGroup *scaleGroup = new QActionGroup(this); - QSignalMapper *scaleMapper = new QSignalMapper(this); + scaleMapper = new QSignalMapper(this); connect(scaleMapper, SIGNAL(mapped(int)), this, SLOT(slotScale(int))); action = scaleMenu->addAction("1x"); action->setActionGroup(scaleGroup); action->setCheckable(true); - //action->setChecked(true); /* default */ scaleMapper->setMapping(action, 100); connect(action, SIGNAL(triggered()), scaleMapper, SLOT(map())); @@ -100,7 +99,7 @@ ContextMenu::ContextMenu(QWidget *parent) : if (win->uiInfo->controllerList.isEmpty() == false) { controllerMenu = addMenu("Controller"); QActionGroup *controllerGroup = new QActionGroup(this); - QSignalMapper *controllerMapper = new QSignalMapper(this); + controllerMapper = new QSignalMapper(this); connect(controllerMapper, SIGNAL(mapped(int)), this, SLOT(slotController(int))); for (int i = 0; i < win->uiInfo->controllerList.count(); i++) { @@ -110,9 +109,6 @@ ContextMenu::ContextMenu(QWidget *parent) : controllerMapper->setMapping(action, i); connect(action, SIGNAL(triggered()), controllerMapper, SLOT(map())); } - - action = (QAction *)controllerMapper->mapping(0); - action->setChecked(true); } /* = Advanced menu = */ @@ -365,6 +361,21 @@ void ContextMenu::slotClose() this->longPressTimer->start(); } +QSignalMapper *ContextMenu::getRotateMapper() +{ + return rotateMapper; +} + +QSignalMapper *ContextMenu::getScaleMapper() +{ + return scaleMapper; +} + +QSignalMapper *ContextMenu::getControllerMapper() +{ + return controllerMapper; +} + ContextMenu::~ContextMenu() { qDebug("destroy menu"); diff --git a/tizen/src/ui/menu/contextmenu.h b/tizen/src/ui/menu/contextmenu.h index 0bfeeab62b..0034d451a3 100644 --- a/tizen/src/ui/menu/contextmenu.h +++ b/tizen/src/ui/menu/contextmenu.h @@ -1,8 +1,8 @@ #ifndef CONTEXTMENU_H #define CONTEXTMENU_H -#include -#include +#include + #include "detailedinfodialog.h" #include "aboutdialog.h" @@ -22,6 +22,10 @@ public: explicit ContextMenu(QWidget *parent = 0); ~ContextMenu(); + QSignalMapper *getRotateMapper(); + QSignalMapper *getScaleMapper(); + QSignalMapper *getControllerMapper(); + signals: public slots: @@ -41,5 +45,9 @@ private: QTimer *longPressTimer; DetailedInfoDialog *infoDialog; AboutDialog *aboutDialog; + + QSignalMapper *rotateMapper; + QSignalMapper *scaleMapper; + QSignalMapper *controllerMapper; }; #endif // CONTEXTMENU_H diff --git a/tizen/src/ui/uistate.cpp b/tizen/src/ui/uistate.cpp index 0928bae8ab..e187b5b793 100644 --- a/tizen/src/ui/uistate.cpp +++ b/tizen/src/ui/uistate.cpp @@ -3,6 +3,7 @@ UIState::UIState() : formAngle(0), formScale(100) { + activatedCon = NULL; } int UIState::getFormIndex(int angle) diff --git a/tizen/src/ui/uistate.h b/tizen/src/ui/uistate.h index f556df5eb0..e466d51f14 100644 --- a/tizen/src/ui/uistate.h +++ b/tizen/src/ui/uistate.h @@ -3,6 +3,8 @@ #include +#include "controllerwidget.h" + class UIState { public: @@ -14,7 +16,8 @@ public: qreal getScaleFactor(); /* current */ int formAngle; - int formScale; + int formScale; /* percentage */ + ControllerWidget *activatedCon; }; #endif // UISTATE_H -- 2.34.1