forked from organicmaps/organicmaps
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmwms_borders_selection.cpp
117 lines (84 loc) · 3 KB
/
mwms_borders_selection.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
#include "qt/mwms_borders_selection.hpp"
#include "base/assert.hpp"
#include <QtWidgets/QDialogButtonBox>
#include <QtWidgets/QRadioButton>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QSplitter>
namespace qt
{
MwmsBordersSelection::MwmsBordersSelection(QWidget * parent)
: QDialog(parent)
{
setWindowTitle("Mwms borders selection settings");
auto * grid = new QGridLayout;
grid->addWidget(CreateSourceChoosingGroup(), 0, 0);
grid->addWidget(CreateViewTypeGroup(), 1, 0);
grid->addWidget(CreateButtonBoxGroup(), 2, 0);
setLayout(grid);
}
QGroupBox * MwmsBordersSelection::CreateButtonBoxGroup()
{
auto * groupBox = new QGroupBox();
auto * buttonBox =
new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
auto * vbox = new QVBoxLayout;
vbox->addWidget(buttonBox);
groupBox->setLayout(vbox);
groupBox->setFlat(true);
QObject::connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
QObject::connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
return groupBox;
}
SelectionMode MwmsBordersSelection::ShowModal()
{
if (exec() != QDialog::Accepted)
return SelectionMode::Cancelled;
if (m_radioBordersFromData->isChecked())
{
if (m_radioJustBorders->isChecked())
return SelectionMode::MwmsBordersByPolyFiles;
if (m_radioWithPoints->isChecked())
return SelectionMode::MwmsBordersWithVerticesByPolyFiles;
if (m_radioBoundingBox->isChecked())
return SelectionMode::BoundingBoxByPolyFiles;
UNREACHABLE();
}
if (m_radioBordersFromPackedPolygon->isChecked())
{
if (m_radioJustBorders->isChecked())
return SelectionMode::MwmsBordersByPackedPolygon;
if (m_radioWithPoints->isChecked())
return SelectionMode::MwmsBordersWithVerticesByPackedPolygon;
if (m_radioBoundingBox->isChecked())
return SelectionMode::BoundingBoxByPackedPolygon;
UNREACHABLE();
}
UNREACHABLE();
}
QGroupBox * MwmsBordersSelection::CreateSourceChoosingGroup()
{
auto * groupBox = new QGroupBox();
m_radioBordersFromPackedPolygon = new QRadioButton(tr("Get borders from packed_polygon.bin"));
m_radioBordersFromData = new QRadioButton(tr("Get borders from *.poly files"));
m_radioBordersFromPackedPolygon->setChecked(true);
auto * vbox = new QVBoxLayout;
vbox->addWidget(m_radioBordersFromPackedPolygon);
vbox->addWidget(m_radioBordersFromData);
groupBox->setLayout(vbox);
return groupBox;
}
QGroupBox * MwmsBordersSelection::CreateViewTypeGroup()
{
auto * groupBox = new QGroupBox();
m_radioWithPoints = new QRadioButton(tr("Show borders with vertices"));
m_radioJustBorders = new QRadioButton(tr("Show just borders"));
m_radioBoundingBox = new QRadioButton(tr("Show bounding box"));
m_radioWithPoints->setChecked(true);
auto * vbox = new QVBoxLayout;
vbox->addWidget(m_radioWithPoints);
vbox->addWidget(m_radioJustBorders);
vbox->addWidget(m_radioBoundingBox);
groupBox->setLayout(vbox);
return groupBox;
}
} // namespace qt