Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
tables_connection.h
Go to the documentation of this file.
1#pragma once
2
3// Qt libs:
4#include <QTableWidget>
5
6// our code libs:
8
9namespace data_tools {
10
11/// @brief Класс, упрощающий отображение классов gui в QTableWidget's
12class TablesConnection : public QObject {
13 public:
14 TablesConnection() = default;
15
16 void Setup(DataManager* manager, PlotArea* area);
17
18 /**
19 * @brief Устанавливает значения всех таблиц с информацией
20 * @param hills_info: QTableWidget с информацией о hills
21 * @param targets_info: QTableWidget с информацией о hills
22 * @param tr_circles_info: QTableWidget с информацией о hills
23 * @param tr_lines_info: QTableWidget с информацией о hills
24 */
25 void SetSettingsTables(QTableWidget* targets_info, QTableWidget* hills_info,
26 QTableWidget* tr_circles_info,
27 QTableWidget* tr_lines_info) {
28 targets_table_.reset(targets_info);
29 hills_table_.reset(hills_info);
30 tr_circles_table_.reset(tr_circles_info);
31 tr_lines_table_.reset(tr_lines_info);
33 }
34
35 /**
36 * @brief Устанавливает значение всех кнопок для удаления объектов
37 * @param targets_remove_button
38 * @param hills_remove_button
39 * @param tr_circles_remove_button
40 * @param tr_lines_remove_button
41 */
42 void SetRemoveButtons(QPushButton* targets_remove_button,
43 QPushButton* hills_remove_button,
44 QPushButton* tr_circles_remove_button,
45 QPushButton* tr_lines_remove_button) {
46 targets_remove_button_.reset(targets_remove_button);
47 hills_remove_button_.reset(hills_remove_button);
48 tr_circles_remove_button_.reset(tr_circles_remove_button);
49 tr_lines_remove_button_.reset(tr_lines_remove_button);
51 }
52
53 /// @brief Обновляет данные в таблицах всех объектов
54 void UpdateTables();
55
56 /**
57 * @brief Обновляет значения таблицы с определенным типом объекта
58 * @param obj_type: тип объекта
59 */
60 void UpdateTable(gui::ObjectType obj_type);
61
62 private slots:
63 void TargetsItemChanged(int row, int column);
64 void HillsItemChanged(int row, int column);
65 void TrappyCirclesItemChanged(int row, int column);
66 void TrappyLinesItemChanged(int row, int column);
67
68 void RemoveTargetItem();
69 void RemoveHillItem();
72
73 void EnableRemoveTargetButton(int row, int column) {
74 Q_UNUSED(row);
75 selected_column_ = column;
76 targets_remove_button_->setEnabled(true);
77 }
78
79 void EnableRemoveHillButton(int row, int column) {
80 Q_UNUSED(row);
81 selected_column_ = column;
82 hills_remove_button_->setEnabled(true);
83 }
84
85 void EnableRemoveTrappyCircleButton(int row, int column) {
86 Q_UNUSED(row);
87 selected_column_ = column;
88 tr_circles_remove_button_->setEnabled(true);
89 }
90
91 void EnableRemoveTrappyLineButton(int row, int column) {
92 Q_UNUSED(row);
93 selected_column_ = column;
94 tr_lines_remove_button_->setEnabled(true);
95 }
96
98 targets_remove_button_->setEnabled(false);
99 }
100
101 void DisableRemoveHillButton() { hills_remove_button_->setEnabled(false); }
102
104 tr_circles_remove_button_->setEnabled(false);
105 }
106
108 tr_lines_remove_button_->setEnabled(false);
109 }
110
111 private:
112 /**
113 * @brief Обновляет значения таблицы с Targets
114 * @param targets: вектор новых значений
115 */
116 void UpdateTable(const std::vector<gui::Target>& targets);
117
118 /**
119 * @brief Обновляет значения таблицы с Hills
120 * @param hills: вектор новых значений
121 */
122 void UpdateTable(const std::vector<gui::Hill>& hills);
123
124 /**
125 * @brief Обновляет значения таблицы с TrappyLines
126 * @param trappy_lines: вектор новых значений
127 */
128 void UpdateTable(const std::vector<gui::TrappyLine>& trappy_lines);
129
130 /**
131 * @brief Обновляет значения таблицы с TrappyCircles
132 * @param trappy_circles: вектор новых значений
133 */
134 void UpdateTable(const std::vector<gui::TrappyCircle>& trappy_circles);
135
136 int selected_column_{INT_MAX};
140
141 std::unique_ptr<QTableWidget> targets_table_{nullptr};
142 std::unique_ptr<QTableWidget> hills_table_{nullptr};
143 std::unique_ptr<QTableWidget> tr_circles_table_{nullptr};
144 std::unique_ptr<QTableWidget> tr_lines_table_{nullptr};
145
146 std::unique_ptr<QPushButton> targets_remove_button_{nullptr};
147 std::unique_ptr<QPushButton> hills_remove_button_{nullptr};
148 std::unique_ptr<QPushButton> tr_circles_remove_button_{nullptr};
149 std::unique_ptr<QPushButton> tr_lines_remove_button_{nullptr};
150
151 std::unique_ptr<DataManager> manager_;
152 std::unique_ptr<PlotArea> area_;
153};
154
155} // namespace data_tools
Класс, хранящий gui объекты и связывающий их с QCustomPlot.
Definition data_manager.h:9
Класс, упрощающий управление классами gui на QCustomPlot.
Definition plot_area.h:9
Класс, упрощающий отображение классов gui в QTableWidget's.
Definition tables_connection.h:12
std::unique_ptr< QPushButton > tr_lines_remove_button_
Definition tables_connection.h:149
void RemoveTrappyCircleItem()
Definition tables_connection.cpp:424
void RemoveTrappyLineItem()
Definition tables_connection.cpp:434
std::unique_ptr< QTableWidget > tr_circles_table_
Definition tables_connection.h:143
void EnableRemoveHillButton(int row, int column)
Definition tables_connection.h:79
std::unique_ptr< QPushButton > hills_remove_button_
Definition tables_connection.h:147
void TrappyLinesItemChanged(int row, int column)
Definition tables_connection.cpp:367
void DisableRemoveTargetButton()
Definition tables_connection.h:97
void EnableRemoveTargetButton(int row, int column)
Definition tables_connection.h:73
void DisableRemoveHillButton()
Definition tables_connection.h:101
std::unique_ptr< QPushButton > tr_circles_remove_button_
Definition tables_connection.h:148
void RemoveTargetItem()
Definition tables_connection.cpp:403
void DisableRemoveTrappyCircleButton()
Definition tables_connection.h:103
void SetSettingsTables(QTableWidget *targets_info, QTableWidget *hills_info, QTableWidget *tr_circles_info, QTableWidget *tr_lines_info)
Устанавливает значения всех таблиц с информацией
Definition tables_connection.h:25
void UpdateTable(gui::ObjectType obj_type)
Обновляет значения таблицы с определенным типом объекта
Definition tables_connection.cpp:232
std::unique_ptr< QPushButton > targets_remove_button_
Definition tables_connection.h:146
std::unique_ptr< QTableWidget > tr_lines_table_
Definition tables_connection.h:144
std::unique_ptr< DataManager > manager_
Definition tables_connection.h:151
std::unique_ptr< QTableWidget > hills_table_
Definition tables_connection.h:142
int selected_column_
Definition tables_connection.h:136
void DisableTablesConnections()
Definition tables_connection.cpp:460
void SetRemoveButtons(QPushButton *targets_remove_button, QPushButton *hills_remove_button, QPushButton *tr_circles_remove_button, QPushButton *tr_lines_remove_button)
Устанавливает значение всех кнопок для удаления объектов
Definition tables_connection.h:42
std::unique_ptr< QTableWidget > targets_table_
Definition tables_connection.h:141
void EnableRemoveTrappyCircleButton(int row, int column)
Definition tables_connection.h:85
void UpdateTablesConnections()
Definition tables_connection.cpp:446
void HillsItemChanged(int row, int column)
Definition tables_connection.cpp:294
void UpdateRemoveButtonConnections()
Definition tables_connection.cpp:474
void EnableRemoveTrappyLineButton(int row, int column)
Definition tables_connection.h:91
void UpdateTables()
Обновляет данные в таблицах всех объектов
Definition tables_connection.cpp:252
void TrappyCirclesItemChanged(int row, int column)
Definition tables_connection.cpp:337
std::unique_ptr< PlotArea > area_
Definition tables_connection.h:152
void TargetsItemChanged(int row, int column)
Definition tables_connection.cpp:265
void Setup(DataManager *manager, PlotArea *area)
Definition tables_connection.cpp:6
void DisableRemoveTrappyLineButton()
Definition tables_connection.h:107
void RemoveHillItem()
Definition tables_connection.cpp:414
Definition data_manager.cpp:4
ObjectType
Типы объектов по категориям
Definition base.h:21