v2.0.0
Loading...
Searching...
No Matches
quickcontrolview.cpp
Go to the documentation of this file.
1//=============================================================================================================
16
17//=============================================================================================================
18// INCLUDES
19//=============================================================================================================
20
21#include "ui_quickcontrolview.h"
22
23#include "quickcontrolview.h"
24
25//=============================================================================================================
26// QT INCLUDES
27//=============================================================================================================
28
29#include <QGroupBox>
30#include <QTabWidget>
31#include <QSettings>
32#include <QApplication>
33#include <QScreen>
34#include <QDebug>
35
36//=============================================================================================================
37// USED NAMESPACES
38//=============================================================================================================
39
40using namespace DISPLIB;
41
42//=============================================================================================================
43// DEFINE MEMBER METHODS
44//=============================================================================================================
45
46QuickControlView::QuickControlView(const QString &sSettingsPath,
47 const QString& name,
48 Qt::WindowFlags flags,
49 QWidget *parent,
50 bool bDraggable)
51: DraggableFramelessWidget(parent, flags, false, bDraggable, true)
52, m_sName(name)
53, m_pUi(new Ui::QuickControlViewWidget)
54{
55 m_sSettingsPath = sSettingsPath;
56 m_pUi->setupUi(this);
57 m_pUi->m_pTabWidget->setTabBarAutoHide(true);
58 m_pUi->m_pTabWidget->setMovable(true);
59 m_pUi->m_pTabWidget->setTabPosition(QTabWidget::West);
60 this->setWindowTitle("Quick Control");
61
62 if(!(windowFlags() & Qt::CustomizeWindowHint)) {
63 m_pUi->m_pushButton_close->hide();
64 }
65
66 //Init opacity slider
67 connect(m_pUi->m_horizontalSlider_opacity, &QSlider::valueChanged,
69
70 //Init and connect close button
71 connect(m_pUi->m_pushButton_close, static_cast<void (QPushButton::*)(bool)>(&QPushButton::clicked),
72 this, &QuickControlView::hide);
73
74 this->adjustSize();
75
77}
78
79//=============================================================================================================
80
82{
84
85 delete m_pUi;
86}
87
88//=============================================================================================================
89
91{
92 while(m_pUi->m_pTabWidget->count() != 0) {
93 QWidget* pTabWidget = m_pUi->m_pTabWidget->widget(m_pUi->m_pTabWidget->count()-1);
94 m_pUi->m_pTabWidget->removeTab(m_pUi->m_pTabWidget->count()-1);
95 delete pTabWidget;
96 }
97}
98
99//=============================================================================================================
100
101QVBoxLayout* QuickControlView::findTabWidgetLayout(const QString& sTabName)
102{
103 QVBoxLayout* pTabWidgetLayout = Q_NULLPTR;
104
105 if(QWidget* pTabWidget = m_pUi->m_pTabWidget->findChild<QWidget *>(sTabName + "TabWidget")) {
106 // Tab widget already exisits. Get the grid layout and return it.
107 pTabWidgetLayout = qobject_cast<QVBoxLayout *>(pTabWidget->layout());
108 } else {
109 // Tab widget does not exist yet. Create it and return grid lyout.
110 pTabWidget = new QWidget();
111 pTabWidget->setObjectName(sTabName + "TabWidget");
112 pTabWidgetLayout = new QVBoxLayout();
113 pTabWidgetLayout->setContentsMargins(4,2,4,4);
114 pTabWidget->setLayout(pTabWidgetLayout);
115 m_pUi->m_pTabWidget->insertTab(0,pTabWidget, sTabName);
116 }
117
118 return pTabWidgetLayout;
119}
120
121//=============================================================================================================
122
123void QuickControlView::addWidgets(const QList<QWidget*>& lWidgets,
124 const QString& sTabName,
125 bool bAddToEnd)
126{
127 for(int i = 0; i < lWidgets.size(); ++i) {
128 QString sObjectName = lWidgets.at(i)->objectName();
129
130 if(sObjectName.contains("widget_", Qt::CaseInsensitive)) {
131 this->addWidget(lWidgets.at(i), sTabName, bAddToEnd);
132 }
133
134 if(sObjectName.contains("group_", Qt::CaseInsensitive)) {
135 if(sObjectName.contains("group_tab_", Qt::CaseInsensitive)) {
136 sObjectName.remove("group_tab_");
137 QStringList sList = sObjectName.split("_");
138
139 if(sList.size() >= 2) {
140 this->addGroupBoxWithTabs(lWidgets.at(i), sList.at(0), sList.at(1), sTabName, bAddToEnd);
141 } else {
142 this->addGroupBoxWithTabs(lWidgets.at(i), "", sObjectName, sTabName, bAddToEnd);
143 }
144 } else {
145 sObjectName.remove("group_");
146 this->addGroupBox(lWidgets.at(i), sObjectName, sTabName, bAddToEnd);
147 }
148 }
149 }
150}
151
152//=============================================================================================================
153
154void QuickControlView::addWidget(QWidget* pWidget,
155 const QString& sTabName,
156 bool bAddToEnd)
157{
158 if(QVBoxLayout* pTabWidgetLayout = findTabWidgetLayout(sTabName)) {
159 int iPos = bAddToEnd ? -1 : 0;
160 pTabWidgetLayout->insertWidget(iPos,
161 pWidget,
162 0);
163 }
164}
165
166//=============================================================================================================
167
168void QuickControlView::addGroupBox(QWidget* pWidget,
169 const QString& sGroupBoxName,
170 const QString& sTabName,
171 bool bAddToEnd)
172{
173 if(QVBoxLayout* pTabWidgetLayout = findTabWidgetLayout(sTabName)) {
174 int iPos = bAddToEnd ? -1 : 0;
175 QGroupBox* pGroupBox = new QGroupBox(sGroupBoxName);
176 pGroupBox->setObjectName(sGroupBoxName);
177
178 QVBoxLayout *pVBox = new QVBoxLayout;
179
180 pVBox->setContentsMargins(0,0,0,0);
181 pVBox->addWidget(pWidget);
182 pGroupBox->setLayout(pVBox);
183
184 pTabWidgetLayout->insertWidget(iPos,
185 pGroupBox,
186 0);
187 }
188}
189
190//=============================================================================================================
191
193 const QString& sGroupBoxName,
194 const QString& sTabNameGroupBox,
195 const QString& sTabName,
196 bool bAddToEnd)
197{
198 if(QVBoxLayout* pTabWidgetLayout = findTabWidgetLayout(sTabName)) {
199 QGroupBox* pGroupBox = pTabWidgetLayout->parentWidget()->findChild<QGroupBox *>(sGroupBoxName);
200
201 if(!pGroupBox) {
202 int iPos = bAddToEnd ? -1 : 0;
203 pGroupBox = new QGroupBox(sGroupBoxName);
204 pGroupBox->setObjectName(sGroupBoxName);
205
206 pTabWidgetLayout->insertWidget(iPos,
207 pGroupBox,
208 0);
209
210 QVBoxLayout *pVBox = new QVBoxLayout;
211 QTabWidget* pTabWidget = new QTabWidget;
212 pTabWidget->setTabBarAutoHide(false);
213 pTabWidget->setMovable(true);
214 pTabWidget->setObjectName(sGroupBoxName + "TabWidget");
215
216 pTabWidget->addTab(pWidget, sTabNameGroupBox);
217 pVBox->setContentsMargins(4,2,4,4);
218 pVBox->addWidget(pTabWidget);
219 pGroupBox->setLayout(pVBox);
220 } else {
221 QTabWidget* pTabWidget = pGroupBox->findChild<QTabWidget *>(sGroupBoxName + "TabWidget");
222
223 if(pTabWidget) {
224 pTabWidget->addTab(pWidget, sTabNameGroupBox);
225 }
226 }
227 }
228}
229
230//=============================================================================================================
231
233{
234 m_pUi->m_horizontalSlider_opacity->setValue(opactiy);
235
236 onOpacityChange(opactiy);
237}
238
239//=============================================================================================================
240
242{
243 return m_pUi->m_horizontalSlider_opacity->value();
244}
245
246//=============================================================================================================
247
249{
250 m_pUi->m_pushButton_close->setVisible(bVisibility);
251 m_pUi->m_horizontalSlider_opacity->setVisible(bVisibility);
252 m_pUi->m_label_opacity->setVisible(bVisibility);
253}
254
255//=============================================================================================================
256
258{
259 if(m_sSettingsPath.isEmpty()) {
260 return;
261 }
262
263 QSettings settings("MNECPP");
264
265 settings.setValue(m_sSettingsPath + QString("/QuickControlView/ViewOpacity"), getOpacityValue());
266 settings.setValue(m_sSettingsPath + QString("/QuickControlView/ViewPos"), this->pos());
267}
268
269//=============================================================================================================
270
272{
273 if(m_sSettingsPath.isEmpty()) {
274 return;
275 }
276
277 QSettings settings("MNECPP");
278
279 setOpacityValue(settings.value(m_sSettingsPath + QString("/QuickControlView/ViewOpacity"), 100).toInt());
280
281 QPoint pos = settings.value(m_sSettingsPath + QString("/QuickControlView/ViewPos"), QPoint(100,100)).toPoint();
282
283 QRect screenRect = QApplication::primaryScreen()->geometry();
284 if(!screenRect.contains(pos) && QGuiApplication::screens().size() == 1) {
285 move(QPoint(100,100));
286 } else {
287 move(pos);
288 }
289}
290
291//=============================================================================================================
292
294{
295 if(value <= 0) {
296 this->setWindowOpacity(1);
297 } else {
298 this->setWindowOpacity(1/(100.0/value));
299 }
300}
Floating frameless container hosting the modular Quick-Control settings tabs.
2-D display widgets and visualisation helpers (charts, topography, colour maps).
DraggableFramelessWidget(QWidget *parent=0, Qt::WindowFlags flags=Qt::Window, bool bRoundEdges=false, bool bDraggable=true, bool bFrameless=true)
void addWidget(QWidget *pWidget, const QString &sTabName, bool bAddToEnd=false)
void addWidgets(const QList< QWidget * > &lWidgets, const QString &sTabName, bool bAddToEnd=false)
QuickControlView(const QString &sSettingsPath="", const QString &name="", Qt::WindowFlags flags=Qt::Window|Qt::WindowStaysOnTopHint, QWidget *parent=nullptr, bool bDraggable=true)
QVBoxLayout * findTabWidgetLayout(const QString &sTabName)
void addGroupBoxWithTabs(QWidget *pWidget, const QString &sGroupBoxName, const QString &sTabNameGroupBox, const QString &sTabName, bool bAddToEnd=false)
void onOpacityChange(qint32 value)
void setOpacityValue(int opactiy)
void addGroupBox(QWidget *pWidget, const QString &sGroupBoxName, const QString &sTabName, bool bAddToEnd=false)
void setVisiblityHideOpacityClose(bool bVisibility)