Add sync with system toggle switch and remove the deprecated warning.
parent
59dacd8fae
commit
420a9b2bbb
|
@ -85,4 +85,38 @@ FluScrollablePage{
|
|||
|
||||
}
|
||||
|
||||
FluArea{
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: 20
|
||||
height: 80
|
||||
paddings: 10
|
||||
|
||||
ColumnLayout{
|
||||
spacing: 10
|
||||
anchors{
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
}
|
||||
|
||||
FluText{
|
||||
text:lang.dark_mode
|
||||
fontStyle: FluText.BodyStrong
|
||||
Layout.bottomMargin: 4
|
||||
}
|
||||
|
||||
Flow{
|
||||
spacing: 5
|
||||
FluToggleSwitch{
|
||||
text:lang.sys_dark_mode
|
||||
selected:FluTheme.dark
|
||||
onClicked:{
|
||||
FluTheme.follow_system = true
|
||||
FluTheme.dark = FluTheme.follow_system
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ En::En(QObject *parent)
|
|||
theming("Theming");
|
||||
media("Media");
|
||||
dark_mode("Dark Mode");
|
||||
sys_dark_mode("Sync with system");
|
||||
search("Search");
|
||||
about("About");
|
||||
settings("Settings");
|
||||
|
|
|
@ -16,6 +16,7 @@ class Lang : public QObject
|
|||
Q_PROPERTY_AUTO(QString,theming);
|
||||
Q_PROPERTY_AUTO(QString,media);
|
||||
Q_PROPERTY_AUTO(QString,dark_mode);
|
||||
Q_PROPERTY_AUTO(QString,sys_dark_mode);
|
||||
Q_PROPERTY_AUTO(QString,search);
|
||||
Q_PROPERTY_AUTO(QString,about);
|
||||
Q_PROPERTY_AUTO(QString,settings);
|
||||
|
|
|
@ -13,6 +13,7 @@ Zh::Zh(QObject *parent)
|
|||
theming("主题");
|
||||
media("媒体");
|
||||
dark_mode("夜间模式");
|
||||
sys_dark_mode("跟随系统");
|
||||
search("查找");
|
||||
about("关于");
|
||||
settings("设置");
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue