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): ...@@ -103,7 +103,8 @@ MainWindow::MainWindow(QWidget *parent):
aboutToCloseFlag(false), aboutToCloseFlag(false),
changingViewsFlag(false), changingViewsFlag(false),
centerStackActionGroup(new QActionGroup(this)), centerStackActionGroup(new QActionGroup(this)),
styleFileName(QCoreApplication::applicationDirPath() + "/style-indoor.css"), darkStyleFileName(defaultDarkStyle),
lightStyleFileName(defaultLightStyle),
autoReconnect(false), autoReconnect(false),
lowPowerMode(false) lowPowerMode(false)
{ {
...@@ -114,7 +115,14 @@ MainWindow::MainWindow(QWidget *parent): ...@@ -114,7 +115,14 @@ MainWindow::MainWindow(QWidget *parent):
loadSettings(); loadSettings();
emit initStatusChanged("Loading Style."); 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")) if (settings.contains("ADVANCED_MODE"))
{ {
...@@ -1095,6 +1103,8 @@ void MainWindow::loadSettings() ...@@ -1095,6 +1103,8 @@ void MainWindow::loadSettings()
settings.beginGroup("QGC_MAINWINDOW"); settings.beginGroup("QGC_MAINWINDOW");
autoReconnect = settings.value("AUTO_RECONNECT", autoReconnect).toBool(); autoReconnect = settings.value("AUTO_RECONNECT", autoReconnect).toBool();
currentStyle = (QGC_MAINWINDOW_STYLE)settings.value("CURRENT_STYLE", currentStyle).toInt(); 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(); lowPowerMode = settings.value("LOW_POWER_MODE", lowPowerMode).toBool();
dockWidgetTitleBarEnabled = settings.value("DOCK_WIDGET_TITLEBARS",dockWidgetTitleBarEnabled).toBool(); dockWidgetTitleBarEnabled = settings.value("DOCK_WIDGET_TITLEBARS",dockWidgetTitleBarEnabled).toBool();
settings.endGroup(); settings.endGroup();
...@@ -1107,6 +1117,8 @@ void MainWindow::storeSettings() ...@@ -1107,6 +1117,8 @@ void MainWindow::storeSettings()
settings.beginGroup("QGC_MAINWINDOW"); settings.beginGroup("QGC_MAINWINDOW");
settings.setValue("AUTO_RECONNECT", autoReconnect); settings.setValue("AUTO_RECONNECT", autoReconnect);
settings.setValue("CURRENT_STYLE", currentStyle); settings.setValue("CURRENT_STYLE", currentStyle);
settings.setValue("DARK_STYLE_FILENAME", darkStyleFileName);
settings.setValue("LIGHT_STYLE_FILENAME", lightStyleFileName);
settings.endGroup(); settings.endGroup();
if (!aboutToCloseFlag && isVisible()) 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/"); style.replace("ICONDIR", QCoreApplication::applicationDirPath() + "files/styles/");
qApp->setStyleSheet(style); qApp->setStyleSheet(style);
if (currentStyle == QGC_MAINWINDOW_STYLE_LIGHT)
{
lightStyleFileName = cssFile;
}
else
{
darkStyleFileName = cssFile;
}
// And restore the cursor before returning. // And restore the cursor before returning.
qApp->restoreOverrideCursor(); qApp->restoreOverrideCursor();
return true; return true;
......
...@@ -116,10 +116,16 @@ public: ...@@ -116,10 +116,16 @@ public:
return currentStyle; return currentStyle;
} }
/** @brief Get current visual style */ /** @brief Get current light visual style */
QString getStyleSheet() QString getLightStyleSheet()
{
return lightStyleFileName;
}
/** @brief Get current dark visual style */
QString getDarkStyleSheet()
{ {
return styleFileName; return darkStyleFileName;
} }
/** @brief Get auto link reconnect setting */ /** @brief Get auto link reconnect setting */
bool autoReconnectEnabled() bool autoReconnectEnabled()
...@@ -433,7 +439,8 @@ protected: ...@@ -433,7 +439,8 @@ protected:
LogCompressor* comp; LogCompressor* comp;
QString screenFileName; QString screenFileName;
QTimer* videoTimer; QTimer* videoTimer;
QString styleFileName; QString darkStyleFileName;
QString lightStyleFileName;
bool autoReconnect; bool autoReconnect;
Qt::WindowStates windowStateVal; Qt::WindowStates windowStateVal;
bool lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets bool lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) : QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) :
QDialog(parent, flags), QDialog(parent, flags),
ui(new Ui::QGCSettingsWidget) ui(new Ui::QGCSettingsWidget),
mainWindow((MainWindow*)parent)
{ {
ui->setupUi(this); 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))); connect(GAudioOutput::instance(), SIGNAL(mutedChanged(bool)), ui->audioMuteCheckBox, SLOT(setChecked(bool)));
// Reconnect // Reconnect
ui->reconnectCheckBox->setChecked(MainWindow::instance()->autoReconnectEnabled()); ui->reconnectCheckBox->setChecked(mainWindow->autoReconnectEnabled());
connect(ui->reconnectCheckBox, SIGNAL(clicked(bool)), MainWindow::instance(), SLOT(enableAutoReconnect(bool))); connect(ui->reconnectCheckBox, SIGNAL(clicked(bool)), mainWindow, SLOT(enableAutoReconnect(bool)));
// Low power mode // Low power mode
ui->lowPowerCheckBox->setChecked(MainWindow::instance()->lowPowerModeEnabled()); ui->lowPowerCheckBox->setChecked(mainWindow->lowPowerModeEnabled());
connect(ui->lowPowerCheckBox, SIGNAL(clicked(bool)), MainWindow::instance(), SLOT(enableLowPowerMode(bool))); connect(ui->lowPowerCheckBox, SIGNAL(clicked(bool)), mainWindow, SLOT(enableLowPowerMode(bool)));
//Dock widget title bars //Dock widget title bars
ui->titleBarCheckBox->setChecked(MainWindow::instance()->dockWidgetTitleBarsEnabled()); ui->titleBarCheckBox->setChecked(mainWindow->dockWidgetTitleBarsEnabled());
connect(ui->titleBarCheckBox,SIGNAL(clicked(bool)),MainWindow::instance(),SLOT(enableDockWidgetTitleBars(bool))); connect(ui->titleBarCheckBox,SIGNAL(clicked(bool)),mainWindow,SLOT(enableDockWidgetTitleBars(bool)));
// Style // Intialize the style UI to the proper values obtained from the MainWindow.
MainWindow::QGC_MAINWINDOW_STYLE style = MainWindow::instance()->getStyle(); MainWindow::QGC_MAINWINDOW_STYLE style = mainWindow->getStyle();
ui->styleChooser->setCurrentIndex(style); 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->styleChooser, SIGNAL(currentIndexChanged(int)), this, SLOT(styleChanged(int)));
connect(ui->styleCustomButton, SIGNAL(clicked()), this, SLOT(selectStylesheet())); connect(ui->styleCustomButton, SIGNAL(clicked()), this, SLOT(selectStylesheet()));
connect(ui->styleDefaultButton, SIGNAL(clicked()), this, SLOT(setDefaultStyle())); connect(ui->styleDefaultButton, SIGNAL(clicked()), this, SLOT(setDefaultStyle()));
connect(ui->styleSheetFile, SIGNAL(editingFinished()), this, SLOT(lineEditFinished()));
// Close / destroy // Close / destroy
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(deleteLater())); 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. // And update the UI as needed.
else else
{ {
switch (ui->styleChooser->currentIndex()) ui->styleSheetFile->setText(newStyleFileName);
{
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);
}
} }
} }
...@@ -119,27 +121,41 @@ bool QGCSettingsWidget::updateStyle(QString style) ...@@ -119,27 +121,41 @@ bool QGCSettingsWidget::updateStyle(QString style)
switch (ui->styleChooser->currentIndex()) switch (ui->styleChooser->currentIndex())
{ {
case 0: case 0:
darkStyleSheet = style; return mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, style);
return MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, darkStyleSheet);
case 1: case 1:
lightStyleSheet = style; return mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, style);
return MainWindow::instance()->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, lightStyleSheet);
default: default:
return false; 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) void QGCSettingsWidget::styleChanged(int index)
{ {
if (index == 1) if (index == 1)
{ {
ui->styleSheetFile->setText(lightStyleSheet); ui->styleSheetFile->setText(mainWindow->getLightStyleSheet());
updateStyle(lightStyleSheet); mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, mainWindow->getLightStyleSheet());
} }
else else
{ {
ui->styleSheetFile->setText(darkStyleSheet); ui->styleSheetFile->setText(mainWindow->getDarkStyleSheet());
updateStyle(darkStyleSheet); 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) if (ui->styleChooser->currentIndex() == 1)
{ {
lightStyleSheet = MainWindow::defaultLightStyle; ui->styleSheetFile->setText(MainWindow::defaultLightStyle);
ui->styleSheetFile->setText(lightStyleSheet); mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_LIGHT, MainWindow::defaultLightStyle);
updateStyle(lightStyleSheet);
} }
else else
{ {
darkStyleSheet = MainWindow::defaultDarkStyle; ui->styleSheetFile->setText(MainWindow::defaultDarkStyle);
ui->styleSheetFile->setText(darkStyleSheet); mainWindow->loadStyle(MainWindow::QGC_MAINWINDOW_STYLE_DARK, MainWindow::defaultDarkStyle);
updateStyle(darkStyleSheet);
} }
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define QGCSETTINGSWIDGET_H #define QGCSETTINGSWIDGET_H
#include <QDialog> #include <QDialog>
#include "MainWindow.h"
namespace Ui namespace Ui
{ {
...@@ -18,13 +19,13 @@ public: ...@@ -18,13 +19,13 @@ public:
public slots: public slots:
void styleChanged(int index); void styleChanged(int index);
void lineEditFinished();
void setDefaultStyle(); void setDefaultStyle();
void selectStylesheet(); void selectStylesheet();
private: private:
MainWindow* mainWindow;
Ui::QGCSettingsWidget* ui; Ui::QGCSettingsWidget* ui;
QString darkStyleSheet;
QString lightStyleSheet;
bool updateStyle(QString style); bool updateStyle(QString style);
}; };
......
...@@ -128,6 +128,9 @@ ...@@ -128,6 +128,9 @@
<property name="text"> <property name="text">
<string>Custom</string> <string>Custom</string>
</property> </property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
...@@ -135,6 +138,9 @@ ...@@ -135,6 +138,9 @@
<property name="text"> <property name="text">
<string>Default</string> <string>Default</string>
</property> </property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
...@@ -167,6 +173,9 @@ ...@@ -167,6 +173,9 @@
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Close</set> <set>QDialogButtonBox::Close</set>
</property> </property>
<property name="centerButtons">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </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