diff --git a/include/UserSettingsPage.h b/include/UserSettingsPage.h
index 9e47254..99a149c 100644
--- a/include/UserSettingsPage.h
+++ b/include/UserSettingsPage.h
@@ -36,8 +36,9 @@ public:
void save();
void load();
- void setTheme(QString theme) { theme_ = theme; }
- void setTray(bool state) { isTrayEnabled_ = state; }
+ void applyTheme();
+ void setTheme(QString theme);
+ void setTray(bool state);
QString theme() const { return !theme_.isEmpty() ? theme_ : "light"; }
bool isTrayEnabled() const { return isTrayEnabled_; }
diff --git a/src/UserSettingsPage.cc b/src/UserSettingsPage.cc
index 79f8f7b..a5851c5 100644
--- a/src/UserSettingsPage.cc
+++ b/src/UserSettingsPage.cc
@@ -15,6 +15,7 @@
* along with this program. If not, see .
*/
+#include
#include
#include
#include
@@ -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::instance())->setStyleSheet(stylesheet);
}
void
diff --git a/src/main.cc b/src/main.cc
index 7338e57..89731ec 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);