mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Reload theme without restart (#137)
This commit is contained in:
parent
54cf3418bc
commit
0dad256743
3 changed files with 44 additions and 28 deletions
|
@ -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_; }
|
||||
|
|
|
@ -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
|
||||
|
|
25
src/main.cc
25
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);
|
||||
|
|
Loading…
Reference in a new issue