diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2016-01-22 15:20:47 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2016-01-22 15:21:06 +0100 |
commit | f286db98ee41a8aa71b9a65a235b6d3e265d79f4 (patch) | |
tree | 16e17d4c52d35f7e55fc2103db5c96850e9bdfff /src/imports/statemachine/signaltransition.h | |
parent | ce093497f2d4164fa8abc06cf976f9e36798e11e (diff) | |
parent | b60a5dc9405ce89d7a742abc81b906d5c8cf5f7d (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I4af0bf8ec1569097d97f8ce0bb8bf1a0e4a989ec
Diffstat (limited to 'src/imports/statemachine/signaltransition.h')
-rw-r--r-- | src/imports/statemachine/signaltransition.h | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/imports/statemachine/signaltransition.h b/src/imports/statemachine/signaltransition.h index e8e064a995..3471aea0c8 100644 --- a/src/imports/statemachine/signaltransition.h +++ b/src/imports/statemachine/signaltransition.h @@ -45,12 +45,17 @@ #include <QtQml/QJSValue> #include <QtQml/qqmlscriptstring.h> +#include <QtQml/qqmlparserstatus.h> +#include <private/qqmlcustomparser_p.h> +#include <private/qqmlboundsignalexpressionpointer_p.h> +#include <private/qqmlcompiler_p.h> QT_BEGIN_NAMESPACE -class SignalTransition : public QSignalTransition +class SignalTransition : public QSignalTransition, public QQmlParserStatus { Q_OBJECT + Q_INTERFACES(QQmlParserStatus) Q_PROPERTY(QJSValue signal READ signal WRITE setSignal NOTIFY qmlSignalChanged) Q_PROPERTY(QQmlScriptString guard READ guard WRITE setGuard NOTIFY guardChanged) @@ -60,7 +65,8 @@ public: QQmlScriptString guard() const; void setGuard(const QQmlScriptString &guard); - bool eventTest(QEvent *event); + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + void onTransition(QEvent *event) Q_DECL_OVERRIDE; const QJSValue &signal(); void setSignal(const QJSValue &signal); @@ -76,9 +82,24 @@ Q_SIGNALS: void qmlSignalChanged(); private: - QByteArray m_data; + void classBegin() Q_DECL_OVERRIDE { m_complete = false; } + void componentComplete() Q_DECL_OVERRIDE { m_complete = true; connectTriggered(); } + void connectTriggered(); + + friend class SignalTransitionParser; QJSValue m_signal; QQmlScriptString m_guard; + bool m_complete; + QQmlRefPointer<QQmlCompiledData> m_cdata; + QList<const QV4::CompiledData::Binding *> m_bindings; + QQmlBoundSignalExpressionPointer m_signalExpression; +}; + +class SignalTransitionParser : public QQmlCustomParser +{ +public: + void verifyBindings(const QV4::CompiledData::Unit *qmlUnit, const QList<const QV4::CompiledData::Binding *> &props) Q_DECL_OVERRIDE; + void applyBindings(QObject *object, QQmlCompiledData *cdata, const QList<const QV4::CompiledData::Binding *> &bindings) Q_DECL_OVERRIDE; }; QT_END_NAMESPACE |