aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r--src/quicktemplates2/qquicktheme.cpp46
-rw-r--r--src/quicktemplates2/qquicktheme_p.h7
-rw-r--r--src/quicktemplates2/qquicktheme_p_p.h7
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;
};