diff --git a/common/themes/theme_manager.cpp b/common/themes/theme_manager.cpp index 081a7147..e39554be 100644 --- a/common/themes/theme_manager.cpp +++ b/common/themes/theme_manager.cpp @@ -4,6 +4,7 @@ #include "theme_factory.h" #include +#include #include // TODO: add API to force color scheme //styleHints->setColorScheme(Qt::ColorScheme::Dark); @@ -20,6 +21,8 @@ ThemeManager &ThemeManager::instance() void ThemeManager::initialize() { + // QStyleHints::colorScheme is only 6.5+ +#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) auto *styleHints = qGuiApp->styleHints(); auto colorScheme = styleHints->colorScheme(); @@ -32,6 +35,15 @@ void ThemeManager::initialize() applyColorScheme(colorScheme); connect(styleHints, &QStyleHints::colorSchemeChanged, this, applyColorScheme, Qt::QueuedConnection); +#else + auto applyPalette = [this](const QPalette &palette) { + setTheme(palette.color(QPalette::Window).lightness() < 128 ? ThemeId::Dark : ThemeId::Light); + }; + + applyPalette(qGuiApp->palette()); + + connect(qGuiApp, &QGuiApplication::paletteChanged, this, applyPalette, Qt::QueuedConnection); +#endif } void ThemeManager::setTheme(ThemeId themeId)