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