diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-11-25 22:47:06 +0200 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-11-25 22:47:06 +0200 |
commit | 0dad2567434768c5a3d276678e5222e16526dc47 (patch) | |
tree | 44cefc95582db7e8c763134aa636bb38af4ac1a9 /src | |
parent | 54cf3418bc323b96b78e944c16f34082d5c2ef89 (diff) |
Reload theme without restart (#137)
Diffstat (limited to 'src')
-rw-r--r-- | src/UserSettingsPage.cc | 42 | ||||
-rw-r--r-- | src/main.cc | 25 |
2 files changed, 41 insertions, 26 deletions
diff --git a/src/UserSettingsPage.cc b/src/UserSettingsPage.cc index 79f8f7bd..a5851c57 100644 --- a/src/UserSettingsPage.cc +++ b/src/UserSettingsPage.cc @@ -15,6 +15,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <QApplication> #include <QComboBox> #include <QDebug> #include <QLabel> @@ -33,7 +34,46 @@ UserSettings::load() { QSettings settings; isTrayEnabled_ = settings.value("user/window/tray", true).toBool(); - theme_ = settings.value("user/theme", "default").toString(); + theme_ = settings.value("user/theme", "light").toString(); + + applyTheme(); +} + +void +UserSettings::setTheme(QString theme) +{ + theme_ = theme; + save(); + applyTheme(); +} + +void +UserSettings::setTray(bool state) +{ + isTrayEnabled_ = state; + save(); +} +void +UserSettings::applyTheme() +{ + QFile stylefile; + QPalette pal; + + if (theme() == "light") { + stylefile.setFileName(":/styles/styles/nheko.qss"); + pal.setColor(QPalette::Link, QColor("#333")); + } else if (theme() == "dark") { + stylefile.setFileName(":/styles/styles/nheko-dark.qss"); + pal.setColor(QPalette::Link, QColor("#d7d9dc")); + } else { + stylefile.setFileName(":/styles/styles/system.qss"); + } + + stylefile.open(QFile::ReadOnly); + QString stylesheet = QString(stylefile.readAll()); + + QApplication::setPalette(pal); + qobject_cast<QApplication *>(QApplication::instance())->setStyleSheet(stylesheet); } void diff --git a/src/main.cc b/src/main.cc index 7338e578..89731ec7 100644 --- a/src/main.cc +++ b/src/main.cc @@ -73,31 +73,6 @@ main(int argc, char *argv[]) QSettings settings; - QFile stylefile; - - if (!settings.contains("user/theme")) - settings.setValue("user/theme", "light"); - - const auto theme = settings.value("user/theme", "light").toString(); - - QPalette pal; - - if (theme == "light") { - stylefile.setFileName(":/styles/styles/nheko.qss"); - pal.setColor(QPalette::Link, QColor("#333")); - } else if (theme == "dark") { - stylefile.setFileName(":/styles/styles/nheko-dark.qss"); - pal.setColor(QPalette::Link, QColor("#d7d9dc")); - } else { - stylefile.setFileName(":/styles/styles/system.qss"); - } - - app.setPalette(pal); - - stylefile.open(QFile::ReadOnly); - QString stylesheet = QString(stylefile.readAll()); - - app.setStyleSheet(stylesheet); // Set the default if a value has not been set. if (settings.value("font/size").toInt() == 0) settings.setValue("font/size", 12); |