diff options
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/imports.pro | 2 | ||||
-rw-r--r-- | src/imports/localstorage/plugin.cpp | 2 | ||||
-rw-r--r-- | src/imports/qtquick2/plugin.cpp | 6 | ||||
-rw-r--r-- | src/imports/qtquick2/qtquick2.pro | 2 | ||||
-rw-r--r-- | src/imports/statemachine/signaltransition.cpp | 6 | ||||
-rw-r--r-- | src/imports/statemachine/signaltransition.h | 6 | ||||
-rw-r--r-- | src/imports/statemachine/statemachine.cpp | 13 | ||||
-rw-r--r-- | src/imports/statemachine/statemachine.h | 3 | ||||
-rw-r--r-- | src/imports/workerscript/dependencies.json | 2 | ||||
-rw-r--r-- | src/imports/workerscript/plugin.cpp | 81 | ||||
-rw-r--r-- | src/imports/workerscript/qmldir | 3 | ||||
-rw-r--r-- | src/imports/workerscript/workerscript.pro | 11 |
12 files changed, 131 insertions, 6 deletions
diff --git a/src/imports/imports.pro b/src/imports/imports.pro index 901c263be5..6b31dfc65d 100644 --- a/src/imports/imports.pro +++ b/src/imports/imports.pro @@ -1,4 +1,5 @@ TEMPLATE = subdirs +QT_FOR_CONFIG += qml-private SUBDIRS += \ builtins \ @@ -6,6 +7,7 @@ SUBDIRS += \ models \ labsmodels +qtConfig(qml-worker-script): SUBDIRS += workerscript qtConfig(thread): SUBDIRS += folderlistmodel qtHaveModule(sql): SUBDIRS += localstorage qtConfig(settings): SUBDIRS += settings diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp index 0aad0d7c16..9004d1ee6f 100644 --- a/src/imports/localstorage/plugin.cpp +++ b/src/imports/localstorage/plugin.cpp @@ -85,7 +85,7 @@ QT_BEGIN_NAMESPACE } -class QQmlSqlDatabaseData : public QV8Engine::Deletable +class QQmlSqlDatabaseData : public QV4::ExecutionEngine::Deletable { public: QQmlSqlDatabaseData(QV4::ExecutionEngine *engine); diff --git a/src/imports/qtquick2/plugin.cpp b/src/imports/qtquick2/plugin.cpp index a5a2c73ced..efa05c349c 100644 --- a/src/imports/qtquick2/plugin.cpp +++ b/src/imports/qtquick2/plugin.cpp @@ -42,6 +42,9 @@ #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include <QtQml/private/qqmlengine_p.h> #include <QtQmlModels/private/qqmlmodelsmodule_p.h> +#if QT_CONFIG(qml_worker_script) +#include <QtQmlWorkerScript/private/qqmlworkerscriptmodule_p.h> +#endif #endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include <private/qtquick2_p.h> @@ -63,6 +66,9 @@ public: #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QQmlEnginePrivate::registerQuickTypes(); QQmlModelsModule::registerQuickTypes(); +#if QT_CONFIG(qml_worker_script) + QQmlWorkerScriptModule::registerQuickTypes(); +#endif #endif QQmlQtQuick2Module::defineModule(); diff --git a/src/imports/qtquick2/qtquick2.pro b/src/imports/qtquick2/qtquick2.pro index 1b45d69eb7..8543049ead 100644 --- a/src/imports/qtquick2/qtquick2.pro +++ b/src/imports/qtquick2/qtquick2.pro @@ -8,4 +8,6 @@ SOURCES += \ QT += quick-private qml-private qmlmodels-private +qtConfig(qml-worker-script): QT += qmlworkerscript-private + load(qml_plugin) diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp index 52dffe9004..468f2020c7 100644 --- a/src/imports/statemachine/signaltransition.cpp +++ b/src/imports/statemachine/signaltransition.cpp @@ -184,7 +184,7 @@ void SignalTransition::connectTriggered() m_signalExpression = expression; } -void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) +void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) { for (int ii = 0; ii < props.count(); ++ii) { const QV4::CompiledData::Binding *binding = props.at(ii); @@ -203,7 +203,9 @@ void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::CompiledDa } } -void SignalTransitionParser::applyBindings(QObject *object, const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) +void SignalTransitionParser::applyBindings( + QObject *object, const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, + const QList<const QV4::CompiledData::Binding *> &bindings) { SignalTransition *st = qobject_cast<SignalTransition*>(object); st->m_compilationUnit = compilationUnit; diff --git a/src/imports/statemachine/signaltransition.h b/src/imports/statemachine/signaltransition.h index 90e6f96fbc..f005c5e9b1 100644 --- a/src/imports/statemachine/signaltransition.h +++ b/src/imports/statemachine/signaltransition.h @@ -89,7 +89,7 @@ private: QJSValue m_signal; QQmlScriptString m_guard; bool m_complete; - QQmlRefPointer<QV4::CompiledData::CompilationUnit> m_compilationUnit; + QQmlRefPointer<QV4::ExecutableCompilationUnit> m_compilationUnit; QList<const QV4::CompiledData::Binding *> m_bindings; QQmlBoundSignalExpressionPointer m_signalExpression; }; @@ -97,8 +97,8 @@ private: class SignalTransitionParser : public QQmlCustomParser { public: - void verifyBindings(const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) override; - void applyBindings(QObject *object, const QQmlRefPointer<QV4::CompiledData::CompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) override; + void verifyBindings(const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props) override; + void applyBindings(QObject *object, const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) override; }; QT_END_NAMESPACE diff --git a/src/imports/statemachine/statemachine.cpp b/src/imports/statemachine/statemachine.cpp index ca6c59b6ac..a983644018 100644 --- a/src/imports/statemachine/statemachine.cpp +++ b/src/imports/statemachine/statemachine.cpp @@ -51,6 +51,7 @@ StateMachine::StateMachine(QObject *parent) : QStateMachine(parent), m_completed(false), m_running(false) { connect(this, SIGNAL(runningChanged(bool)), SIGNAL(qmlRunningChanged())); + connect(this, SIGNAL(childModeChanged()), SLOT(checkChildMode())); } bool StateMachine::isRunning() const @@ -66,6 +67,15 @@ void StateMachine::setRunning(bool running) m_running = running; } +void StateMachine::checkChildMode() +{ + if (childMode() != QState::ExclusiveStates) { + qmlWarning(this) << "Setting the childMode of a StateMachine to anything else than\n" + "QState.ExclusiveStates will result in an invalid state machine,\n" + "and can lead to incorrect behavior!"; + } +} + void StateMachine::componentComplete() { if (QStateMachine::initialState() == nullptr && childMode() == QState::ExclusiveStates) @@ -129,6 +139,9 @@ QQmlListProperty<QObject> StateMachine::children() erroneous state, the machine will stop executing and an error message will be printed to the console. + \warning Setting the childMode of a StateMachine to anything else than QState::ExclusiveStates + will result in an invalid state machine, and can lead to incorrect behavior. + \clearfloat \sa QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState {The Declarative State Machine Framework} diff --git a/src/imports/statemachine/statemachine.h b/src/imports/statemachine/statemachine.h index cb0ab43f8b..1fa7a9da43 100644 --- a/src/imports/statemachine/statemachine.h +++ b/src/imports/statemachine/statemachine.h @@ -69,6 +69,9 @@ public: bool isRunning() const; void setRunning(bool running); +private Q_SLOTS: + void checkChildMode(); + Q_SIGNALS: void childrenChanged(); /*! diff --git a/src/imports/workerscript/dependencies.json b/src/imports/workerscript/dependencies.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/src/imports/workerscript/dependencies.json @@ -0,0 +1,2 @@ +[ +] diff --git a/src/imports/workerscript/plugin.cpp b/src/imports/workerscript/plugin.cpp new file mode 100644 index 0000000000..5b3bff7934 --- /dev/null +++ b/src/imports/workerscript/plugin.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQmlWorkerScript/private/qqmlworkerscriptmodule_p.h> +#include <QtQml/qqmlextensionplugin.h> +#include <QtQml/qqml.h> + +QT_BEGIN_NAMESPACE + +/*! + \qmlmodule QtQml.WorkerScript 2.\QtMinorVersion + \title Qt QML WorkerScript QML Types + \ingroup qmlmodules + \brief Provides QML types for worker scripts + \since 5.14 + + This QML module contains types for using worker scripts. + + To use the types in this module, import the module with the following line: + + \qml \QtMinorVersion + import QtQml.WorkerScript 2.\1 + \endqml +*/ + +class QtQmlWorkerScriptPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) +public: + QtQmlWorkerScriptPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { } + void registerTypes(const char *uri) override + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQml.WorkerScript")); + + QQmlWorkerScriptModule::defineModule(); + + // Auto-increment the import to stay in sync with ALL future QtQuick minor versions from 5.11 onward + qmlRegisterModule(uri, 2, QT_VERSION_MINOR); + } +}; + +QT_END_NAMESPACE + +#include "plugin.moc" diff --git a/src/imports/workerscript/qmldir b/src/imports/workerscript/qmldir new file mode 100644 index 0000000000..0e811d1dbc --- /dev/null +++ b/src/imports/workerscript/qmldir @@ -0,0 +1,3 @@ +module QtQml.WorkerScript +plugin workerscriptsplugin +classname QtQmlWorkerScriptPlugin diff --git a/src/imports/workerscript/workerscript.pro b/src/imports/workerscript/workerscript.pro new file mode 100644 index 0000000000..d48e285bda --- /dev/null +++ b/src/imports/workerscript/workerscript.pro @@ -0,0 +1,11 @@ +CXX_MODULE = qml +TARGET = workerscriptplugin +TARGETPATH = QtQml/WorkerScript.2 +IMPORT_VERSION = 2.$$QT_MINOR_VERSION + +SOURCES += \ + plugin.cpp + +QT = qml-private qmlworkerscript-private + +load(qml_plugin) |