Commit 005ab6ee authored by Bryant's avatar Bryant

Selecting the desired stylesheet now works correctly, including saving...

Selecting the desired stylesheet now works correctly, including saving settings between application launches.
parent 9d969f1f
......@@ -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):
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()
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()
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)
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;
......
......@@ -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:
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
......
......@@ -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) :
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()
// 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)
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()
{
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);
}
}
......@@ -2,6 +2,7 @@
#define QGCSETTINGSWIDGET_H
#include <QDialog>
#include "MainWindow.h"
namespace Ui
{
......@@ -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);
};
......
......@@ -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 @@
<property name="text">
<string>Default</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
......@@ -167,6 +173,9 @@
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
<property name="centerButtons">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment