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/qquicktheme.cpp | |
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/qquicktheme.cpp')
-rw-r--r-- | src/quicktemplates2/qquicktheme.cpp | 46 |
1 files changed, 21 insertions, 25 deletions
diff --git a/src/quicktemplates2/qquicktheme.cpp b/src/quicktemplates2/qquicktheme.cpp index bfa3400149..45c3e81a95 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 |