Browse Source

Selecting the desired stylesheet now works correctly, including saving settings between application launches.

QGC4.4
Bryant 12 years ago
parent
commit
005ab6ee94
  1. 25
      src/ui/MainWindow.cc
  2. 15
      src/ui/MainWindow.h
  3. 82
      src/ui/QGCSettingsWidget.cc
  4. 5
      src/ui/QGCSettingsWidget.h
  5. 9
      src/ui/QGCSettingsWidget.ui

25
src/ui/MainWindow.cc

@ -103,7 +103,8 @@ MainWindow::MainWindow(QWidget *parent): @@ -103,7 +103,8 @@ MainWindow::MainWindow(QWidget *parent):
aboutToCloseFlag(false),
changingViewsFlag(false),
centerStackActionGroup(new QActionGroup(this)),
styleFileName(QCoreApplication::applicationDirPath() + "/style-indoor.css"),
darkStyleFileName(defaultDarkStyle),
lightStyleFileName(defaultLightStyle),
autoReconnect(false),
lowPowerMode(false)
{
@ -114,7 +115,14 @@ MainWindow::MainWindow(QWidget *parent): @@ -114,7 +115,14 @@ MainWindow::MainWindow(QWidget *parent):
loadSettings();
emit initStatusChanged("Loading Style.");
loadStyle(currentStyle, QString());
if (currentStyle == QGC_MAINWINDOW_STYLE_LIGHT)
{
loadStyle(currentStyle, lightStyleFileName);
}
else
{
loadStyle(currentStyle, darkStyleFileName);
}
if (settings.contains("ADVANCED_MODE"))
{
@ -1095,6 +1103,8 @@ void MainWindow::loadSettings() @@ -1095,6 +1103,8 @@ void MainWindow::loadSettings()
settings.beginGroup("QGC_MAINWINDOW");
autoReconnect = settings.value("AUTO_RECONNECT", autoReconnect).toBool();
currentStyle = (QGC_MAINWINDOW_STYLE)settings.value("CURRENT_STYLE", currentStyle).toInt();
darkStyleFileName = settings.value("DARK_STYLE_FILENAME", darkStyleFileName).toString();
lightStyleFileName = settings.value("LIGHT_STYLE_FILENAME", lightStyleFileName).toString();
lowPowerMode = settings.value("LOW_POWER_MODE", lowPowerMode).toBool();
dockWidgetTitleBarEnabled = settings.value("DOCK_WIDGET_TITLEBARS",dockWidgetTitleBarEnabled).toBool();
settings.endGroup();
@ -1107,6 +1117,8 @@ void MainWindow::storeSettings() @@ -1107,6 +1117,8 @@ void MainWindow::storeSettings()
settings.beginGroup("QGC_MAINWINDOW");
settings.setValue("AUTO_RECONNECT", autoReconnect);
settings.setValue("CURRENT_STYLE", currentStyle);
settings.setValue("DARK_STYLE_FILENAME", darkStyleFileName);
settings.setValue("LIGHT_STYLE_FILENAME", lightStyleFileName);
settings.endGroup();
if (!aboutToCloseFlag && isVisible())
{
@ -1241,6 +1253,15 @@ bool MainWindow::loadStyle(QGC_MAINWINDOW_STYLE style, QString cssFile) @@ -1241,6 +1253,15 @@ bool MainWindow::loadStyle(QGC_MAINWINDOW_STYLE style, QString cssFile)
style.replace("ICONDIR", QCoreApplication::applicationDirPath() + "files/styles/");
qApp->setStyleSheet(style);
if (currentStyle == QGC_MAINWINDOW_STYLE_LIGHT)
{
lightStyleFileName = cssFile;
}
else
{
darkStyleFileName = cssFile;
}
// And restore the cursor before returning.
qApp->restoreOverrideCursor();
return true;

15
src/ui/MainWindow.h

@ -116,10 +116,16 @@ public: @@ -116,10 +116,16 @@ public:
return currentStyle;
}
/** @brief Get current visual style */
QString getStyleSheet()
/** @brief Get current light visual style */
QString getLightStyleSheet()
{
return lightStyleFileName;
}
/** @brief Get current dark visual style */
QString getDarkStyleSheet()
{
return styleFileName;
return darkStyleFileName;
}
/** @brief Get auto link reconnect setting */
bool autoReconnectEnabled()
@ -433,7 +439,8 @@ protected: @@ -433,7 +439,8 @@ protected:
LogCompressor* comp;
QString screenFileName;
QTimer* videoTimer;
QString styleFileName;
QString darkStyleFileName;
QString lightStyleFileName;
bool autoReconnect;
Qt::WindowStates windowStateVal;
bool lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets

82
src/ui/QGCSettingsWidget.cc

@ -13,7 +13,8 @@ @@ -13,7 +13,8 @@
QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) :
QDialog(parent, flags),
ui(new Ui::QGCSettingsWidget)
ui(new Ui::QGCSettingsWidget),
mainWindow((MainWindow*)parent)
{
ui->setupUi(this);
@ -35,23 +36,34 @@ QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) : @@ -35,23 +36,34 @@ QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) :
connect(GAudioOutput::instance(), SIGNAL(mutedChanged(bool)), ui->audioMuteCheckBox, SLOT(setChecked(bool)));
// Reconnect
ui->reconnectCheckBox->setChecked(MainWindow::instance()->autoReconnectEnabled());
connect(ui->reconnectCheckBox, SIGNAL(clicked(bool)), MainWindow::instance(), SLOT(enableAutoReconnect(bool)));
ui->reconnectCheckBox->setChecked(mainWindow->autoReconnectEnabled());
connect(ui->reconnectCheckBox, SIGNAL(clicked(bool)), mainWindow, SLOT(enableAutoReconnect(bool)));
// Low power mode
ui->lowPowerCheckBox->setChecked(MainWindow::instance()->lowPowerModeEnabled());
connect(ui->lowPowerCheckBox, SIGNAL(clicked(bool)), MainWindow::instance(), SLOT(enableLowPowerMode(bool)));
ui->lowPowerCheckBox->setChecked(mainWindow->lowPowerModeEnabled());
connect(ui->lowPowerCheckBox, SIGNAL(clicked(bool)), mainWindow, SLOT(enableLowPowerMode(bool)));
//Dock widget title bars
ui->titleBarCheckBox->setChecked(MainWindow::instance()->dockWidgetTitleBarsEnabled());
connect(ui->titleBarCheckBox,SIGNAL(clicked(bool)),MainWindow::instance(),SLOT(enableDockWidgetTitleBars(bool)));
ui->titleBarCheckBox->setChecked(mainWindow->dockWidgetTitleBarsEnabled());
connect(ui->titleBarCheckBox,SIGNAL(clicked(bool)),mainWindow,SLOT(enableDockWidgetTitleBars(bool)));
// Style
MainWindow::QGC_MAINWINDOW_STYLE style = MainWindow::instance()->getStyle();
// Intialize the style UI to the proper values obtained from the MainWindow.
MainWindow::QGC_MAINWINDOW_STYLE style = mainWindow->getStyle();
ui->styleChooser->setCurrentIndex(style);
if (style == MainWindow::QGC_MAINWINDOW_STYLE_DARK)
{
ui->styleSheetFile->setText(mainWindow->getDarkStyleSheet());
}
else
{
ui->styleSheetFile->setText(mainWindow->getLightStyleSheet());
}
// And then connect all the signals for the UI for changing styles.
connect(ui->styleChooser, SIGNAL(currentIndexChanged(int)), this, SLOT(styleChanged(int)));
connect(ui->styleCustomButton, SIGNAL(clicked()), this, SLOT(selectStylesheet()));
connect(ui->styleDefaultButton, SIGNAL(clicked()), this, SLOT(setDefaultStyle()));
connect(ui->styleSheetFile, SIGNAL(editingFinished()), this, SLOT(lineEditFinished()));
// Close / destroy
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(deleteLater()));
@ -100,17 +112,7 @@ void QGCSettingsWidget::selectStylesheet() @@ -100,17 +112,7 @@ void QGCSettingsWidget::selectStylesheet()
// And update the UI as needed.
else
{
switch (ui->styleChooser->currentIndex())
{
case 0:
darkStyleSheet = newStyleFileName;
ui->styleSheetFile->setText(darkStyleSheet);
MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, darkStyleSheet);
case 1:
lightStyleSheet = newStyleFileName;
ui->styleSheetFile->setText(lightStyleSheet);
MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, lightStyleSheet);
}
ui->styleSheetFile->setText(newStyleFileName);
}
}
@ -119,27 +121,41 @@ bool QGCSettingsWidget::updateStyle(QString style) @@ -119,27 +121,41 @@ bool QGCSettingsWidget::updateStyle(QString style)
switch (ui->styleChooser->currentIndex())
{
case 0:
darkStyleSheet = style;
return MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, darkStyleSheet);
return mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, style);
case 1:
lightStyleSheet = style;
return MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, lightStyleSheet);
return mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, style);
default:
return false;
}
}
void QGCSettingsWidget::lineEditFinished()
{
QString newStyleFileName(ui->styleSheetFile->text());
QFile newStyleFile(newStyleFileName);
if (!newStyleFile.exists() || !updateStyle(newStyleFileName))
{
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::Information);
msgBox.setText(tr("QGroundControl did not load a new style"));
msgBox.setInformativeText(tr("Stylesheet file %1 was not readable").arg(newStyleFileName));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.exec();
}
}
void QGCSettingsWidget::styleChanged(int index)
{
if (index == 1)
{
ui->styleSheetFile->setText(lightStyleSheet);
updateStyle(lightStyleSheet);
ui->styleSheetFile->setText(mainWindow->getLightStyleSheet());
mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, mainWindow->getLightStyleSheet());
}
else
{
ui->styleSheetFile->setText(darkStyleSheet);
updateStyle(darkStyleSheet);
ui->styleSheetFile->setText(mainWindow->getDarkStyleSheet());
mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, mainWindow->getDarkStyleSheet());
}
}
@ -147,14 +163,12 @@ void QGCSettingsWidget::setDefaultStyle() @@ -147,14 +163,12 @@ void QGCSettingsWidget::setDefaultStyle()
{
if (ui->styleChooser->currentIndex() == 1)
{
lightStyleSheet = MainWindow::defaultLightStyle;
ui->styleSheetFile->setText(lightStyleSheet);
updateStyle(lightStyleSheet);
ui->styleSheetFile->setText(MainWindow::defaultLightStyle);
mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, MainWindow::defaultLightStyle);
}
else
{
darkStyleSheet = MainWindow::defaultDarkStyle;
ui->styleSheetFile->setText(darkStyleSheet);
updateStyle(darkStyleSheet);
ui->styleSheetFile->setText(MainWindow::defaultDarkStyle);
mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, MainWindow::defaultDarkStyle);
}
}

5
src/ui/QGCSettingsWidget.h

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
#define QGCSETTINGSWIDGET_H
#include <QDialog>
#include "MainWindow.h"
namespace Ui
{
@ -18,13 +19,13 @@ public: @@ -18,13 +19,13 @@ public:
public slots:
void styleChanged(int index);
void lineEditFinished();
void setDefaultStyle();
void selectStylesheet();
private:
MainWindow* mainWindow;
Ui::QGCSettingsWidget* ui;
QString darkStyleSheet;
QString lightStyleSheet;
bool updateStyle(QString style);
};

9
src/ui/QGCSettingsWidget.ui

@ -128,6 +128,9 @@ @@ -128,6 +128,9 @@
<property name="text">
<string>Custom</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item>
@ -135,6 +138,9 @@ @@ -135,6 +138,9 @@
<property name="text">
<string>Default</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
@ -167,6 +173,9 @@ @@ -167,6 +173,9 @@
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
<property name="centerButtons">
<bool>false</bool>
</property>
</widget>
</item>
</layout>

Loading…
Cancel
Save