4#include <QtQuickTemplates2/private/qquicktheme_p.h>
5#include <QtQuick/private/qquickpalette_p.h>
6#include <QtGui/private/qguiapplication_p.h>
7#include <QtGui/qpa/qplatformtheme.h>
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
53 case QQStyleKitReader::ControlType::AbstractButton:
54 case QQStyleKitReader::ControlType::Button:
55 case QQStyleKitReader::ControlType::DelayButton:
56 case QQStyleKitReader::ControlType::FlatButton:
57 case QQStyleKitReader::ControlType::RoundButton:
58 return QQuickTheme::Button;
59 case QQStyleKitReader::ControlType::CheckBox:
60 return QQuickTheme::CheckBox;
61 case QQStyleKitReader::ControlType::CheckDelegate:
62 case QQStyleKitReader::ControlType::RadioDelegate:
63 case QQStyleKitReader::ControlType::SwipeDelegate:
64 case QQStyleKitReader::ControlType::SwitchDelegate:
65 return QQuickTheme::ListView;
66 case QQStyleKitReader::ControlType::ComboBox:
67 return QQuickTheme::ComboBox;
68 case QQStyleKitReader::ControlType::GroupBox:
69 return QQuickTheme::GroupBox;
70 case QQStyleKitReader::ControlType::ItemDelegate:
71 return QQuickTheme::ItemView;
72 case QQStyleKitReader::ControlType::Label:
73 return QQuickTheme::Label;
74 case QQStyleKitReader::ControlType::MenuBar:
75 case QQStyleKitReader::ControlType::MenuBarItem:
76 return QQuickTheme::MenuBar;
77 case QQStyleKitReader::ControlType::Menu:
78 case QQStyleKitReader::ControlType::MenuItem:
79 case QQStyleKitReader::ControlType::MenuSeparator:
80 return QQuickTheme::Menu;
81 case QQStyleKitReader::ControlType::RadioButton:
82 return QQuickTheme::RadioButton;
83 case QQStyleKitReader::ControlType::SpinBox:
84 return QQuickTheme::SpinBox;
85 case QQStyleKitReader::ControlType::SwitchControl:
86 return QQuickTheme::Switch;
87 case QQStyleKitReader::ControlType::TabBar:
88 case QQStyleKitReader::ControlType::TabButton:
89 return QQuickTheme::TabBar;
90 case QQStyleKitReader::ControlType::TextArea:
91 return QQuickTheme::TextArea;
92 case QQStyleKitReader::ControlType::TextInput:
93 case QQStyleKitReader::ControlType::TextField:
94 return QQuickTheme::TextField;
95 case QQStyleKitReader::ControlType::ToolBar:
96 case QQStyleKitReader::ControlType::ToolButton:
97 case QQStyleKitReader::ControlType::ToolSeparator:
98 return QQuickTheme::ToolBar;
99 case QQStyleKitReader::ControlType::ToolTip:
100 return QQuickTheme::ToolTip;
101 case QQStyleKitReader::ControlType::Tumbler:
102 return QQuickTheme::Tumbler;
104 return QQuickTheme::System;
116 QObject *parentObj = parent();
119 Q_ASSERT(qobject_cast<QQStyleKitStyle *>(parentObj));
120 return static_cast<QQStyleKitStyle *>(parentObj);
125 const QQuickTheme::Scope scope = scopeForType(type);
126 return m_effectivePalettes[
int(scope)];
131 const QQuickTheme::Scope scope = scopeForType(type);
132 return m_effectiveFonts[
int(scope)];
142 QVector<
const QQStyleKitPalette *> fbChain;
143 for (
auto *fb = pals; fb; fb = fb->fallbackPalette())
146 auto resolveFromPaletteChain = [&](QQuickTheme::Scope scope,
147 QQuickPalette* (QQStyleKitPalette::*getter)()
const) -> QPalette
152 for (
int i = fbChain.size() - 1; i >= 0; --i) {
153 const QQStyleKitPalette *fb = fbChain[i];
155 if (scope != QQuickTheme::System && fb->isSet(QQuickTheme::System)) {
156 if (
auto *sys = fb->system())
157 result = sys->toQPalette().resolve(result);
159 if (fb->isSet(scope)) {
160 if (
auto *p = (fb->*getter)())
161 result = p->toQPalette().resolve(result);
168 auto setResolved = [&](QQuickPalette* (QQStyleKitPalette::*getter)()
const,
169 QQuickTheme::Scope scope)
171 m_effectivePalettes[
int(scope)] = resolveFromPaletteChain(scope, getter);
191 const QQStyleKitFont *fonts =
this->fonts();
196 QVector<
const QQStyleKitFont *> fbChain;
197 for (
auto *fb = fonts; fb; fb = fb->fallbackFont())
203 auto merge = [](
const QFont &a,
const QFont &b) {
204 QFont merged = a.resolve(b);
205 merged.setResolveMask(b.resolveMask() | a.resolveMask());
209 auto resolveFromFontChain = [&](QQuickTheme::Scope scope) -> QFont
214 for (
int i = fbChain.size() - 1; i >= 0; --i) {
215 const QQStyleKitFont *fb = fbChain[i];
217 if (scope != QQuickTheme::System && fb->isSet(QQuickTheme::System)) {
218 result = merge(fb->fontForScope(QQuickTheme::System), result);
220 if (fb->isSet(scope)) {
221 result = merge(fb->fontForScope(scope), result);
228 for (
int i = 0; i < NScopes; ++i) {
229 const QQuickTheme::Scope scope =
static_cast<QQuickTheme::Scope>(i);
230 m_effectiveFonts[i] = resolveFromFontChain(scope);
242#include "moc_qqstylekittheme_p.cpp"
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
QQuickPalette * groupBox() const
QQuickPalette * checkBox() const
QQuickPalette * toolBar() const
QQuickPalette * textField() const
QQuickPalette * spinBox() const
QQuickPalette * system() const
QQuickPalette * comboBox() const
QQuickPalette * itemDelegate() const
QQuickPalette * button() const
QQuickPalette * radioButton() const
QQuickPalette * textArea() const
QQuickPalette * tabBar() const
QQuickPalette * label() const
QQStyleKitPalette * palettes()
QQStyleKitStyle * style() const
QFont fontForControlType(QQStyleKitExtendableControlType type) const
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
QPalette paletteForControlType(QQStyleKitExtendableControlType type) const
Combined button and popup list for selecting options.
static QT_BEGIN_NAMESPACE QQuickTheme::Scope scopeForType(QQStyleKitExtendableControlType type)
\qmltype Theme \inqmlmodule Qt.labs.StyleKit \inherits AbstractStyle