summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-25 22:47:06 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-25 22:47:06 +0200
commit0dad2567434768c5a3d276678e5222e16526dc47 (patch)
tree44cefc95582db7e8c763134aa636bb38af4ac1a9 /src
parent54cf3418bc323b96b78e944c16f34082d5c2ef89 (diff)
Reload theme without restart (#137)
Diffstat (limited to 'src')
-rw-r--r--src/UserSettingsPage.cc42
-rw-r--r--src/main.cc25
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);