aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-05-13 19:44:53 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-05-16 08:10:01 +0000
commit9d442922425f36d96f68f4fff83f3aca90aea6df (patch)
tree709ed6dd24ac5d8cbe1721dfcc92e3518abb9f6d /src/quickcontrols2
parent7d1145e91eb575122579b6fbed48aebe87207e11 (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.cpp39
-rw-r--r--src/quickcontrols2/qquickstyleplugin_p.h7
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