skin: apply new general skin
[sdk/emulator/qemu.git] / tizen / src / ui / generalskinview.cpp
1 /*
2  * Qt UI
3  *
4  * Copyright (C) 2017 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact:
7  * Jihye Kim <jihye424.kim@samsung.com>
8  * SeokYeon Hwang <syeon.hwang@samsung.com>
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23  * MA 02110-1301, USA.
24  *
25  * Contributors:
26  * - S-Core Co., Ltd
27  *
28  */
29
30 #include <QWidget>
31
32 #include "generalskinview.h"
33 #include "mainwindow.h"
34
35 GeneralSkinView::GeneralSkinView(QGraphicsScene *scene, QWidget *parent)
36     : MainView(scene, parent)
37 {
38 }
39
40 GeneralSkinView::~GeneralSkinView()
41 {
42     qDebug("destroy general skin view");
43 }
44
45 /* override */
46 void GeneralSkinView::resizeEvent(QResizeEvent *event)
47 {
48     qDebug() << "resize general skin view:" << size();
49     SkinView::resizeEvent(event);
50 }
51
52 /* override */
53 void GeneralSkinView::mousePressEvent(QMouseEvent *event)
54 {
55     SkinView::mousePressEvent(event);
56
57     if (event->button() == Qt::LeftButton) {
58         grabWindow(event->globalPos());
59     }
60 }
61
62 /* override */
63 void GeneralSkinView::mouseReleaseEvent(QMouseEvent *event)
64 {
65     SkinView::mouseReleaseEvent(event);
66
67     if (event->button() == Qt::LeftButton) {
68         releaseWindow();
69     }
70 }
71
72 /* override */
73 void GeneralSkinView::mouseMoveEvent(QMouseEvent *event)
74 {
75     SkinView::mouseMoveEvent(event);
76
77     if (isGrabWindow() == true) {
78         win->move(grabWinPos + (event->globalPos() - grabPos));
79     }
80 }
81
82 void GeneralSkinView::createItems()
83 {
84     qDebug() << "create items for general skin view";
85
86     QBrush backBrush(QColor(244, 244, 244));
87     QPen linePen(QColor(205, 205, 205), 1, Qt::SolidLine);
88     QSize size = win->getUiInfo()->getMainSize();
89     scene()->addRect(BORDER_SIZE, BORDER_SIZE, size.width() - BORDER_SIZE * 2, HEADER_HEIGHT, QPen(Qt::NoPen), backBrush);
90     scene()->addLine(BORDER_SIZE, HEADER_HEIGHT + BORDER_SIZE, size.width() - BORDER_SIZE, HEADER_HEIGHT + BORDER_SIZE, linePen);
91
92     if (BORDER_SIZE > 0) {
93         QPen boaderPen(QColor(0, 138, 248), BORDER_SIZE * 2, Qt::SolidLine);
94         scene()->addRect(0, 0, size.width(), size.height(), boaderPen);
95     }
96
97     QGraphicsTextItem *title = new QGraphicsTextItem(win->getUiInfo()->getVmName());
98     title->setDefaultTextColor(QColor(88, 88, 88));
99     scene()->addItem(title);
100     QRectF rect = title->boundingRect();
101     int y = (HEADER_HEIGHT - rect.height()) / 2;
102     title->setPos(BORDER_SIZE + 5, BORDER_SIZE + y);
103 }
104
105 QSize GeneralSkinView::getMainSize()
106 {
107     QSize size = win->getUiInfo()->getMainForm()->
108             skinImg[LayoutForm::normal].size() * win->getUiInfo()->getUiState()->getScaleFactor();
109
110     size.setWidth(size.width() + BORDER_SIZE * 2);
111     size.setHeight(size.height() + HEADER_HEIGHT + BORDER_SIZE * 2);
112
113     return size;
114 }
115
116 QRegion GeneralSkinView::getMainRegion()
117 {
118     QImage *mainImage = &(win->getUiInfo()->getMainForm()->skinImg[LayoutForm::normal]);
119     QImage regionImage = mainImage->scaled(
120             mainImage->width() * win->getUiInfo()->getUiState()->getScaleFactor() + BORDER_SIZE * 2,
121             mainImage->height() * win->getUiInfo()->getUiState()->getScaleFactor()
122                                 + HEADER_HEIGHT + BORDER_SIZE * 2).createAlphaMask();
123
124     return QRegion(QBitmap::fromImage(regionImage));
125 }