From ec18ee402b3b0e1486dde545bc8e20f609f28d00 Mon Sep 17 00:00:00 2001 From: Michael Carpenter Date: Wed, 1 May 2013 14:30:12 -0400 Subject: [PATCH] New titlebar widgets to give dock windows titles when not in advanced mode --- src/ui/MainWindow.cc | 51 ++++++++++++++++++++++++++++++++++--- src/ui/MainWindow.h | 9 +++++++ src/ui/QGCSettingsWidget.cc | 4 +++ src/ui/QGCSettingsWidget.ui | 16 +++++++++--- 4 files changed, 73 insertions(+), 7 deletions(-) diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index d0753f1f8..deca29714 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -104,6 +104,7 @@ MainWindow::MainWindow(QWidget *parent): lowPowerMode(false) { hide(); + dockWidgetTitleBarEnabled = true; isAdvancedMode = false; emit initStatusChanged("Loading UI Settings.."); loadSettings(); @@ -606,12 +607,24 @@ void MainWindow::createDockWidget(QWidget *parent,QWidget *child,QString title,Q QDockWidget *widget = new QDockWidget(title,this); if (!isAdvancedMode) { - dockToTitleBarMap[widget] = widget->titleBarWidget(); - widget->setTitleBarWidget(new QWidget(this)); + if (dockWidgetTitleBarEnabled) + { + dockToTitleBarMap[widget] = widget->titleBarWidget(); + QLabel *label = new QLabel(this); + label->setText(title); + widget->setTitleBarWidget(label); + } + else + { + dockToTitleBarMap[widget] = widget->titleBarWidget(); + widget->setTitleBarWidget(new QWidget(this)); + } } else { - dockToTitleBarMap[widget] = new QWidget(this); + QLabel *label = new QLabel(this); + label->setText(title); + dockToTitleBarMap[widget] = label; } widget->setObjectName(objectname); widget->setWidget(child); @@ -903,7 +916,9 @@ void MainWindow::loadSettings() autoReconnect = settings.value("AUTO_RECONNECT", autoReconnect).toBool(); currentStyle = (QGC_MAINWINDOW_STYLE)settings.value("CURRENT_STYLE", currentStyle).toInt(); lowPowerMode = settings.value("LOW_POWER_MODE", lowPowerMode).toBool(); + dockWidgetTitleBarEnabled = settings.value("DOCK_WIDGET_TITLEBARS",dockWidgetTitleBarEnabled).toBool(); settings.endGroup(); + enableDockWidgetTitleBars(dockWidgetTitleBarEnabled); } void MainWindow::storeSettings() @@ -990,6 +1005,35 @@ void MainWindow::saveScreen() window.save(screenFileName, format.toAscii()); } } +void MainWindow::enableDockWidgetTitleBars(bool enabled) +{ + if (!isAdvancedMode) + { + dockWidgetTitleBarEnabled = enabled; + QSettings settings; + settings.beginGroup("QGC_MAINWINDOW"); + settings.setValue("DOCK_WIDGET_TITLEBARS",dockWidgetTitleBarEnabled); + settings.endGroup(); + settings.sync(); + if (enabled) + { + for (QMap::const_iterator i=dockToTitleBarMap.constBegin();i!=dockToTitleBarMap.constEnd();i++) + { + QLabel *label = new QLabel(this); + label->setText(i.value()->windowTitle()); + i.key()->setTitleBarWidget(label); + label->setEnabled(false); + } + } + else + { + for (QMap::const_iterator i=dockToTitleBarMap.constBegin();i!=dockToTitleBarMap.constEnd();i++) + { + i.key()->setTitleBarWidget(0); + } + } + } +} void MainWindow::enableAutoReconnect(bool enabled) { @@ -1745,7 +1789,6 @@ void MainWindow::setAdvancedMode() QWidget *widget = i.key()->titleBarWidget(); i.key()->setTitleBarWidget(i.value()); dockToTitleBarMap[i.key()] = widget; - } } } diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index 1e65684f0..aae491a29 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -119,6 +119,12 @@ public: return autoReconnect; } + /** @brief Get title bar mode setting */ + bool dockWidgetTitleBarsEnabled() + { + return dockWidgetTitleBarEnabled; + } + /** @brief Get low power mode setting */ bool lowPowerModeEnabled() { @@ -186,6 +192,8 @@ public slots: void reloadStylesheet(); /** @brief Let the user select the CSS style sheet */ void selectStylesheet(); + /** @breif Enable title bars on dock widgets when no in advanced mode */ + void enableDockWidgetTitleBars(bool enabled); /** @brief Automatically reconnect last link */ void enableAutoReconnect(bool enabled); /** @brief Save power by reducing update rates */ @@ -436,6 +444,7 @@ private: QMap dockToTitleBarMap; QMap > centralWidgetToDockWidgetsMap; bool isAdvancedMode; + bool dockWidgetTitleBarEnabled; Ui::MainWindow ui; QString getWindowStateKey(); diff --git a/src/ui/QGCSettingsWidget.cc b/src/ui/QGCSettingsWidget.cc index 4bd74e581..bb8387cda 100644 --- a/src/ui/QGCSettingsWidget.cc +++ b/src/ui/QGCSettingsWidget.cc @@ -42,6 +42,10 @@ QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) : ui->lowPowerCheckBox->setChecked(MainWindow::instance()->lowPowerModeEnabled()); connect(ui->lowPowerCheckBox, SIGNAL(clicked(bool)), MainWindow::instance(), SLOT(enableLowPowerMode(bool))); + //Dock widget title bars + ui->titleBarCheckBox->setChecked(MainWindow::instance()->dockWidgetTitleBarsEnabled()); + ui->titleBarCheckBox,SIGNAL(clicked(bool)),MainWindow::instance(),SLOT(enableDockWidgetTitleBars(bool)); + // Style MainWindow::QGC_MAINWINDOW_STYLE style = (MainWindow::QGC_MAINWINDOW_STYLE)MainWindow::instance()->getStyle(); switch (style) { diff --git a/src/ui/QGCSettingsWidget.ui b/src/ui/QGCSettingsWidget.ui index 9a89b8fe7..88053d631 100644 --- a/src/ui/QGCSettingsWidget.ui +++ b/src/ui/QGCSettingsWidget.ui @@ -46,7 +46,7 @@ - + Use native platform look and feel (Windows/Linux/Mac OS) @@ -56,14 +56,14 @@ - + Use indoor mission style (black background) - + Use outdoor mission style (light background) @@ -80,6 +80,16 @@ + + + + Show Docked Widget title bars when NOT in advanced Mode. + + + true + + + -- 2.22.0