1/****************************************************************************
2**
3** Copyright (C) 2017 The Qt Company Ltd.
4** Contact: http://www.qt.io/licensing/
5**
6** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL3$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPLv3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or later as published by the Free
28** Software Foundation and appearing in the file LICENSE.GPL included in
29** the packaging of this file. Please review the following information to
30** ensure the GNU General Public License version 2.0 requirements will be
31** met: http://www.gnu.org/licenses/gpl-2.0.html.
32**
33** $QT_END_LICENSE$
34**
35****************************************************************************/
36
37#include <QtQuickControls2/private/qquickstyleplugin_p.h>
38#include <QtQml/qqml.h>
39
40#include "qquickfusionbusyindicator_p.h"
41#include "qquickfusiondial_p.h"
42#include "qquickfusionknob_p.h"
43#include "qquickfusionstyle_p.h"
44#include "qquickfusiontheme_p.h"
45
46QT_BEGIN_NAMESPACE
47
48static QObject *styleSingleton(QQmlEngine *engine, QJSEngine *scriptEngine)
49{
50 Q_UNUSED(engine);
51 Q_UNUSED(scriptEngine);
52 return new QQuickFusionStyle;
53}
54
55class QtQuickControls2FusionStylePlugin: public QQuickStylePlugin
56{
57 Q_OBJECT
58 Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
59
60public:
61 QtQuickControls2FusionStylePlugin(QObject *parent = nullptr);
62
63 void registerTypes(const char *uri) override;
64
65 QString name() const override;
66 void initializeTheme(QQuickTheme *theme) override;
67};
68
69QtQuickControls2FusionStylePlugin::QtQuickControls2FusionStylePlugin(QObject *parent) : QQuickStylePlugin(parent)
70{
71}
72
73void QtQuickControls2FusionStylePlugin::registerTypes(const char *uri)
74{
75 qmlRegisterModule(uri, versionMajor: 2, versionMinor: 3); // Qt 5.10->2.3
76 qmlRegisterModule(uri, versionMajor: 2, QT_VERSION_MINOR); // Qt 5.12->2.12, 5.13->2.13...
77
78 QByteArray import = QByteArray(uri) + ".impl";
79 qmlRegisterModule(uri: import, versionMajor: 2, QT_VERSION_MINOR); // Qt 5.12->2.12, 5.13->2.13...
80
81 qmlRegisterSingletonType<QQuickFusionStyle>(uri: import, versionMajor: 2, versionMinor: 3, typeName: "Fusion", callback: styleSingleton);
82
83 qmlRegisterType<QQuickFusionBusyIndicator>(uri: import, versionMajor: 2, versionMinor: 3, qmlName: "BusyIndicatorImpl");
84 qmlRegisterType<QQuickFusionDial>(uri: import, versionMajor: 2, versionMinor: 3, qmlName: "DialImpl");
85 qmlRegisterType<QQuickFusionKnob>(uri: import, versionMajor: 2, versionMinor: 3, qmlName: "KnobImpl");
86
87 qmlRegisterType(url: resolvedUrl(QStringLiteral("ButtonPanel.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "ButtonPanel");
88 qmlRegisterType(url: resolvedUrl(QStringLiteral("CheckIndicator.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "CheckIndicator");
89 qmlRegisterType(url: resolvedUrl(QStringLiteral("RadioIndicator.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "RadioIndicator");
90 qmlRegisterType(url: resolvedUrl(QStringLiteral("SliderGroove.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "SliderGroove");
91 qmlRegisterType(url: resolvedUrl(QStringLiteral("SliderHandle.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "SliderHandle");
92 qmlRegisterType(url: resolvedUrl(QStringLiteral("SwitchIndicator.qml")), uri: import, versionMajor: 2, versionMinor: 3, qmlName: "SwitchIndicator");
93}
94
95QString QtQuickControls2FusionStylePlugin::name() const
96{
97 return QStringLiteral("Fusion");
98}
99
100void QtQuickControls2FusionStylePlugin::initializeTheme(QQuickTheme *theme)
101{
102 QQuickFusionTheme::initialize(theme);
103}
104
105QT_END_NAMESPACE
106
107#include "qtquickcontrols2fusionstyleplugin.moc"
108

source code of qtquickcontrols2/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp