MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / setTheme

Method setTheme

app/src/Misc/ThemeManager.cpp:276–336  ·  view source on GitHub ↗

* @brief Sets the current theme to the theme at the specified index. */

Source from the content-addressed store, hash-verified

274 * @brief Sets the current theme to the theme at the specified index.
275 */
276void Misc::ThemeManager::setTheme(const int index)
277{
278 int filteredIndex = index;
279 if (index < 0 || index >= m_availableThemes.count())
280 filteredIndex = 0;
281
282 m_theme = filteredIndex;
283 m_themeName = m_availableThemes.at(filteredIndex);
284 if (m_persistSettings)
285 m_settings.setValue("ApplicationThemeName", m_themeName);
286
287 if (m_themeName == QStringLiteral("System")) {
288 loadSystemTheme();
289 return;
290 }
291
292 m_applyingTheme = true;
293
294 auto data = m_themes.value(m_themeName);
295 m_colors = jsonObjectToVariantMap(data.value("colors").toObject());
296 m_widgetColors = extractWidgetColors(data.value("colors").toObject());
297 m_deviceColors = extractDeviceColors(data.value("colors").toObject());
298 m_parameters = jsonObjectToVariantMap(data.value("parameters").toObject());
299
300 m_palette.setColor(QPalette::Mid, getColor("mid"));
301 m_palette.setColor(QPalette::Dark, getColor("dark"));
302 m_palette.setColor(QPalette::Text, getColor("text"));
303 m_palette.setColor(QPalette::Base, getColor("base"));
304 m_palette.setColor(QPalette::Link, getColor("link"));
305 m_palette.setColor(QPalette::Light, getColor("light"));
306 m_palette.setColor(QPalette::Window, getColor("window"));
307 m_palette.setColor(QPalette::Shadow, getColor("shadow"));
308 m_palette.setColor(QPalette::Accent, getColor("accent"));
309 m_palette.setColor(QPalette::Button, getColor("button"));
310 m_palette.setColor(QPalette::Midlight, getColor("midlight"));
311 m_palette.setColor(QPalette::Highlight, getColor("highlight"));
312 m_palette.setColor(QPalette::WindowText, getColor("window_text"));
313 m_palette.setColor(QPalette::BrightText, getColor("bright_text"));
314 m_palette.setColor(QPalette::ButtonText, getColor("button_text"));
315 m_palette.setColor(QPalette::ToolTipBase, getColor("tooltip_base"));
316 m_palette.setColor(QPalette::ToolTipText, getColor("tooltip_text"));
317 m_palette.setColor(QPalette::LinkVisited, getColor("link_visited"));
318 m_palette.setColor(QPalette::AlternateBase, getColor("alternate_base"));
319 m_palette.setColor(QPalette::PlaceholderText, getColor("placeholder_text"));
320 m_palette.setColor(QPalette::HighlightedText, getColor("highlighted_text"));
321
322 Q_EMIT themeChanged();
323
324 const auto palette = m_palette;
325 const auto bg = getColor(QStringLiteral("base"));
326 const auto fg = getColor(QStringLiteral("text"));
327 QTimer::singleShot(0, this, [this, palette, bg, fg]() {
328 qApp->setPalette(palette);
329 if (fg.lightness() > bg.lightness())
330 qApp->styleHints()->setColorScheme(Qt::ColorScheme::Dark);
331 else
332 qApp->styleHints()->setColorScheme(Qt::ColorScheme::Light);
333

Callers 1

applyThemeOverrideMethod · 0.80

Calls 6

jsonObjectToVariantMapFunction · 0.85
extractWidgetColorsFunction · 0.85
extractDeviceColorsFunction · 0.85
countMethod · 0.45
valueMethod · 0.45
setColorMethod · 0.45

Tested by

no test coverage detected