-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrtable.cpp
executable file
·82 lines (69 loc) · 2.53 KB
/
rtable.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
#include "rtable.h"
#include "rmapobjectmovepolicy.h"
#include "rmapobjectresizepolicy.h"
#include "rmapobjecttreewidgetitem.h"
#include "rmapregistry.h"
#include <QPaintEvent>
#include <QPainter>
#include <QDebug>
//--------------------------------------------------------------------------------------
RTable::RTable(QWidget *parent) : RMapObject(parent)
{
setModel(new RTableModel);
}
//--------------------------------------------------------------------------------------
RTable::~RTable()
{
RMapRegistry::instance().addTableForDelete(model()->mapObjectID());
}
//--------------------------------------------------------------------------------------
RTable *RTable::clone() const
{
RTable *table = new RTable(parentWidget());
table->setModel(model()->clone());
table->setMovePolicy(movePolicy()->clone());
table->setResizePolicy(resizePolicy()->clone());
table->setGeometry(geometry());
table->setVisible(isVisible());
return table;
}
//--------------------------------------------------------------------------------------
RTableModel *RTable::model() const
{ return static_cast<RTableModel *>(RMapObject::model()); }
//--------------------------------------------------------------------------------------
void RTable::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
const QImage &image = model()->pictureFree();
QPen pen;
if (!image.isNull()) {
painter.drawImage(rect().center() - image.rect().center(), image);
}
if (hasFocusMapObject()) {
pen.setColor(Qt::blue);
pen.setWidth(3);
} else {
pen.setColor(Qt::gray);
pen.setWidth(1);
}
// рисуем прямоугольник вокруг столика
painter.setPen(pen);
painter.drawRect(rect().adjusted(0, 0, -1, -1));
// рисуем номер столика
pen.setColor(model()->numberFontColor());
painter.setPen(pen);
painter.setFont(model()->numberFont());
painter.drawText(rect(), QString().number(model()->number()), QTextOption(Qt::AlignCenter));
// рисуем текст на столике
pen.setColor(model()->textFontColor());
painter.setPen(pen);
painter.setFont(model()->textFont());
painter.drawText(rect(), model()->text(), QTextOption(Qt::AlignBottom | Qt::AlignHCenter));
}
//--------------------------------------------------------------------------------------
void RTable::resizeEvent(QResizeEvent *event)
{
movePolicy()->setMovePolygon(QPolygon(rect().adjusted(5, 5, -5, -5), true));
RMapObject::resizeEvent(event);
}