Add sync with system toggle switch and remove the deprecated warning.

This commit is contained in:
Mentalflow
2023-04-19 22:27:27 +08:00
parent 59dacd8fae
commit 420a9b2bbb
6 changed files with 61 additions and 1 deletions

View File

@ -21,4 +21,25 @@ FluTheme::FluTheme(QObject *parent)
textSize(13);
nativeText(false);
frameless(true);
if (follow_system()){dark(isDark());}
(qobject_cast<QGuiApplication *>(QCoreApplication::instance()))->installEventFilter(this);
}
bool FluTheme::eventFilter(QObject *obj, QEvent *event)
{
Q_UNUSED(obj);
if (event->type() == QEvent::ApplicationPaletteChange)
{
if (follow_system()){dark(isDark());}
event->accept();
return true;
}
return false;
}
bool FluTheme::isDark()
{
QPalette palette = (qobject_cast<QGuiApplication *>(QCoreApplication::instance()))->palette();
QColor color = palette.color(QPalette::Window).rgb();
return !(color.red() * 0.2126 + color.green() * 0.7152 + color.blue() * 0.0722 > 255 / 2);
}

View File

@ -11,6 +11,7 @@ class FluTheme : public QObject
Q_PROPERTY_AUTO(FluColorSet*,primaryColor)
Q_PROPERTY_AUTO(bool,frameless);
Q_PROPERTY_AUTO(bool,dark);
Q_PROPERTY_AUTO(bool,follow_system);
Q_PROPERTY_AUTO(bool,nativeText);
Q_PROPERTY_AUTO(int,textSize);
public:
@ -18,7 +19,8 @@ public:
static FluTheme *getInstance();
private:
static FluTheme* m_instance;
bool eventFilter(QObject *obj, QEvent *event);
bool isDark();
};
#endif // FLUTHEME_H