21#include "ui_quickcontrolview.h"
32#include <QApplication>
48 Qt::WindowFlags flags,
53, m_pUi(std::make_unique<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);
90 while (m_pUi->m_pTabWidget->count() != 0) {
91 QWidget* pTabWidget = m_pUi->m_pTabWidget->widget(m_pUi->m_pTabWidget->count() - 1);
92 m_pUi->m_pTabWidget->removeTab(m_pUi->m_pTabWidget->count() - 1);
101 QVBoxLayout* pTabWidgetLayout =
nullptr;
103 if (QWidget* pTabWidget = m_pUi->m_pTabWidget->findChild<QWidget*>(sTabName +
"TabWidget")) {
105 pTabWidgetLayout = qobject_cast<QVBoxLayout*>(pTabWidget->layout());
108 pTabWidget =
new QWidget();
109 pTabWidget->setObjectName(sTabName +
"TabWidget");
110 pTabWidgetLayout =
new QVBoxLayout();
111 pTabWidgetLayout->setContentsMargins(4, 2, 4, 4);
112 pTabWidget->setLayout(pTabWidgetLayout);
113 m_pUi->m_pTabWidget->insertTab(0, pTabWidget, sTabName);
116 return pTabWidgetLayout;
122 const QString& sTabName,
125 for (
int i = 0; i < lWidgets.size(); ++i) {
126 QString sObjectName = lWidgets.at(i)->objectName();
128 if (sObjectName.contains(
"widget_", Qt::CaseInsensitive)) {
129 this->
addWidget(lWidgets.at(i), sTabName, bAddToEnd);
132 if (sObjectName.contains(
"group_", Qt::CaseInsensitive)) {
133 if (sObjectName.contains(
"group_tab_", Qt::CaseInsensitive)) {
134 sObjectName.remove(
"group_tab_");
135 QStringList sList = sObjectName.split(
"_");
137 if (sList.size() >= 2) {
143 sObjectName.remove(
"group_");
144 this->
addGroupBox(lWidgets.at(i), sObjectName, sTabName, bAddToEnd);
153 const QString& sTabName,
157 int iPos = bAddToEnd ? -1 : 0;
158 pTabWidgetLayout->insertWidget(iPos,
167 const QString& sGroupBoxName,
168 const QString& sTabName,
172 int iPos = bAddToEnd ? -1 : 0;
173 QGroupBox* pGroupBox =
new QGroupBox(sGroupBoxName);
174 pGroupBox->setObjectName(sGroupBoxName);
176 QVBoxLayout* pVBox =
new QVBoxLayout;
178 pVBox->setContentsMargins(0, 0, 0, 0);
179 pVBox->addWidget(pWidget);
180 pGroupBox->setLayout(pVBox);
182 pTabWidgetLayout->insertWidget(iPos,
191 const QString& sGroupBoxName,
192 const QString& sTabNameGroupBox,
193 const QString& sTabName,
197 QGroupBox* pGroupBox = pTabWidgetLayout->parentWidget()->findChild<QGroupBox*>(sGroupBoxName);
200 int iPos = bAddToEnd ? -1 : 0;
201 pGroupBox =
new QGroupBox(sGroupBoxName);
202 pGroupBox->setObjectName(sGroupBoxName);
204 pTabWidgetLayout->insertWidget(iPos,
208 QVBoxLayout* pVBox =
new QVBoxLayout;
209 QTabWidget* pTabWidget =
new QTabWidget;
210 pTabWidget->setTabBarAutoHide(
false);
211 pTabWidget->setMovable(
true);
212 pTabWidget->setObjectName(sGroupBoxName +
"TabWidget");
214 pTabWidget->addTab(pWidget, sTabNameGroupBox);
215 pVBox->setContentsMargins(4, 2, 4, 4);
216 pVBox->addWidget(pTabWidget);
217 pGroupBox->setLayout(pVBox);
219 QTabWidget* pTabWidget = pGroupBox->findChild<QTabWidget*>(sGroupBoxName +
"TabWidget");
222 pTabWidget->addTab(pWidget, sTabNameGroupBox);
232 m_pUi->m_horizontalSlider_opacity->setValue(opactiy);
241 return m_pUi->m_horizontalSlider_opacity->value();
248 m_pUi->m_pushButton_close->setVisible(bVisibility);
249 m_pUi->m_horizontalSlider_opacity->setVisible(bVisibility);
250 m_pUi->m_label_opacity->setVisible(bVisibility);
257 if (m_sSettingsPath.isEmpty()) {
261 QSettings settings(
"MNECPP");
263 settings.setValue(m_sSettingsPath + QString(
"/QuickControlView/ViewOpacity"),
getOpacityValue());
264 settings.setValue(m_sSettingsPath + QString(
"/QuickControlView/ViewPos"), this->pos());
271 if (m_sSettingsPath.isEmpty()) {
275 QSettings settings(
"MNECPP");
277 setOpacityValue(settings.value(m_sSettingsPath + QString(
"/QuickControlView/ViewOpacity"), 100).toInt());
279 QPoint pos = settings.value(m_sSettingsPath + QString(
"/QuickControlView/ViewPos"), QPoint(100, 100)).toPoint();
281 QRect screenRect = QApplication::primaryScreen()->geometry();
282 if (!screenRect.contains(pos) && QGuiApplication::screens().size() == 1) {
283 move(QPoint(100, 100));
294 this->setWindowOpacity(1);
296 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)