mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Extract system dark mode from QPalette
This commit is contained in:
parent
39b90092ff
commit
8534cf3756
1 changed files with 31 additions and 14 deletions
|
@ -526,24 +526,41 @@ void ChatBackground::start() {
|
||||||
checkUploadWallPaper();
|
checkUploadWallPaper();
|
||||||
}, _lifetime);
|
}, _lifetime);
|
||||||
|
|
||||||
|
rpl::combine(
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|
||||||
rpl::single(
|
rpl::single(
|
||||||
QGuiApplication::styleHints()->colorScheme()
|
QGuiApplication::styleHints()->colorScheme()
|
||||||
) | rpl::then(
|
) | rpl::then(
|
||||||
base::qt_signal_producer(
|
base::qt_signal_producer(
|
||||||
QGuiApplication::styleHints(),
|
QGuiApplication::styleHints(),
|
||||||
&QStyleHints::colorSchemeChanged
|
&QStyleHints::colorSchemeChanged
|
||||||
|
)
|
||||||
|
),
|
||||||
|
#endif // Qt >= 6.5.0
|
||||||
|
rpl::single(
|
||||||
|
QGuiApplication::palette()
|
||||||
|
) | rpl::then(
|
||||||
|
base::qt_signal_producer(
|
||||||
|
qApp,
|
||||||
|
&QGuiApplication::paletteChanged
|
||||||
|
)
|
||||||
)
|
)
|
||||||
) | rpl::map([](Qt::ColorScheme colorScheme) {
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|
||||||
return colorScheme == Qt::ColorScheme::Unknown
|
) | rpl::map([](Qt::ColorScheme colorScheme, const QPalette &palette) {
|
||||||
? std::nullopt
|
return colorScheme != Qt::ColorScheme::Unknown
|
||||||
: std::make_optional(colorScheme == Qt::ColorScheme::Dark);
|
? colorScheme == Qt::ColorScheme::Dark
|
||||||
}) | rpl::start_with_next([](std::optional<bool> dark) {
|
#else // Qt >= 6.5.0
|
||||||
|
) | rpl::map([](const QPalette &palette) {
|
||||||
|
const auto dark = Platform::IsDarkMode();
|
||||||
|
return dark
|
||||||
|
? *dark
|
||||||
|
#endif // Qt < 6.5.0
|
||||||
|
: palette.windowText().color().lightness()
|
||||||
|
> palette.window().color().lightness();
|
||||||
|
}) | rpl::distinct_until_changed(
|
||||||
|
) | rpl::start_with_next([](bool dark) {
|
||||||
Core::App().settings().setSystemDarkMode(dark);
|
Core::App().settings().setSystemDarkMode(dark);
|
||||||
}, _lifetime);
|
}, _lifetime);
|
||||||
#else // Qt >= 6.5.0
|
|
||||||
Core::App().settings().setSystemDarkMode(Platform::IsDarkMode());
|
|
||||||
#endif // Qt < 6.5.0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatBackground::refreshThemeWatcher() {
|
void ChatBackground::refreshThemeWatcher() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue