21#include "ui_quickcontrolview.h"
32#include <QApplication>
48 Qt::WindowFlags flags,
53, m_pUi(new Ui::QuickControlViewWidget)
55 m_sSettingsPath = sSettingsPath;
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");
62 if(!(windowFlags() & Qt::CustomizeWindowHint)) {
63 m_pUi->m_pushButton_close->hide();
67 connect(m_pUi->m_horizontalSlider_opacity, &QSlider::valueChanged,
71 connect(m_pUi->m_pushButton_close,
static_cast<void (QPushButton::*)(
bool)
>(&QPushButton::clicked),
72 this, &QuickControlView::hide);
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);
103 QVBoxLayout* pTabWidgetLayout = Q_NULLPTR;
105 if(QWidget* pTabWidget = m_pUi->m_pTabWidget->findChild<QWidget *>(sTabName +
"TabWidget")) {
107 pTabWidgetLayout = qobject_cast<QVBoxLayout *>(pTabWidget->layout());
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);
118 return pTabWidgetLayout;
124 const QString& sTabName,
127 for(
int i = 0; i < lWidgets.size(); ++i) {
128 QString sObjectName = lWidgets.at(i)->objectName();
130 if(sObjectName.contains(
"widget_", Qt::CaseInsensitive)) {
131 this->
addWidget(lWidgets.at(i), sTabName, bAddToEnd);
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(
"_");
139 if(sList.size() >= 2) {
145 sObjectName.remove(
"group_");
146 this->
addGroupBox(lWidgets.at(i), sObjectName, sTabName, bAddToEnd);
155 const QString& sTabName,
159 int iPos = bAddToEnd ? -1 : 0;
160 pTabWidgetLayout->insertWidget(iPos,
169 const QString& sGroupBoxName,
170 const QString& sTabName,
174 int iPos = bAddToEnd ? -1 : 0;
175 QGroupBox* pGroupBox =
new QGroupBox(sGroupBoxName);
176 pGroupBox->setObjectName(sGroupBoxName);
178 QVBoxLayout *pVBox =
new QVBoxLayout;
180 pVBox->setContentsMargins(0,0,0,0);
181 pVBox->addWidget(pWidget);
182 pGroupBox->setLayout(pVBox);
184 pTabWidgetLayout->insertWidget(iPos,
193 const QString& sGroupBoxName,
194 const QString& sTabNameGroupBox,
195 const QString& sTabName,
199 QGroupBox* pGroupBox = pTabWidgetLayout->parentWidget()->findChild<QGroupBox *>(sGroupBoxName);
202 int iPos = bAddToEnd ? -1 : 0;
203 pGroupBox =
new QGroupBox(sGroupBoxName);
204 pGroupBox->setObjectName(sGroupBoxName);
206 pTabWidgetLayout->insertWidget(iPos,
210 QVBoxLayout *pVBox =
new QVBoxLayout;
211 QTabWidget* pTabWidget =
new QTabWidget;
212 pTabWidget->setTabBarAutoHide(
false);
213 pTabWidget->setMovable(
true);
214 pTabWidget->setObjectName(sGroupBoxName +
"TabWidget");
216 pTabWidget->addTab(pWidget, sTabNameGroupBox);
217 pVBox->setContentsMargins(4,2,4,4);
218 pVBox->addWidget(pTabWidget);
219 pGroupBox->setLayout(pVBox);
221 QTabWidget* pTabWidget = pGroupBox->findChild<QTabWidget *>(sGroupBoxName +
"TabWidget");
224 pTabWidget->addTab(pWidget, sTabNameGroupBox);
234 m_pUi->m_horizontalSlider_opacity->setValue(opactiy);
243 return m_pUi->m_horizontalSlider_opacity->value();
250 m_pUi->m_pushButton_close->setVisible(bVisibility);
251 m_pUi->m_horizontalSlider_opacity->setVisible(bVisibility);
252 m_pUi->m_label_opacity->setVisible(bVisibility);
259 if(m_sSettingsPath.isEmpty()) {
263 QSettings settings(
"MNECPP");
265 settings.setValue(m_sSettingsPath + QString(
"/QuickControlView/ViewOpacity"),
getOpacityValue());
266 settings.setValue(m_sSettingsPath + QString(
"/QuickControlView/ViewPos"), this->pos());
273 if(m_sSettingsPath.isEmpty()) {
277 QSettings settings(
"MNECPP");
279 setOpacityValue(settings.value(m_sSettingsPath + QString(
"/QuickControlView/ViewOpacity"), 100).toInt());
281 QPoint pos = settings.value(m_sSettingsPath + QString(
"/QuickControlView/ViewPos"), QPoint(100,100)).toPoint();
283 QRect screenRect = QApplication::primaryScreen()->geometry();
284 if(!screenRect.contains(pos) && QGuiApplication::screens().size() == 1) {
285 move(QPoint(100,100));
296 this->setWindowOpacity(1);
298 this->setWindowOpacity(1/(100.0/value));
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)