1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qquickfluentwinui3theme_p.h"
5
6#include <QtQuickControls2/private/qquickstyleplugin_p.h>
7#include <QtQuickControls2/private/qquickstyleplugin_p.h>
8#include <QtQuickTemplates2/private/qquicktheme_p.h>
9
10#include <QtQuickControls2FluentWinUI3StyleImpl/private/qquickfluentwinui3focusframe_p.h>
11
12QT_BEGIN_NAMESPACE
13
14extern void qml_register_types_QtQuick_Controls_FluentWinUI3();
15Q_GHS_KEEP_REFERENCE(qml_register_types_QtQuick_Controls_FluentWinUI3);
16
17class QtQuickControls2FluentWinUI3StylePlugin : public QQuickStylePlugin
18{
19 Q_OBJECT
20 Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
21
22public:
23 QtQuickControls2FluentWinUI3StylePlugin(QObject *parent = nullptr);
24
25 QString name() const override;
26 void initializeEngine(QQmlEngine *engine, const char *uri) override;
27 void initializeTheme(QQuickTheme *theme) override;
28 void updateTheme() override;
29
30 QQuickFluentWinUI3Theme theme;
31 QScopedPointer<QQuickFluentWinUI3FocusFrame> m_focusFrame;
32};
33
34QtQuickControls2FluentWinUI3StylePlugin::QtQuickControls2FluentWinUI3StylePlugin(QObject *parent) : QQuickStylePlugin(parent)
35{
36 volatile auto registration = &qml_register_types_QtQuick_Controls_FluentWinUI3;
37 Q_UNUSED(registration);
38}
39
40QString QtQuickControls2FluentWinUI3StylePlugin::name() const
41{
42 return QStringLiteral("FluentWinUI3");
43}
44
45void QtQuickControls2FluentWinUI3StylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
46{
47 QQuickStylePlugin::initializeEngine(engine, uri);
48 m_focusFrame.reset(other: new QQuickFluentWinUI3FocusFrame());
49}
50
51void QtQuickControls2FluentWinUI3StylePlugin::initializeTheme(QQuickTheme *theme)
52{
53 this->theme.initialize(theme);
54}
55
56void QtQuickControls2FluentWinUI3StylePlugin::updateTheme()
57{
58 auto *theme = QQuickTheme::instance();
59 if (theme)
60 theme->setPalette(scope: QQuickTheme::System, palette: this->theme.initializeDefaultPalette());
61 // TODO: Update the font too if needed
62}
63
64QT_END_NAMESPACE
65
66#include "qtquickcontrols2fluentwinui3styleplugin.moc"
67

source code of qtdeclarative/src/quickcontrols/fluentwinui3/qtquickcontrols2fluentwinui3styleplugin.cpp