/
ui_container.cpp
116 lines (99 loc) · 1.93 KB
/
ui_container.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "ui_container.h"
ui_container::ui_container(ui_container *par) :
elements(),
ui_element(par)
{
}
ui_container::~ui_container()
{
}
void ui_container::addElement(ui_element *element)
{
elements.push_back(element);
}
void ui_container::mousePress(QMouseEvent *mouse)
{
for(int cou = elements.size() - 1; cou >=0; cou--)
{
auto i = elements[cou];
auto p = i->get_position();
QRect rect(p, i->size);
if(rect.contains(mouse->pos()))
{
for(int j = cou; j < elements.size() - 1; j++)
{
std::swap(elements[j], elements[j + 1]);
}
i->mousePress(mouse);
break;
}
}
}
void ui_container::mouseRelease(QMouseEvent *mouse)
{
for(ui_element *i : elements)
{
i->mouseRelease(mouse);
}
}
void ui_container::mouseDoubleClick(QMouseEvent *mouse)
{
for(ui_element *i : elements)
{
if(QRect(get_position(), size).contains(mouse->pos()))
{
i->mouseDoubleClick(mouse);
break;
}
}
}
void ui_container::mouseMove(QMouseEvent *mouse)
{
for(ui_element *i : elements)
{
if(QRect(i->get_position(), i->size).contains(mouse->pos()))
i->aimed = true;
else
i->aimed = false;
i->mouseMove(mouse);
}
}
void ui_container::render(QPainter &eng)
{
for(ui_element *i : elements)
{
i->render(eng);
}
}
void ui_container::update()
{
for(ui_element *i : elements)
{
i->update();
}
}
void ui_container::keyEvent(QKeyEvent *key)
{
Q_UNUSED(key);
}
ui_element::ui_element(ui_container *par) :
ui_parent(par),
QObject(par),
aimed(false)
{
if(par)
{
par->addElement(this);
}
}
ui_element::~ui_element()
{
}
QPoint ui_element::get_position()
{
if(ui_parent)
{
return ui_parent->loc + loc;
}
return loc;
}