aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquicktheme.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-05-16 13:50:35 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-05-22 14:20:49 +0000
commitf40dc11886e8130bad5771ed80920e6e72dfc09e (patch)
treea5395a9a7efd47e293901f1d7419a1140806c4d4 /src/quicktemplates2/qquicktheme.cpp
parent9338e1285e47060f3998ac19d047e93a11252ffb (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.cpp46
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