From: GiWoong Kim Date: Wed, 1 Apr 2015 07:26:12 +0000 (+0900) Subject: ui: refactoring for window resizing X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.2~514 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba95bedc6743e97b205c11a6334d8c7f3de21760;p=sdk%2Femulator%2Fqemu.git ui: refactoring for window resizing do not call resize() or setGeometry() inside resizeEvent() fit a scene on a view in SkinView remove dependency between resolution and display size Change-Id: I869d73c13e27471ce12abdd8f2e41139d1c35794 Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/ui/controller/dockingconview.cpp b/tizen/src/ui/controller/dockingconview.cpp index 5ab54a55e6..467b24822f 100644 --- a/tizen/src/ui/controller/dockingconview.cpp +++ b/tizen/src/ui/controller/dockingconview.cpp @@ -86,6 +86,8 @@ void DockingConView::resizeEvent(QResizeEvent *event) Q_UNUSED(event) /* do nothing */ + + QGraphicsView::resizeEvent(event); } void DockingConView::mousePressEvent(QMouseEvent *event) diff --git a/tizen/src/ui/controller/floatingconview.cpp b/tizen/src/ui/controller/floatingconview.cpp index 28bb576d6b..0033845593 100644 --- a/tizen/src/ui/controller/floatingconview.cpp +++ b/tizen/src/ui/controller/floatingconview.cpp @@ -85,9 +85,11 @@ void FloatingConView::createItems(ControllerForm *conForm) void FloatingConView::resizeEvent(QResizeEvent *event) { - //qDebug("resize con view"); - Q_UNUSED(event) + + /* do nothing */ + + QGraphicsView::resizeEvent(event); } int FloatingConView::isDockable(QWidget *object, QWidget *subject) diff --git a/tizen/src/ui/displaybase.cpp b/tizen/src/ui/displaybase.cpp index 782b1c0ae7..69a0b5c52e 100644 --- a/tizen/src/ui/displaybase.cpp +++ b/tizen/src/ui/displaybase.cpp @@ -35,44 +35,36 @@ uint32_t qt5_window_width = 0; uint32_t qt5_window_height = 0; int qt5_window_angle = 0; -DisplayBase::DisplayBase(QSize resolution, QWidget *w) - : resolution(resolution), widget(w), isDragging(false) +DisplayBase::DisplayBase(QRect rect, int angle, qreal scaleFactor, + QWidget *w) : widget(w) { - /* initialize */ - // TODO: compare display region with resolution + this->rect = rect; + this->rotateAngle = angle; + this->scaleFactor = scaleFactor; + this->isDragging = false; - MainWindow *win = ((MainWindow *)w->parent()->parent()); - rotateAngle = win->uiInfo->getMainFormDisplayType()->getAngle(); - scaleFactor = win->getUIState()->getScaleFactor(); + updateGeometry(); } -DisplayBase::~DisplayBase() -{ - qDebug("destory display"); -} - -void DisplayBase::rotate(int angle) +void DisplayBase::rotate(QRect rect, int angle) { qDebug("display rotate : %d", angle); - rotateAngle = angle; + this->rect = rect; + qt5_window_angle = rotateAngle = angle; - qt5_window_angle = angle; - - /* adjustSize() doesn't work */ - widget->resize(0, 0); + updateGeometry(); widget->repaint(); } -void DisplayBase::scale(int scale) +void DisplayBase::scale(qreal scaleFactor) { - qDebug("display scale : %d", scale); + qDebug() << "display scale factor :" << scaleFactor; - scaleFactor = ((qreal)scale) / 100; + this->scaleFactor = scaleFactor; - /* adjustSize() doesn't work */ - widget->resize(0, 0); + updateGeometry(); widget->repaint(); } @@ -82,25 +74,23 @@ void DisplayBase::update() qt5_graphic_hw_invalidate(); } +void DisplayBase::updateGeometry() +{ + widget->setGeometry(rect.x() * scaleFactor, + rect.y() * scaleFactor, + rect.width() * scaleFactor, + rect.height() * scaleFactor); +} + void DisplayBase::handlePaint(QPaintEvent *event) { + /* do nothing */ } void DisplayBase::handleResize(QResizeEvent *event) { qDebug("resize display"); - MainWindow *win = ((MainWindow *)widget->parent()->parent()); - MainForm *form = win->uiInfo->getMainForm(); - - const qreal sx = scaleFactor; - const qreal sy = scaleFactor; - - widget->setGeometry(form->displayType->getRect().x() * sx, - form->displayType->getRect().y() * sy, - form->displayType->getRect().width() * sx, - form->displayType->getRect().height() * sy); - qt5_window_width = widget->width(); qt5_window_height = widget->height(); @@ -169,14 +159,14 @@ void DisplayBase::sendTouchEvent(int eventType, int clientX, int clientY) switch(rotateAngle) { case 90: /* Reverse Landscape */ absX = yy; - absY = resolution.height() - xx; + absY = rect.height() - xx; break; case 180: /* Reverse Portrait */ - absX = resolution.width() - xx; - absY = resolution.height() - yy; + absX = rect.width() - xx; + absY = rect.height() - yy; break; case 270: /* Landscape */ - absX = resolution.width() - yy; + absX = rect.width() - yy; absY = xx; break; case 0: @@ -186,3 +176,8 @@ void DisplayBase::sendTouchEvent(int eventType, int clientX, int clientY) do_mouse_event(0, eventType, clientX, clientY, absX, absY, 0); } + +DisplayBase::~DisplayBase() +{ + qDebug("destroy display"); +} diff --git a/tizen/src/ui/displaybase.h b/tizen/src/ui/displaybase.h index 2ca4ec872f..ed1ccfdcad 100644 --- a/tizen/src/ui/displaybase.h +++ b/tizen/src/ui/displaybase.h @@ -45,17 +45,15 @@ enum { class DisplayBase { public: - void rotate(int angle); - void scale(int scale); + void rotate(QRect rect, int angle); + void scale(qreal scaleFactor); void update(); + void updateGeometry(); protected: - DisplayBase(QSize resolution, QWidget *w); + DisplayBase(QRect rect, int angle, qreal scaleFactor, QWidget *w); virtual ~DisplayBase(); - void setRotate(int angle); - void setScale(int scale); - void handlePaint(QPaintEvent *event); void handleResize(QResizeEvent *event); @@ -66,8 +64,8 @@ protected: private: void sendTouchEvent(int eventType, int clientX, int clientY); - QSize resolution; QWidget *widget; + QRect rect; int rotateAngle; qreal scaleFactor; diff --git a/tizen/src/ui/displayglwidget.cpp b/tizen/src/ui/displayglwidget.cpp index 1198fe0b6f..50c2ba3ed4 100644 --- a/tizen/src/ui/displayglwidget.cpp +++ b/tizen/src/ui/displayglwidget.cpp @@ -28,13 +28,11 @@ * */ -#include - #include "displayglwidget.h" -DisplayGLWidget::DisplayGLWidget(QSize resolution, QGLContext *context, QWidget *parent) : - QGLWidget(context, parent), - DisplayBase(resolution, this) +DisplayGLWidget::DisplayGLWidget(QWidget *parent, + QGLContext *context, QRect rect, int angle, qreal scaleFactor) : + QGLWidget(context, parent), DisplayBase(rect, angle, scaleFactor, this) { setAutoBufferSwap(false); } @@ -83,4 +81,5 @@ void DisplayGLWidget::mouseMoveEvent(QMouseEvent *event) DisplayGLWidget::~DisplayGLWidget() { + /* do nothing */ } diff --git a/tizen/src/ui/displayglwidget.h b/tizen/src/ui/displayglwidget.h index 9a1b8d88b0..808bd70033 100644 --- a/tizen/src/ui/displayglwidget.h +++ b/tizen/src/ui/displayglwidget.h @@ -31,16 +31,18 @@ #ifndef DISPLAYGLWIDGET_H #define DISPLAYGLWIDGET_H -#include "displaybase.h" #include +#include "displaybase.h" + class DisplayGLWidget : public QGLWidget, public DisplayBase { Q_OBJECT public: - DisplayGLWidget(QSize resolution, QGLContext *context, QWidget *parent = 0); + DisplayGLWidget(QWidget *parent, + QGLContext *context, QRect rect, int angle, qreal scaleFactor); ~DisplayGLWidget(); protected: diff --git a/tizen/src/ui/displayswwidget.cpp b/tizen/src/ui/displayswwidget.cpp index 3cb3b2331a..e036fc7605 100644 --- a/tizen/src/ui/displayswwidget.cpp +++ b/tizen/src/ui/displayswwidget.cpp @@ -28,14 +28,13 @@ * */ -#include - #include "displayswwidget.h" -DisplaySWWidget::DisplaySWWidget(QSize resolution, QWidget *parent) : - QLabel(parent), - DisplayBase(resolution, this) +DisplaySWWidget::DisplaySWWidget(QWidget *parent, + QRect rect, int angle, qreal scaleFactor) : + QLabel(parent), DisplayBase(rect, angle, scaleFactor, this) { + /* do nothing */ } void DisplaySWWidget::paintEvent(QPaintEvent *event) @@ -67,4 +66,5 @@ void DisplaySWWidget::mouseMoveEvent(QMouseEvent *event) DisplaySWWidget::~DisplaySWWidget() { + /* do nothing */ } diff --git a/tizen/src/ui/displayswwidget.h b/tizen/src/ui/displayswwidget.h index 69454eb1e3..f8e99b4ce0 100644 --- a/tizen/src/ui/displayswwidget.h +++ b/tizen/src/ui/displayswwidget.h @@ -31,16 +31,18 @@ #ifndef DISPLAYSWWIDGET_H #define DISPLAYSWWIDGET_H -#include "displaybase.h" #include +#include "displaybase.h" + class DisplaySWWidget : public QLabel, public DisplayBase { Q_OBJECT public: - DisplaySWWidget(QSize resolution, QWidget *parent = 0); + DisplaySWWidget(QWidget *parent, + QRect rect, int angle, qreal scaleFactor); ~DisplaySWWidget(); protected: diff --git a/tizen/src/ui/mainwindow.cpp b/tizen/src/ui/mainwindow.cpp index 8a4ffd7f35..0d012d632d 100644 --- a/tizen/src/ui/mainwindow.cpp +++ b/tizen/src/ui/mainwindow.cpp @@ -120,13 +120,19 @@ MainWindow::MainWindow(UIInformation *uiInfo, QWidget *parent) */ context = new QGLContext(format); - display = new DisplayGLWidget(uiInfo->resolution, context, skinView); + display = new DisplayGLWidget(skinView, context, + uiInfo->getMainFormDisplayType()->getRect(), + uiInfo->getMainFormDisplayType()->getAngle(), + getUIState()->getScaleFactor()); context->setFormat(format); context->create(wrapperContext); } else { /* off-screen rendering */ - DisplaySWWidget *w = new DisplaySWWidget(uiInfo->resolution, skinView); + DisplaySWWidget *w = new DisplaySWWidget(skinView, + uiInfo->getMainFormDisplayType()->getRect(), + uiInfo->getMainFormDisplayType()->getAngle(), + getUIState()->getScaleFactor()); display = w; screenWidget = w; @@ -254,7 +260,8 @@ void MainWindow::openController(int index, int dockPos) /* update layout */ getUIState()->conState.conFormIndex = index; - adjustSize(); + + resize(uiInfo->getUiSize()); /* arrange */ if (dockPos == -1) { @@ -293,7 +300,7 @@ void MainWindow::closeController() getUIState()->conState.dockingCon = NULL; - adjustSize(); + resize(uiInfo->getUiSize()); } if (getFloatingCon() != NULL) { @@ -318,9 +325,9 @@ void MainWindow::resizeEvent(QResizeEvent *event) { qDebug("resize main window"); - resize(uiInfo->getUiSize()); - setMask(uiInfo->getUiRegion()); + + QWidget::resizeEvent(event); } /* override */ @@ -336,11 +343,13 @@ void MainWindow::switchForm(int index) qDebug("window switch : %d", index); getUIState()->mainFormIndex = index; - skinView->update(); - display->rotate(uiInfo->getMainFormDisplayType()->getAngle()); - adjustSize(); + display->rotate( + uiInfo->getMainFormDisplayType()->getRect(), + uiInfo->getMainFormDisplayType()->getAngle()); + + resize(uiInfo->getUiSize()); } void MainWindow::scaleForm(int scale) @@ -348,11 +357,11 @@ void MainWindow::scaleForm(int scale) qDebug("window scale : %d", scale); getUIState()->mainFormScale = scale; + skinView->update(); - skinView->adjustSize(); - display->scale(getUIState()->mainFormScale); + display->scale(getUIState()->getScaleFactor()); - adjustSize(); + resize(uiInfo->getUiSize()); } void MainWindow::capture(void) diff --git a/tizen/src/ui/resource/skins/mobile-general-3btn/layout.xml b/tizen/src/ui/resource/skins/mobile-general-3btn/layout.xml index 9ba5dd1904..d9add19078 100644 --- a/tizen/src/ui/resource/skins/mobile-general-3btn/layout.xml +++ b/tizen/src/ui/resource/skins/mobile-general-3btn/layout.xml @@ -47,6 +47,7 @@ + @@ -61,7 +62,6 @@ - Ctrl+F5 diff --git a/tizen/src/ui/resource/skins/wearable-general-1btn/layout.xml b/tizen/src/ui/resource/skins/wearable-general-1btn/layout.xml index 17ac355777..9d8d46a8a1 100644 --- a/tizen/src/ui/resource/skins/wearable-general-1btn/layout.xml +++ b/tizen/src/ui/resource/skins/wearable-general-1btn/layout.xml @@ -37,6 +37,7 @@ Ctrl+Num+9 + diff --git a/tizen/src/ui/skinview.cpp b/tizen/src/ui/skinview.cpp index fd3e4f333d..3a7a717e86 100644 --- a/tizen/src/ui/skinview.cpp +++ b/tizen/src/ui/skinview.cpp @@ -75,9 +75,11 @@ void SkinView::update() { scene()->clear(); - createItems(win->uiInfo->getMainForm()); + /* resizing */ + resize(win->uiInfo->getUiSize()); + scene()->setSceneRect(0, 0, size().width(), size().height()); - adjustSize(); + createItems(win->uiInfo->getMainForm()); } void SkinView::resizeEvent(QResizeEvent *event) @@ -86,18 +88,13 @@ void SkinView::resizeEvent(QResizeEvent *event) qDebug("resize skin view"); - /* geometry */ - const int width = win->uiInfo->getUiSize().width(); - const int height = win->uiInfo->getUiSize().height(); - setGeometry(0, 0, width, height); - /* scaling */ const qreal sx = win->getUIState()->getScaleFactor(); const qreal sy = win->getUIState()->getScaleFactor(); QTransform transform(sx, 0, 0, 0, sy, 0, 0, 0, 1); setTransform(transform); - //QGraphicsView::resizeEvent(event); + QGraphicsView::resizeEvent(event); } void SkinView::mousePressEvent(QMouseEvent *event)