From 41473eadd8cd1ba3c875b1784696bd243cef7712 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 9 Oct 2024 13:55:37 +0200 Subject: [PATCH] Utils: Let Themes define their default ToolbarStyle The upcoming themes were designed with the relaxed ToolbarStyle in mind. The default style is however ToolbarStyleCompact. This change allows themes to define their individual default toolbar style, analogous to the default text editor scheme. Change-Id: I31383e37134c5591c18be536f9133f97323f8456 Reviewed-by: Artem Sokolovskii Reviewed-by: Marcus Tillmanns --- src/libs/utils/stylehelper.cpp | 7 ++++++- src/libs/utils/stylehelper.h | 2 +- src/libs/utils/theme/theme.cpp | 10 ++++++++++ src/libs/utils/theme/theme.h | 5 +++++ src/libs/utils/theme/theme_p.h | 5 +++++ src/plugins/coreplugin/generalsettings.cpp | 6 +++--- 6 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index a9327a663d9..12db1cbda69 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -38,7 +38,7 @@ static int range(float x, int min, int max) namespace Utils { -static StyleHelper::ToolbarStyle s_toolbarStyle = StyleHelper::defaultToolbarStyle; +static StyleHelper::ToolbarStyle s_toolbarStyle = StyleHelper::ToolbarStyle::Compact; // Invalid by default, setBaseColor needs to be called at least once static QColor s_baseColor; static QColor s_requestedBaseColor; @@ -95,6 +95,11 @@ StyleHelper::ToolbarStyle StyleHelper::toolbarStyle() return s_toolbarStyle; } +StyleHelper::ToolbarStyle StyleHelper::defaultToolbarStyle() +{ + return creatorTheme() ? creatorTheme()->defaultToolbarStyle() : ToolbarStyle::Compact; +} + QColor StyleHelper::notTooBrightHighlightColor() { QColor highlightColor = QApplication::palette().highlight().color(); diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index cb7775c1a64..d774caaae90 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -77,7 +77,6 @@ enum class ToolbarStyle { Compact, Relaxed, }; -constexpr ToolbarStyle defaultToolbarStyle = ToolbarStyle::Compact; // Keep in sync with: // SyleHelper::uiFontMetrics, ICore::uiConfigInformation, tst_manual_widgets_uifonts::main @@ -105,6 +104,7 @@ enum UiElement { QTCREATOR_UTILS_EXPORT int navigationWidgetHeight(); QTCREATOR_UTILS_EXPORT void setToolbarStyle(ToolbarStyle style); QTCREATOR_UTILS_EXPORT ToolbarStyle toolbarStyle(); +QTCREATOR_UTILS_EXPORT ToolbarStyle defaultToolbarStyle(); QTCREATOR_UTILS_EXPORT QPalette sidebarFontPalette(const QPalette &original); // This is our color table, all colors derive from baseColor diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index 3f3fa7370fa..c5b2665cc0c 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -6,6 +6,7 @@ #include "../hostosinfo.h" #include "../qtcassert.h" #include "filepath.h" +#include "stylehelper.h" #ifdef Q_OS_MACOS #import "theme_mac.h" #endif @@ -21,6 +22,7 @@ static Theme *m_creatorTheme = nullptr; static std::optional m_initialPalette; ThemePrivate::ThemePrivate() + : defaultToolbarStyle(StyleHelper::ToolbarStyle::Compact) { const QMetaObject &m = Theme::staticMetaObject; colors.resize (m.enumerator(m.indexOfEnumerator("Color")).keyCount()); @@ -130,6 +132,11 @@ QString Theme::defaultTextEditorColorScheme() const return d->defaultTextEditorColorScheme; } +StyleHelper::ToolbarStyle Theme::defaultToolbarStyle() const +{ + return d->defaultToolbarStyle; +} + QString Theme::id() const { return d->id; @@ -228,6 +235,9 @@ void Theme::readSettingsInternal(QSettings &settings) d->preferredStyles.removeAll(QString()); d->defaultTextEditorColorScheme = settings.value(QLatin1String("DefaultTextEditorColorScheme")).toString(); + d->defaultToolbarStyle = + settings.value(QLatin1String("DefaultToolbarStyle")).toString() == "Relaxed" + ? StyleHelper::ToolbarStyle::Relaxed : StyleHelper::ToolbarStyle::Compact; d->enforceAccentColorOnMacOS = settings.value("EnforceAccentColorOnMacOS").toString(); } diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index d1a358ad29a..a862e9bef04 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -18,6 +18,10 @@ QT_END_NAMESPACE namespace Utils { +namespace StyleHelper { +enum class ToolbarStyle; +} + class ThemePrivate; class QTCREATOR_UTILS_EXPORT Theme : public QObject @@ -530,6 +534,7 @@ public: QPalette palette() const; QStringList preferredStyles() const; QString defaultTextEditorColorScheme() const; + StyleHelper::ToolbarStyle defaultToolbarStyle() const; QString id() const; QString filePath() const; diff --git a/src/libs/utils/theme/theme_p.h b/src/libs/utils/theme/theme_p.h index 4c751264401..a82843758ae 100644 --- a/src/libs/utils/theme/theme_p.h +++ b/src/libs/utils/theme/theme_p.h @@ -12,6 +12,10 @@ namespace Utils { +namespace StyleHelper { +enum class ToolbarStyle; +} + class QTCREATOR_UTILS_EXPORT ThemePrivate { public: @@ -22,6 +26,7 @@ public: QString displayName; QStringList preferredStyles; QString defaultTextEditorColorScheme; + StyleHelper::ToolbarStyle defaultToolbarStyle; QString enforceAccentColorOnMacOS; QList > colors; QList imageFiles; diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index 8e42090b687..586d6a07bb6 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -306,7 +306,7 @@ void GeneralSettingsWidget::apply() if (const auto newStyle = m_toolbarStyleBox->currentData().value(); newStyle != StyleHelper::toolbarStyle()) { ICore::settings()->setValueWithDefault(settingsKeyToolbarStyle, int(newStyle), - int(StyleHelper::defaultToolbarStyle)); + int(StyleHelper::defaultToolbarStyle())); StyleHelper::setToolbarStyle(newStyle); QStyle *applicationStyle = QApplication::style(); for (QWidget *widget : QApplication::allWidgets()) @@ -383,11 +383,11 @@ void GeneralSettingsWidget::setCodecForLocale(const QByteArray &codec) StyleHelper::ToolbarStyle toolbarStylefromSettings() { if (!ExtensionSystem::PluginManager::instance()) // May happen in tests - return StyleHelper::defaultToolbarStyle; + return StyleHelper::defaultToolbarStyle(); return StyleHelper::ToolbarStyle( ICore::settings()->value(settingsKeyToolbarStyle, - int(StyleHelper::defaultToolbarStyle)).toInt()); + int(StyleHelper::defaultToolbarStyle())).toInt()); } void GeneralSettingsWidget::fillToolbarStyleBox() const