// mainwindow->move(100, 100); // TODO: MRU
mainwindow->show();
- mainwindow->openController(getControlIndex(), false);
+ mainwindow->openController(getControlIndex(), true);
mainwindow->startSwapper();
}
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();
{
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)
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");
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;
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 */
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()
UIState uiState; /* runtime information */
MainForm *getMainForm(); /* current */
- QSize getMainFormSize(); /* current */
+ ControllerForm *getConForm();
+ QSize getMainSize();
+ QRegion getMainRegion();
};
#endif // UIINFORMATION_H
UIState::UIState() :
mainFormAngle(0), mainFormScale(100)
{
+ conState.conFormIndex = 0;
+ conState.dockingCon = NULL;
conState.floatingCon = NULL;
}
class ControllerState
{
public:
+ inline int getConFormIndex() {
+ return conFormIndex;
+ }
+
+ int conFormIndex;
DockingController *dockingCon;
FloatingController *floatingCon;
};