diff options
-rw-r--r-- | src/imports/templates/qtquicktemplates2plugin.cpp | 24 | ||||
-rw-r--r-- | src/imports/templates/templates.pro | 4 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpaletteprovider.cpp (renamed from src/imports/templates/qquicktemplates2valuetypeprovider.cpp) | 32 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpaletteprovider_p.h (renamed from src/imports/templates/qquicktemplates2valuetypeprovider_p.h) | 10 | ||||
-rw-r--r-- | src/quicktemplates2/quicktemplates2.pri | 2 |
5 files changed, 44 insertions, 28 deletions
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp index ebd30bdc..b1a78e17 100644 --- a/src/imports/templates/qtquicktemplates2plugin.cpp +++ b/src/imports/templates/qtquicktemplates2plugin.cpp @@ -67,6 +67,7 @@ #include <QtQuickTemplates2/private/qquickoverlay_p.h> #include <QtQuickTemplates2/private/qquickpage_p.h> #include <QtQuickTemplates2/private/qquickpageindicator_p.h> +#include <QtQuickTemplates2/private/qquickpaletteprovider_p.h> #include <QtQuickTemplates2/private/qquickpane_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> #include <QtQuickTemplates2/private/qquickprogressbar_p.h> @@ -98,8 +99,6 @@ #include <QtQuickTemplates2/private/qquicktumbler_p.h> #endif -#include "qquicktemplates2valuetypeprovider_p.h" - static inline void initResources() { #ifdef QT_STATIC @@ -116,20 +115,14 @@ extern void qt_quick_set_shortcut_context_matcher(ShortcutContextMatcher matcher QT_BEGIN_NAMESPACE -static QQmlValueTypeProvider *valueTypeProvider() -{ - static QQuickTemplates2ValueTypeProvider provider; - return &provider; -} - static void initProviders() { - QQml_addValueTypeProvider(valueTypeProvider()); + QQuickPaletteProvider::init(); } static void cleanupProviders() { - QQml_removeValueTypeProvider(valueTypeProvider()); + QQuickPaletteProvider::cleanup(); } class QtQuickTemplates2Plugin: public QQmlExtensionPlugin @@ -144,15 +137,16 @@ public: void registerTypes(const char *uri) override; private: + bool registered; #if QT_CONFIG(shortcut) ShortcutContextMatcher originalContextMatcher; #endif }; -QtQuickTemplates2Plugin::QtQuickTemplates2Plugin(QObject *parent) : QQmlExtensionPlugin(parent) +QtQuickTemplates2Plugin::QtQuickTemplates2Plugin(QObject *parent) + : QQmlExtensionPlugin(parent), registered(false) { initResources(); - initProviders(); #if QT_CONFIG(shortcut) originalContextMatcher = qt_quick_shortcut_context_matcher(); @@ -162,7 +156,8 @@ QtQuickTemplates2Plugin::QtQuickTemplates2Plugin(QObject *parent) : QQmlExtensio QtQuickTemplates2Plugin::~QtQuickTemplates2Plugin() { - cleanupProviders(); + if (registered) + cleanupProviders(); #if QT_CONFIG(shortcut) qt_quick_set_shortcut_context_matcher(originalContextMatcher); @@ -171,6 +166,9 @@ QtQuickTemplates2Plugin::~QtQuickTemplates2Plugin() void QtQuickTemplates2Plugin::registerTypes(const char *uri) { + registered = true; + initProviders(); + qmlRegisterModule(uri, 2, QT_VERSION_MINOR - 7); // Qt 5.7->2.0, 5.8->2.1, 5.9->2.2... // QtQuick.Templates 2.0 (originally introduced in Qt 5.7) diff --git a/src/imports/templates/templates.pro b/src/imports/templates/templates.pro index 4ff0a76e..9a95812b 100644 --- a/src/imports/templates/templates.pro +++ b/src/imports/templates/templates.pro @@ -10,11 +10,7 @@ DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII OTHER_FILES += \ qmldir -HEADERS += \ - $$PWD/qquicktemplates2valuetypeprovider_p.h - SOURCES += \ - $$PWD/qquicktemplates2valuetypeprovider.cpp \ $$PWD/qtquicktemplates2plugin.cpp CONFIG += no_cxx_module diff --git a/src/imports/templates/qquicktemplates2valuetypeprovider.cpp b/src/quicktemplates2/qquickpaletteprovider.cpp index 6debdbc4..d925fcae 100644 --- a/src/imports/templates/qquicktemplates2valuetypeprovider.cpp +++ b/src/quicktemplates2/qquickpaletteprovider.cpp @@ -34,20 +34,36 @@ ** ****************************************************************************/ -#include "qquicktemplates2valuetypeprovider_p.h" +#include "qquickpaletteprovider_p.h" +#include "qquickpalette_p.h" #include <QtQml/private/qqmlvaluetype_p.h> -#include <QtQuickTemplates2/private/qquickpalette_p.h> QT_BEGIN_NAMESPACE +static QQmlValueTypeProvider *instance() +{ + static QQuickPaletteProvider provider; + return &provider; +} + +void QQuickPaletteProvider::init() +{ + QQml_addValueTypeProvider(instance()); +} + +void QQuickPaletteProvider::cleanup() +{ + QQml_removeValueTypeProvider(instance()); +} + #if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) #define ASSERT_VALID_SIZE(size, min) Q_UNUSED(size) #else #define ASSERT_VALID_SIZE(size, min) Q_ASSERT(size >= min) #endif -const QMetaObject *QQuickTemplates2ValueTypeProvider::getMetaObjectForMetaType(int type) +const QMetaObject *QQuickPaletteProvider::getMetaObjectForMetaType(int type) { switch (type) { case QMetaType::QPalette: @@ -59,7 +75,7 @@ const QMetaObject *QQuickTemplates2ValueTypeProvider::getMetaObjectForMetaType(i return nullptr; } -bool QQuickTemplates2ValueTypeProvider::init(int type, QVariant& dst) +bool QQuickPaletteProvider::init(int type, QVariant& dst) { switch (type) { case QMetaType::QPalette: @@ -77,7 +93,7 @@ bool typedEqual(const void *lhs, const QVariant& rhs) return (*(reinterpret_cast<const T *>(lhs)) == rhs.value<T>()); } -bool QQuickTemplates2ValueTypeProvider::equal(int type, const void *lhs, const QVariant &rhs) +bool QQuickPaletteProvider::equal(int type, const void *lhs, const QVariant &rhs) { switch (type) { case QMetaType::QPalette: @@ -98,7 +114,7 @@ bool typedStore(const void *src, void *dst, size_t dstSize) return true; } -bool QQuickTemplates2ValueTypeProvider::store(int type, const void *src, void *dst, size_t dstSize) +bool QQuickPaletteProvider::store(int type, const void *src, void *dst, size_t dstSize) { switch (type) { case QMetaType::QPalette: @@ -121,7 +137,7 @@ bool typedRead(const QVariant& src, int dstType, void *dst) return true; } -bool QQuickTemplates2ValueTypeProvider::read(const QVariant &src, void *dst, int dstType) +bool QQuickPaletteProvider::read(const QVariant &src, void *dst, int dstType) { switch (dstType) { case QMetaType::QPalette: @@ -143,7 +159,7 @@ bool typedWrite(const void *src, QVariant& dst) return false; } -bool QQuickTemplates2ValueTypeProvider::write(int type, const void *src, QVariant& dst) +bool QQuickPaletteProvider::write(int type, const void *src, QVariant& dst) { switch (type) { case QMetaType::QPalette: diff --git a/src/imports/templates/qquicktemplates2valuetypeprovider_p.h b/src/quicktemplates2/qquickpaletteprovider_p.h index 6b072029..5b6e3796 100644 --- a/src/imports/templates/qquicktemplates2valuetypeprovider_p.h +++ b/src/quicktemplates2/qquickpaletteprovider_p.h @@ -34,8 +34,8 @@ ** ****************************************************************************/ -#ifndef QQUICKTEMPLATES2VALUETYPEPROVIDER_P_H -#define QQUICKTEMPLATES2VALUETYPEPROVIDER_P_H +#ifndef QQUICKPALETTEPROVIDER_P_H +#define QQUICKPALETTEPROVIDER_P_H // // W A R N I N G @@ -48,13 +48,17 @@ // We mean it. // +#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> #include <QtQml/private/qqmlglobal_p.h> QT_BEGIN_NAMESPACE -class QQuickTemplates2ValueTypeProvider : public QQmlValueTypeProvider +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPaletteProvider : public QQmlValueTypeProvider { public: + static void init(); + static void cleanup(); + const QMetaObject *getMetaObjectForMetaType(int type) override; bool init(int type, QVariant& dst) override; bool equal(int type, const void *lhs, const QVariant &rhs) override; diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri index ee51f995..b2193ec0 100644 --- a/src/quicktemplates2/quicktemplates2.pri +++ b/src/quicktemplates2/quicktemplates2.pri @@ -50,6 +50,7 @@ HEADERS += \ $$PWD/qquickpageindicator_p.h \ $$PWD/qquickpagelayout_p_p.h \ $$PWD/qquickpalette_p.h \ + $$PWD/qquickpaletteprovider_p.h \ $$PWD/qquickpane_p.h \ $$PWD/qquickpane_p_p.h \ $$PWD/qquickpopup_p.h \ @@ -125,6 +126,7 @@ SOURCES += \ $$PWD/qquickpageindicator.cpp \ $$PWD/qquickpagelayout.cpp \ $$PWD/qquickpalette.cpp \ + $$PWD/qquickpaletteprovider.cpp \ $$PWD/qquickpane.cpp \ $$PWD/qquickpopup.cpp \ $$PWD/qquickpopupitem.cpp \ |