Don't look up pid/tid on YAGL_LOG_FUNC_SET
[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     QSize size = win->getUiInfo()->getMainSize();
87
88     // header bar
89     scene()->addRect(0, 0, size.width(), HEADER_BAR_HEIGHT,
90                     QPen(Qt::NoPen), QBrush(win->getUiInfo()->getVMColor()));
91     // header
92     QBrush brush(QColor(244, 244, 244));
93     scene()->addRect(0, HEADER_BAR_HEIGHT, size.width(), HEADER_HEIGHT, QPen(Qt::NoPen), brush);
94
95     if (BORDER_SIZE > 0) {
96         float osize = OUT_LINE_SIZE / 2;
97         float isize = INNER_LINE_SIZE / 2;
98         float bsize = (BORDER_SIZE - INNER_LINE_SIZE - OUT_LINE_SIZE) / 2;
99
100         // out line
101         if (osize > 0) {
102             QPen outPen(QColor(153, 153, 153), OUT_LINE_SIZE, Qt::SolidLine);
103             // left
104             scene()->addLine(osize, HEADER_BAR_HEIGHT + osize, osize, size.height(), outPen);
105             // bottom
106             scene()->addLine(osize, size.height() - osize, size.width() - osize, size.height() - osize, outPen);
107             // right
108             scene()->addLine(size.width() - osize, HEADER_BAR_HEIGHT + osize, size.width() - osize, size.height(), outPen);
109         }
110
111         // border line
112         if (bsize > 0) {
113             QPen borderPen(QColor(244, 244, 244), BORDER_SIZE - INNER_LINE_SIZE - OUT_LINE_SIZE, Qt::SolidLine);
114             float offset = OUT_LINE_SIZE + bsize;
115             // left
116             scene()->addLine(offset, HEADER_HEIGHT + bsize, offset, size.height() - offset, borderPen);
117             // bottom
118             scene()->addLine(offset, size.height() - offset, size.width() - offset, size.height() - offset, borderPen);
119             // right
120             scene()->addLine(size.width() - offset, HEADER_HEIGHT + bsize, size.width() - offset, size.height() - offset, borderPen);
121         }
122         // inner line
123         if (isize > 0) {
124             QPen innerPen(QColor(153, 153, 153), INNER_LINE_SIZE, Qt::SolidLine);
125             // top
126             scene()->addLine(BORDER_SIZE - isize, HEADER_HEIGHT - isize,
127                     size.width() - BORDER_SIZE + isize, HEADER_HEIGHT - isize, innerPen);
128             // left
129             scene()->addLine(BORDER_SIZE - isize, HEADER_HEIGHT - isize,
130                     BORDER_SIZE - isize, size.height() - BORDER_SIZE + isize, innerPen);
131             // bottom
132             scene()->addLine(BORDER_SIZE - isize, size.height() - BORDER_SIZE + isize,
133                     size.width() - BORDER_SIZE, size.height() - BORDER_SIZE + isize, innerPen);
134             // right
135             scene()->addLine(size.width() - BORDER_SIZE + isize, HEADER_HEIGHT - isize,
136                     size.width() - BORDER_SIZE + isize, size.height() - BORDER_SIZE + isize, innerPen);
137         }
138     }
139
140     QGraphicsTextItem *title = new QGraphicsTextItem(win->getUiInfo()->getVmName());
141     title->setDefaultTextColor(QColor(88, 88, 88));
142     scene()->addItem(title);
143     QRectF rect = title->boundingRect();
144     int y = (HEADER_HEIGHT - HEADER_BAR_HEIGHT - rect.height()) / 2;
145     title->setPos(BORDER_SIZE + 5, HEADER_BAR_HEIGHT + y);
146 }
147
148 QSize GeneralSkinView::getMainSize()
149 {
150     QSize size = win->getUiInfo()->getMainForm()->
151             skinImg[LayoutForm::normal].size() * win->getUiInfo()->getUiState()->getScaleFactor();
152
153     size.setWidth(size.width() + BORDER_SIZE * 2);
154     size.setHeight(size.height() + HEADER_HEIGHT + BORDER_SIZE);
155
156     return size;
157 }
158
159 QRegion GeneralSkinView::getMainRegion()
160 {
161     QImage *mainImage = &(win->getUiInfo()->getMainForm()->skinImg[LayoutForm::normal]);
162     QImage regionImage = mainImage->scaled(
163             mainImage->width() * win->getUiInfo()->getUiState()->getScaleFactor() + BORDER_SIZE * 2,
164             mainImage->height() * win->getUiInfo()->getUiState()->getScaleFactor()
165                                 + HEADER_HEIGHT + BORDER_SIZE).createAlphaMask();
166
167     return QRegion(QBitmap::fromImage(regionImage));
168 }