#include <QtWidgets>
#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);
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");
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
-#include <QtWidgets>
-
#include "mainwindow.h"
#include "skinform.h"
skinView = NULL;
display = NULL;
conView = NULL;
- con = NULL;
/* windowing */
setWindowTitle("Emulator");
ControllerWidget *MainWindow::getController()
{
- return con;
+ return getUIState()->activatedCon;
}
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();
}
}
protected:
void resizeEvent(QResizeEvent *event);
+ void closeEvent(QCloseEvent *);
void updateSkin();
void setRegion(QImage baseImage);
- void closeEvent(QCloseEvent *);
QLabel *label;
private:
SkinControllerView *conView;
QThread *swapperThread;
DisplaySwapper *swapper;
-
- ControllerWidget *con;
};
#endif // MAINWINDOW_H
class AboutDialog : public QDialog
{
Q_OBJECT
+
public:
explicit AboutDialog(QWidget *parent = 0);
~AboutDialog();
/* = 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");
/* = 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()));
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++) {
controllerMapper->setMapping(action, i);
connect(action, SIGNAL(triggered()), controllerMapper, SLOT(map()));
}
-
- action = (QAction *)controllerMapper->mapping(0);
- action->setChecked(true);
}
/* = Advanced menu = */
this->longPressTimer->start();
}
+QSignalMapper *ContextMenu::getRotateMapper()
+{
+ return rotateMapper;
+}
+
+QSignalMapper *ContextMenu::getScaleMapper()
+{
+ return scaleMapper;
+}
+
+QSignalMapper *ContextMenu::getControllerMapper()
+{
+ return controllerMapper;
+}
+
ContextMenu::~ContextMenu()
{
qDebug("destroy menu");
#ifndef CONTEXTMENU_H
#define CONTEXTMENU_H
-#include <QMenu>
-#include <QTimer>
+#include <QtWidgets>
+
#include "detailedinfodialog.h"
#include "aboutdialog.h"
explicit ContextMenu(QWidget *parent = 0);
~ContextMenu();
+ QSignalMapper *getRotateMapper();
+ QSignalMapper *getScaleMapper();
+ QSignalMapper *getControllerMapper();
+
signals:
public slots:
QTimer *longPressTimer;
DetailedInfoDialog *infoDialog;
AboutDialog *aboutDialog;
+
+ QSignalMapper *rotateMapper;
+ QSignalMapper *scaleMapper;
+ QSignalMapper *controllerMapper;
};
#endif // CONTEXTMENU_H
UIState::UIState() :
formAngle(0), formScale(100)
{
+ activatedCon = NULL;
}
int UIState::getFormIndex(int angle)
#include <QtWidgets>
+#include "controllerwidget.h"
+
class UIState
{
public:
qreal getScaleFactor(); /* current */
int formAngle;
- int formScale;
+ int formScale; /* percentage */
+ ControllerWidget *activatedCon;
};
#endif // UISTATE_H