aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-12-01 12:08:58 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-12-01 15:04:20 +0000
commit209fea864e823323af3cd43456737e08168d4a9d (patch)
tree9ee0c6e4db703579f6ced97b45a7160f4ed43c7c
parent36a40b1edfcb493f108d1efd3fd6e7f48a4a1bad (diff)
Added defaultFont() for QQuickControl and etc
The map between controls and QPlatformTheme::Font: * QQuickControl and etc: SystemFont * QQuickButton: PushButtonFont * QQuickToolButton: ToolButtonFont * QQuickCheckBox: CheckBoxFont * QQuickRadioButton: RadioButtonFont * QQuickLabel: LabelFont * QQuickGroupBox: MdiSubWindowTitleFont (tmp) * QQuickTabButton: DockWidgetTitleFont (tmp) Change-Id: If8c0239ece673941164fd97f52240ef27d97b950 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r--src/templates/qquickbutton.cpp7
-rw-r--r--src/templates/qquickbutton_p.h3
-rw-r--r--src/templates/qquickcheckbox.cpp7
-rw-r--r--src/templates/qquickcheckbox_p.h2
-rw-r--r--src/templates/qquickcontrol.cpp27
-rw-r--r--src/templates/qquickcontrol_p.h2
-rw-r--r--src/templates/qquickcontrol_p_p.h4
-rw-r--r--src/templates/qquickgroupbox.cpp7
-rw-r--r--src/templates/qquickgroupbox_p.h3
-rw-r--r--src/templates/qquickradiobutton.cpp8
-rw-r--r--src/templates/qquickradiobutton_p.h2
-rw-r--r--src/templates/qquicktabbutton.cpp8
-rw-r--r--src/templates/qquicktabbutton_p.h2
-rw-r--r--src/templates/qquicktoolbutton.cpp8
-rw-r--r--src/templates/qquicktoolbutton_p.h3
15 files changed, 92 insertions, 1 deletions
diff --git a/src/templates/qquickbutton.cpp b/src/templates/qquickbutton.cpp
index 7ec87cbf..4f5df5fa 100644
--- a/src/templates/qquickbutton.cpp
+++ b/src/templates/qquickbutton.cpp
@@ -37,6 +37,8 @@
#include "qquickbutton_p.h"
#include "qquickabstractbutton_p_p.h"
+#include <QtGui/qpa/qplatformtheme.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -124,4 +126,9 @@ void QQuickButton::setHighlighted(bool highlighted)
}
}
+QFont QQuickButton::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::PushButtonFont);
+}
+
QT_END_NAMESPACE
diff --git a/src/templates/qquickbutton_p.h b/src/templates/qquickbutton_p.h
index 7ca0252b..5b9c7df5 100644
--- a/src/templates/qquickbutton_p.h
+++ b/src/templates/qquickbutton_p.h
@@ -68,6 +68,9 @@ public:
Q_SIGNALS:
void highlightedChanged();
+protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
+
private:
Q_DISABLE_COPY(QQuickButton)
Q_DECLARE_PRIVATE(QQuickButton)
diff --git a/src/templates/qquickcheckbox.cpp b/src/templates/qquickcheckbox.cpp
index 5cef0c47..9a416419 100644
--- a/src/templates/qquickcheckbox.cpp
+++ b/src/templates/qquickcheckbox.cpp
@@ -37,6 +37,8 @@
#include "qquickcheckbox_p.h"
#include "qquickabstractbutton_p_p.h"
+#include <QtGui/qpa/qplatformtheme.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -156,6 +158,11 @@ void QQuickCheckBox::setCheckState(Qt::CheckState state)
}
}
+QFont QQuickCheckBox::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::CheckBoxFont);
+}
+
void QQuickCheckBox::checkStateSet()
{
setCheckState(isChecked() ? Qt::Checked : Qt::Unchecked);
diff --git a/src/templates/qquickcheckbox_p.h b/src/templates/qquickcheckbox_p.h
index f347ef82..5cf97476 100644
--- a/src/templates/qquickcheckbox_p.h
+++ b/src/templates/qquickcheckbox_p.h
@@ -74,6 +74,8 @@ Q_SIGNALS:
void checkStateChanged();
protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
+
void checkStateSet() Q_DECL_OVERRIDE;
void nextCheckState() Q_DECL_OVERRIDE;
diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp
index 5f5e105e..0de24493 100644
--- a/src/templates/qquickcontrol.cpp
+++ b/src/templates/qquickcontrol.cpp
@@ -45,6 +45,9 @@
#include "qquicktextfield_p.h"
#include "qquicktextfield_p_p.h"
+#include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/qpa/qplatformtheme.h>
+
#ifndef QT_NO_ACCESSIBILITY
#include <QtQuick/private/qquickaccessibleattached_p.h>
#endif
@@ -206,7 +209,14 @@ void QQuickControl::accessibilityActiveChanged(bool active)
*/
QFont QQuickControlPrivate::naturalControlFont(const QQuickItem *q)
{
- QFont naturalFont = QGuiApplication::font();
+ QFont naturalFont = themeFont(QPlatformTheme::SystemFont);
+ if (const QQuickControl *qc = qobject_cast<const QQuickControl *>(q)) {
+ naturalFont = qc->defaultFont();
+ } else if (const QQuickLabel *label = qobject_cast<const QQuickLabel *>(q)) {
+ Q_UNUSED(label);
+ naturalFont = themeFont(QPlatformTheme::LabelFont);
+ }
+
QQuickItem *p = q->parentItem();
while (p) {
if (QQuickControl *qc = qobject_cast<QQuickControl *>(p)) {
@@ -221,6 +231,16 @@ QFont QQuickControlPrivate::naturalControlFont(const QQuickItem *q)
return naturalFont;
}
+QFont QQuickControlPrivate::themeFont(QPlatformTheme::Font type)
+{
+ if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
+ if (const QFont *font = theme->font(type))
+ return *font;
+ }
+
+ return QGuiApplication::font();
+}
+
/*!
\internal
@@ -710,6 +730,11 @@ void QQuickControl::componentComplete()
#endif
}
+QFont QQuickControl::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+}
+
void QQuickControl::mousePressEvent(QMouseEvent *event)
{
event->accept();
diff --git a/src/templates/qquickcontrol_p.h b/src/templates/qquickcontrol_p.h
index 82b91343..1e3b6830 100644
--- a/src/templates/qquickcontrol_p.h
+++ b/src/templates/qquickcontrol_p.h
@@ -136,6 +136,8 @@ Q_SIGNALS:
void contentItemChanged();
protected:
+ virtual QFont defaultFont() const;
+
QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent);
void componentComplete() Q_DECL_OVERRIDE;
diff --git a/src/templates/qquickcontrol_p_p.h b/src/templates/qquickcontrol_p_p.h
index 126eab60..ab185952 100644
--- a/src/templates/qquickcontrol_p_p.h
+++ b/src/templates/qquickcontrol_p_p.h
@@ -48,7 +48,10 @@
// We mean it.
//
+#include "qquickcontrol_p.h"
+
#include <QtQuick/private/qquickitem_p.h>
+#include <qpa/qplatformtheme.h>
#ifndef QT_NO_ACCESSIBILITY
#include <QtGui/qaccessible.h>
@@ -98,6 +101,7 @@ public:
}
void resolveFont();
static QFont naturalControlFont(const QQuickItem *);
+ static QFont themeFont(QPlatformTheme::Font type);
QFont font;
bool hasTopPadding;
diff --git a/src/templates/qquickgroupbox.cpp b/src/templates/qquickgroupbox.cpp
index 1f1e5f2f..2f120879 100644
--- a/src/templates/qquickgroupbox.cpp
+++ b/src/templates/qquickgroupbox.cpp
@@ -37,6 +37,8 @@
#include "qquickgroupbox_p.h"
#include "qquickframe_p_p.h"
+#include <QtGui/qpa/qplatformtheme.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -122,4 +124,9 @@ void QQuickGroupBox::setLabel(QQuickItem *label)
}
}
+QFont QQuickGroupBox::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::MdiSubWindowTitleFont); // tmp
+}
+
QT_END_NAMESPACE
diff --git a/src/templates/qquickgroupbox_p.h b/src/templates/qquickgroupbox_p.h
index dfaa6de0..5dcfe971 100644
--- a/src/templates/qquickgroupbox_p.h
+++ b/src/templates/qquickgroupbox_p.h
@@ -73,6 +73,9 @@ Q_SIGNALS:
void titleChanged();
void labelChanged();
+protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
+
private:
Q_DISABLE_COPY(QQuickGroupBox)
Q_DECLARE_PRIVATE(QQuickGroupBox)
diff --git a/src/templates/qquickradiobutton.cpp b/src/templates/qquickradiobutton.cpp
index 08244d82..9aca5808 100644
--- a/src/templates/qquickradiobutton.cpp
+++ b/src/templates/qquickradiobutton.cpp
@@ -35,6 +35,9 @@
****************************************************************************/
#include "qquickradiobutton_p.h"
+#include "qquickcontrol_p_p.h"
+
+#include <QtGui/qpa/qplatformtheme.h>
QT_BEGIN_NAMESPACE
@@ -91,6 +94,11 @@ QQuickRadioButton::QQuickRadioButton(QQuickItem *parent) :
setAutoExclusive(true);
}
+QFont QQuickRadioButton::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::RadioButtonFont);
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickRadioButton::accessibleRole() const
{
diff --git a/src/templates/qquickradiobutton_p.h b/src/templates/qquickradiobutton_p.h
index 87ac919b..1667de22 100644
--- a/src/templates/qquickradiobutton_p.h
+++ b/src/templates/qquickradiobutton_p.h
@@ -60,6 +60,8 @@ public:
explicit QQuickRadioButton(QQuickItem *parent = Q_NULLPTR);
protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
#endif
diff --git a/src/templates/qquicktabbutton.cpp b/src/templates/qquicktabbutton.cpp
index 23e8a221..07dc533c 100644
--- a/src/templates/qquicktabbutton.cpp
+++ b/src/templates/qquicktabbutton.cpp
@@ -35,6 +35,9 @@
****************************************************************************/
#include "qquicktabbutton_p.h"
+#include "qquickcontrol_p_p.h"
+
+#include <QtGui/qpa/qplatformtheme.h>
QT_BEGIN_NAMESPACE
@@ -62,6 +65,11 @@ QQuickTabButton::QQuickTabButton(QQuickItem *parent) :
setAutoExclusive(true);
}
+QFont QQuickTabButton::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::DockWidgetTitleFont); // tmp
+}
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role QQuickTabButton::accessibleRole() const
{
diff --git a/src/templates/qquicktabbutton_p.h b/src/templates/qquicktabbutton_p.h
index 820fa365..0170a2b0 100644
--- a/src/templates/qquicktabbutton_p.h
+++ b/src/templates/qquicktabbutton_p.h
@@ -60,6 +60,8 @@ public:
explicit QQuickTabButton(QQuickItem *parent = Q_NULLPTR);
protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
+
#ifndef QT_NO_ACCESSIBILITY
QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE;
#endif
diff --git a/src/templates/qquicktoolbutton.cpp b/src/templates/qquicktoolbutton.cpp
index 4de82403..3505346c 100644
--- a/src/templates/qquicktoolbutton.cpp
+++ b/src/templates/qquicktoolbutton.cpp
@@ -35,6 +35,9 @@
****************************************************************************/
#include "qquicktoolbutton_p.h"
+#include "qquickcontrol_p_p.h"
+
+#include <QtGui/qpa/qplatformtheme.h>
QT_BEGIN_NAMESPACE
@@ -78,4 +81,9 @@ QQuickToolButton::QQuickToolButton(QQuickItem *parent) :
{
}
+QFont QQuickToolButton::defaultFont() const
+{
+ return QQuickControlPrivate::themeFont(QPlatformTheme::ToolButtonFont);
+}
+
QT_END_NAMESPACE
diff --git a/src/templates/qquicktoolbutton_p.h b/src/templates/qquicktoolbutton_p.h
index e0e7892d..d3bb4fe7 100644
--- a/src/templates/qquicktoolbutton_p.h
+++ b/src/templates/qquicktoolbutton_p.h
@@ -58,6 +58,9 @@ class Q_LABSTEMPLATES_EXPORT QQuickToolButton : public QQuickButton
public:
explicit QQuickToolButton(QQuickItem *parent = Q_NULLPTR);
+
+protected:
+ QFont defaultFont() const Q_DECL_OVERRIDE;
};
Q_DECLARE_TYPEINFO(QQuickToolButton, Q_COMPLEX_TYPE);