-
Notifications
You must be signed in to change notification settings - Fork 1
/
element.cpp
118 lines (101 loc) · 2.58 KB
/
element.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
117
118
#include "element.h"
#include "proxypainter.h"
#include <QPainterPath>
#include <QResizeEvent>
#include <QMimeData>
#include <QPainter>
#include <QLabel>
#include <QDebug>
#include <QTimer>
#include <QTime>
#include <QDrag>
LDA_BEGIN_NAMESPACE
Element::Element(int h, QWidget *parent, Qt::WindowFlags f) : QFrame(parent, f)
{
m_height = h;
setFixedHeight(m_height);
setMinimumHeight(m_height);
setMaximumHeight(m_height);
}
Element::~Element() {}
void Element::paintEvent(QPaintEvent *e)
{
QPainter *p = new QPainter(this);
QPainterPath path;
path.addRoundedRect(this->rect(), *rad, *rad);
p->setClipPath(path);
paint(new ProxyPainter(p, nullptr, true), e);
p->~QPainter();
}
void Element::resizeEvent(QResizeEvent *e)
{
QWidget::resizeEvent(e);
if (e->isAccepted() == true) {
int wi = this->width();
int he = this->height();
bool mustUpdate = false;
if (this->size().height() != m_height) {
he = m_height;
mustUpdate = true;
}
if (e->oldSize().width() -11 != e->size().width()) {
wi = e->size().width() -11;
mustUpdate = true;
}
if (mustUpdate == true) {
this->resize(wi, he);
}
}
}
void Element::dropEvent(QDropEvent *event)
{
QByteArray t = event->mimeData()->data("application/x-item");
event->accept();
}
void Element::dragEnterEvent(QDragEnterEvent *event)
{
event->accept();
}
void Element::dragLeaveEvent(QDragLeaveEvent *event)
{
event->accept();
}
void Element::paint(ProxyPainter *painter, const QPaintEvent *)
{
painter->fillRect(rect(), Qt::blue);
}
QSize Element::sizeHint() const
{
return QSize(40, m_height);
}
int Element::radius()
{
return *rad;
}
DerivedElement::DerivedElement(int s) : Element(s) {
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
}
DerivedElement::~DerivedElement()
{
this->Element::~Element();
}
void DerivedElement::paint(ProxyPainter *p, const QPaintEvent *event)
{
p->setRenderHints(QPainter::Antialiasing);
QLinearGradient gradient(0, 0, 0, this->height());
QPainterPath path;
path.addRoundedRect(rect(), radius(), radius());
gradient.setColorAt(0, QColor("#895bdc"));
gradient.setColorAt(1, QColor("#3F51B5"));
p->setBrush(gradient);
p->fillPath(path, gradient);
p->setPen(Qt::white);
QFont f = p->font();
f.setBold(true);
f.setPointSize(40);
p->setFont(f);
p->drawText(10, 60, QTime::currentTime().toString("hh:mm:ss"));
}
LDA_END_NAMESPACE