aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/statemachine/signaltransition.h
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2015-12-31 12:54:20 -0600
committerMichael Brasser <michael.brasser@live.com>2016-01-19 14:54:12 +0000
commit63652419b6098665aafb17f1175524685d504e24 (patch)
treeda5a37fbcae1d529ee34a68232f926466352d138 /src/imports/statemachine/signaltransition.h
parent7c9e51e7e7b358fb9c4829ee8f02918ec4cfd016 (diff)
Provide access to signal parameters in SignalTransition::onTriggered.
Change-Id: Ib74d3f5e9a357a86b818e27dd7249e2ecdf1e513 Task-number: QTBUG-46897 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/imports/statemachine/signaltransition.h')
-rw-r--r--src/imports/statemachine/signaltransition.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/imports/statemachine/signaltransition.h b/src/imports/statemachine/signaltransition.h
index 1b44af4de9..dfb1ca91b9 100644
--- a/src/imports/statemachine/signaltransition.h
+++ b/src/imports/statemachine/signaltransition.h
@@ -39,12 +39,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)
@@ -54,7 +59,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);
@@ -70,9 +76,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