aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp24
-rw-r--r--src/imports/templates/templates.pro4
-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.pri2
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 \