summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-07-07 16:15:02 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-07-14 10:44:54 +0000
commit2f2e31fea77aef558e5c6e3727f9b31cf018599a (patch)
treefccaf846d3c8c0f5e9287ccbb92caafd2c73a374 /examples
parent7b94a6394ed744c1132a679ac699231b097f416d (diff)
Better connection mechanism for events
The connectToEvent() mechanism is analogous to connectToState() and allows arbitrary event specifications, with '.' and '*'. In addition a QML component is provided to make event connections available in QML. Change-Id: Ie45422481a794b1b350347c383318857e5dc3f6d Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'examples')
-rw-r--r--examples/scxml/calculator-qml/calculator-qml.qml7
-rw-r--r--examples/scxml/calculator-widgets/mainwindow.cpp8
-rw-r--r--examples/scxml/pinball/mainwindow.cpp9
3 files changed, 8 insertions, 16 deletions
diff --git a/examples/scxml/calculator-qml/calculator-qml.qml b/examples/scxml/calculator-qml/calculator-qml.qml
index 846589f..9d679f6 100644
--- a/examples/scxml/calculator-qml/calculator-qml.qml
+++ b/examples/scxml/calculator-qml/calculator-qml.qml
@@ -51,6 +51,7 @@
import CalculatorStateMachine 1.0
import QtQuick 2.5
import QtQuick.Window 2.0
+import QtScxml 5.7
Window {
id: window
@@ -61,9 +62,9 @@ Window {
CalculatorStateMachine {
id: statemachine
running: true
- onEventOccurred: {
- if (event.name === "updateDisplay")
- resultText.text = event.data.display;
+ property var connection: EventConnection {
+ events: ["updateDisplay"]
+ onOccurred: resultText.text = event.data.display
}
}
diff --git a/examples/scxml/calculator-widgets/mainwindow.cpp b/examples/scxml/calculator-widgets/mainwindow.cpp
index eacafaa..d8c77f7 100644
--- a/examples/scxml/calculator-widgets/mainwindow.cpp
+++ b/examples/scxml/calculator-widgets/mainwindow.cpp
@@ -115,11 +115,9 @@ MainWindow::MainWindow(QScxmlStateMachine *machine, QWidget *parent) :
m_machine->submitEvent("C");
});
- connect(m_machine, &QScxmlStateMachine::eventOccurred, [this](const QScxmlEvent &event) {
- if (event.name() == QLatin1String("updateDisplay")) {
- const QString display = event.data().toMap().value("display").toString();
- ui->display->setText(display);
- }
+ m_machine->connectToEvent(QLatin1String("updateDisplay"), this, [this](const QScxmlEvent &event) {
+ const QString display = event.data().toMap().value("display").toString();
+ ui->display->setText(display);
});
}
diff --git a/examples/scxml/pinball/mainwindow.cpp b/examples/scxml/pinball/mainwindow.cpp
index 9e525c2..1e7b13c 100644
--- a/examples/scxml/pinball/mainwindow.cpp
+++ b/examples/scxml/pinball/mainwindow.cpp
@@ -89,8 +89,7 @@ MainWindow::MainWindow(Pinball *machine, QWidget *parent) :
initAndConnect(QLatin1String("onState"), m_ui->ballOutButton);
// datamodel update
- connect(m_machine, SIGNAL(eventOccurred(const QScxmlEvent &)),
- this, SLOT(eventOccurred(const QScxmlEvent &)));
+ m_machine->connectToEvent("updateScore", this, &MainWindow::eventOccurred);
// gui interaction
connect(m_ui->cButton, &QAbstractButton::clicked,
@@ -129,12 +128,6 @@ void MainWindow::initAndConnect(const QString &state, QWidget *widget)
void MainWindow::eventOccurred(const QScxmlEvent &event)
{
- if (event.originType() != QLatin1String("qt:signal"))
- return;
-
- if (event.name() != QLatin1String("updateScore"))
- return;
-
const QVariant data = event.data();
const QString highScore = data.toMap().value("highScore").toString();
m_ui->highScoreLabel->setText(highScore);