MCPcopy Create free account
hub / github.com/YACReader/yacreader / resolveTheme

Method resolveTheme

common/themes/theme_manager.cpp:68–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68void ThemeManager::resolveTheme()
69{
70 if (!config)
71 return;
72
73 const auto &sel = config->selection();
74 const ThemeVariant systemVariant = themeVariantFromColorScheme(qGuiApp->styleHints()->colorScheme());
75
76 QString id;
77 ThemeVariant fallbackVariant;
78 switch (sel.mode) {
79 case ThemeMode::FollowSystem: {
80 const bool isDark = (systemVariant == ThemeVariant::Dark);
81 id = isDark ? sel.darkThemeId : sel.lightThemeId;
82 fallbackVariant = systemVariant;
83 break;
84 }
85 case ThemeMode::Light:
86 id = sel.lightThemeId;
87 fallbackVariant = ThemeVariant::Light;
88 break;
89 case ThemeMode::Dark:
90 id = sel.darkThemeId;
91 fallbackVariant = ThemeVariant::Dark;
92 break;
93 case ThemeMode::ForcedTheme:
94 id = sel.fixedThemeId;
95 fallbackVariant = systemVariant;
96 break;
97 }
98
99 const Theme theme = themeFromId(id, fallbackVariant);
100
101 // Sync Qt's application-level color scheme so native widgets (menus, scrollbars,
102 // standard dialogs) use the correct palette before themeChanged() is emitted.
103#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
104 Qt::ColorScheme scheme;
105 switch (sel.mode) {
106 case ThemeMode::FollowSystem:
107 scheme = Qt::ColorScheme::Unknown; // delegate to OS
108 break;
109 case ThemeMode::Light:
110 scheme = Qt::ColorScheme::Light;
111 break;
112 case ThemeMode::Dark:
113 scheme = Qt::ColorScheme::Dark;
114 break;
115 case ThemeMode::ForcedTheme:
116 scheme = (theme.meta.variant == ThemeVariant::Dark)
117 ? Qt::ColorScheme::Dark
118 : Qt::ColorScheme::Light;
119 break;
120 }
121 qGuiApp->styleHints()->setColorScheme(scheme);
122#endif
123
124 setTheme(theme);
125}

Callers

nothing calls this directly

Calls 2

selectionMethod · 0.80

Tested by

no test coverage detected