diff options
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; }; |