diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-05-13 19:44:53 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-05-16 08:10:01 +0000 |
commit | 9d442922425f36d96f68f4fff83f3aca90aea6df (patch) | |
tree | 709ed6dd24ac5d8cbe1721dfcc92e3518abb9f6d /src/quickcontrols2 | |
parent | 7d1145e91eb575122579b6fbed48aebe87207e11 (diff) |
QQuickStylePlugin: use pimpl
Task-number: QTBUG-67062
Change-Id: I3f7d81cbb4a0d8366b98eacf9cdbd64013b6ec47
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quickcontrols2')
-rw-r--r-- | src/quickcontrols2/qquickstyleplugin.cpp | 39 | ||||
-rw-r--r-- | src/quickcontrols2/qquickstyleplugin_p.h | 7 |
2 files changed, 29 insertions, 17 deletions
diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp index 2a93779e..6bf93046 100644 --- a/src/quickcontrols2/qquickstyleplugin.cpp +++ b/src/quickcontrols2/qquickstyleplugin.cpp @@ -43,13 +43,22 @@ QT_BEGIN_NAMESPACE -QQuickStylePlugin::QQuickStylePlugin(QObject *parent) : QQmlExtensionPlugin(parent) +class QQuickStylePluginPrivate +{ +public: + QQuickTheme *theme = nullptr; + mutable QScopedPointer<QQuickStyleSelector> selector; +}; + +QQuickStylePlugin::QQuickStylePlugin(QObject *parent) + : QQmlExtensionPlugin(parent), d_ptr(new QQuickStylePluginPrivate) { } QQuickStylePlugin::~QQuickStylePlugin() { - if (QQuickTheme::current() == m_theme) + Q_D(QQuickStylePlugin); + if (QQuickTheme::current() == d->theme) QQuickTheme::setCurrent(nullptr); } @@ -60,26 +69,27 @@ void QQuickStylePlugin::registerTypes(const char *uri) void QQuickStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri) { + Q_D(QQuickStylePlugin); Q_UNUSED(engine); Q_UNUSED(uri); // make sure not to re-create the theme if initializeEngine() // is called multiple times, like in case of qml2puppet (QTBUG-54995) - if (m_theme) + if (d->theme) return; if (isCurrent()) { - m_theme = createTheme(); - if (m_theme) { + d->theme = createTheme(); + if (d->theme) { #if QT_CONFIG(settings) - QQuickThemePrivate *p = QQuickThemePrivate::get(m_theme); + QQuickThemePrivate *p = QQuickThemePrivate::get(d->theme); QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(name()); if (settings) { p->defaultFont.reset(QQuickStylePrivate::readFont(settings)); p->defaultPalette.reset(QQuickStylePrivate::readPalette(settings)); } #endif - QQuickTheme::setCurrent(m_theme); + QQuickTheme::setCurrent(d->theme); } } } @@ -106,23 +116,24 @@ QQuickTheme *QQuickStylePlugin::createTheme() const QUrl QQuickStylePlugin::resolvedUrl(const QString &fileName) const { - if (!m_selector) { - m_selector.reset(new QQuickStyleSelector); + Q_D(const QQuickStylePlugin); + if (!d->selector) { + d->selector.reset(new QQuickStyleSelector); const QString style = QQuickStyle::name(); if (!style.isEmpty()) - m_selector->addSelector(style); + d->selector->addSelector(style); const QString fallback = QQuickStylePrivate::fallbackStyle(); if (!fallback.isEmpty() && fallback != style) - m_selector->addSelector(fallback); + d->selector->addSelector(fallback); const QString theme = name(); if (!theme.isEmpty() && theme != style) - m_selector->addSelector(theme); + d->selector->addSelector(theme); - m_selector->setPaths(QQuickStylePrivate::stylePaths(true)); + d->selector->setPaths(QQuickStylePrivate::stylePaths(true)); } - return m_selector->select(fileName); + return d->selector->select(fileName); } QT_END_NAMESPACE diff --git a/src/quickcontrols2/qquickstyleplugin_p.h b/src/quickcontrols2/qquickstyleplugin_p.h index 19659625..735341df 100644 --- a/src/quickcontrols2/qquickstyleplugin_p.h +++ b/src/quickcontrols2/qquickstyleplugin_p.h @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE class QQuickTheme; -class QQuickStyleSelector; +class QQuickStylePluginPrivate; class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickStylePlugin : public QQmlExtensionPlugin { @@ -74,8 +74,9 @@ public: QUrl resolvedUrl(const QString &fileName) const; private: - QQuickTheme *m_theme = nullptr; - mutable QScopedPointer<QQuickStyleSelector> m_selector; + Q_DISABLE_COPY(QQuickStylePlugin) + Q_DECLARE_PRIVATE(QQuickStylePlugin) + QScopedPointer<QQuickStylePluginPrivate> d_ptr; }; QT_END_NAMESPACE |