diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-12-03 13:23:27 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-03 17:18:26 +0000 |
commit | e3adcf27372e571f9ca032c736e2bb40a5346d49 (patch) | |
tree | a3a3e025d4252967a75a4cd2b654617458973831 /src/templates/qquickapplicationwindow.cpp | |
parent | c09b3365feab8434ffd45ad5d9882142ce57c830 (diff) |
QQuickApplicationWindow: add font property
Change-Id: I6f946994f789704aa2efa94aaea0129d0d73d005
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickapplicationwindow.cpp')
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index 2c4cd7c9..ebbd0808 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -36,6 +36,7 @@ #include "qquickapplicationwindow_p.h" #include "qquickoverlay_p.h" +#include "qquickcontrol_p_p.h" #include <QtCore/private/qobject_p.h> #include <QtQuick/private/qquickitem_p.h> @@ -79,11 +80,20 @@ public: void itemImplicitWidthChanged(QQuickItem *item) Q_DECL_OVERRIDE; void itemImplicitHeightChanged(QQuickItem *item) Q_DECL_OVERRIDE; + void updateFont(const QFont &); + inline void setFont_helper(const QFont &f) { + if (font.resolve() == f.resolve() && font == f) + return; + updateFont(f); + } + void resolveFont(); + bool complete; QQuickItem *contentItem; QQuickItem *header; QQuickItem *footer; QQuickOverlay *overlay; + QFont font; QQuickApplicationWindow *q_ptr; }; @@ -241,6 +251,48 @@ QQuickItem *QQuickApplicationWindow::overlay() const return d->overlay; } +/*! + \qmlproperty font Qt.labs.controls::ApplicationWindow::font + + This property holds the font currently set for the window. +*/ +QFont QQuickApplicationWindow::font() const +{ + Q_D(const QQuickApplicationWindow); + return d->font; +} + +void QQuickApplicationWindow::setFont(const QFont &f) +{ + Q_D(QQuickApplicationWindow); + if (d->font == f) + return; + + QFont resolvedFont = f.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont)); + d->setFont_helper(resolvedFont); +} + +void QQuickApplicationWindow::resetFont() +{ + setFont(QFont()); +} + +void QQuickApplicationWindowPrivate::resolveFont() +{ + QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont)); + setFont_helper(resolvedFont); +} + +void QQuickApplicationWindowPrivate::updateFont(const QFont &f) +{ + Q_Q(QQuickApplicationWindow); + font = f; + + QQuickControlPrivate::updateFontRecur(q->contentItem(), f); + + emit q->fontChanged(); +} + QQuickApplicationWindowAttached *QQuickApplicationWindow::qmlAttachedProperties(QObject *object) { return new QQuickApplicationWindowAttached(object); |