diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-05-16 13:50:35 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-05-22 14:20:49 +0000 |
commit | f40dc11886e8130bad5771ed80920e6e72dfc09e (patch) | |
tree | a5395a9a7efd47e293901f1d7419a1140806c4d4 /src/quicktemplates2 | |
parent | 9338e1285e47060f3998ac19d047e93a11252ffb (diff) |
QQuickTheme: add setters to make getters non-virtual
This allows us to add more themable attributes (on the side of fonts
and palettes) after the QQuickTheme API has been made public, because
it won't require adding virtuals. Only the resolve() method is virtual.
Task-number: QTBUG-67062
Change-Id: I6a5cc8d15aeaa5a9a0fe9b6d2591077f8822daac
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquicktheme.cpp | 46 | ||||
-rw-r--r-- | src/quicktemplates2/qquicktheme_p.h | 7 | ||||
-rw-r--r-- | src/quicktemplates2/qquicktheme_p_p.h | 7 |
3 files changed, 29 insertions, 31 deletions
diff --git a/src/quicktemplates2/qquicktheme.cpp b/src/quicktemplates2/qquicktheme.cpp index bfa34001..45c3e81a 100644 --- a/src/quicktemplates2/qquicktheme.cpp +++ b/src/quicktemplates2/qquicktheme.cpp @@ -97,23 +97,21 @@ static QPlatformTheme::Palette platformPalette(QQuickTheme::Scope scope) const QFont *QQuickThemePrivate::resolveThemeFont(QQuickTheme::Scope scope) { Q_Q(QQuickTheme); - if (!hasResolvedFonts) { - q->resolveFonts(defaultFont ? *defaultFont : QFont()); - hasResolvedFonts = true; - defaultFont.reset(); + if (!hasResolved) { + q->resolve(); + hasResolved = true; } - return q->font(scope); + return fonts[scope].data(); } const QPalette *QQuickThemePrivate::resolveThemePalette(QQuickTheme::Scope scope) { Q_Q(QQuickTheme); - if (!hasResolvedPalettes) { - q->resolvePalettes(defaultPalette ? *defaultPalette : QPalette()); - hasResolvedPalettes = true; - defaultPalette.reset(); + if (!hasResolved) { + q->resolve(); + hasResolved = true; } - return q->palette(scope); + return palettes[scope].data(); } QQuickTheme::QQuickTheme() @@ -146,6 +144,9 @@ QFont QQuickTheme::themeFont(Scope scope) return f; } + if (scope != System) + return themeFont(System); + return QFont(); } @@ -164,31 +165,26 @@ QPalette QQuickTheme::themePalette(Scope scope) return f; } - return QPalette(); -} + if (scope != System) + return themePalette(System); -const QFont *QQuickTheme::font(Scope scope) const -{ - Q_D(const QQuickTheme); - Q_UNUSED(scope) - return d->defaultFont.data(); + return QPalette(); } -const QPalette *QQuickTheme::palette(Scope scope) const +void QQuickTheme::setFont(Scope scope, const QFont &font) { - Q_D(const QQuickTheme); - Q_UNUSED(scope) - return d->defaultPalette.data(); + Q_D(QQuickTheme); + d->fonts[scope] = QSharedPointer<QFont>::create(d->defaultFont ? d->defaultFont->resolve(font) : font); } -void QQuickTheme::resolveFonts(const QFont &defaultFont) +void QQuickTheme::setPalette(Scope scope, const QPalette &palette) { - Q_UNUSED(defaultFont) + Q_D(QQuickTheme); + d->palettes[scope] = QSharedPointer<QPalette>::create(d->defaultPalette ? d->defaultPalette->resolve(palette) : palette); } -void QQuickTheme::resolvePalettes(const QPalette &defaultPalette) +void QQuickTheme::resolve() { - Q_UNUSED(defaultPalette) } QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktheme_p.h b/src/quicktemplates2/qquicktheme_p.h index eb10d766..47f9a166 100644 --- a/src/quicktemplates2/qquicktheme_p.h +++ b/src/quicktemplates2/qquicktheme_p.h @@ -91,11 +91,10 @@ public: static QPalette themePalette(Scope scope); protected: - virtual const QFont *font(Scope scope) const; - virtual const QPalette *palette(Scope scope) const; + void setFont(Scope scope, const QFont &font); + void setPalette(Scope scope, const QPalette &palette); - virtual void resolveFonts(const QFont &defaultFont); - virtual void resolvePalettes(const QPalette &defaultPalette); + virtual void resolve(); private: Q_DISABLE_COPY(QQuickTheme) diff --git a/src/quicktemplates2/qquicktheme_p_p.h b/src/quicktemplates2/qquicktheme_p_p.h index e43c8034..6a32440f 100644 --- a/src/quicktemplates2/qquicktheme_p_p.h +++ b/src/quicktemplates2/qquicktheme_p_p.h @@ -67,10 +67,13 @@ public: static QScopedPointer<QQuickTheme> instance; - bool hasResolvedFonts = false; - bool hasResolvedPalettes = false; + static const int NScopes = QQuickTheme::Tumbler + 1; + + bool hasResolved = false; QScopedPointer<const QFont> defaultFont; QScopedPointer<const QPalette> defaultPalette; + QSharedPointer<QFont> fonts[NScopes]; + QSharedPointer<QPalette> palettes[NScopes]; QQuickTheme *q_ptr = nullptr; }; |