summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/invoke-common/MainView.qml4
-rw-r--r--examples/invoke-common/SubView.qml4
-rw-r--r--examples/mediaplayer-common/Mediaplayer.qml10
-rw-r--r--examples/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp6
-rw-r--r--examples/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp6
-rw-r--r--examples/trafficlight-common/TrafficLight.qml4
-rw-r--r--src/scxml/qscxmlparser.cpp16
-rw-r--r--tools/qscxmlc/scxmlcppdumper.cpp49
8 files changed, 56 insertions, 43 deletions
diff --git a/examples/invoke-common/MainView.qml b/examples/invoke-common/MainView.qml
index b623592..0f51ae5 100644
--- a/examples/invoke-common/MainView.qml
+++ b/examples/invoke-common/MainView.qml
@@ -69,7 +69,7 @@ Window {
text: "Go Nowhere"
width: parent.width
height: parent.height / 2
- onClicked: stateMachine.event_goNowhere()
+ onClicked: stateMachine.goNowhere()
enabled: stateMachine.somewhere
}
@@ -79,7 +79,7 @@ Window {
width: parent.width
height: parent.height / 2
y: parent.height / 2
- onClicked: stateMachine.event_goSomewhere()
+ onClicked: stateMachine.goSomewhere()
enabled: stateMachine.nowhere
}
}
diff --git a/examples/invoke-common/SubView.qml b/examples/invoke-common/SubView.qml
index 8ab3614..cec32e3 100644
--- a/examples/invoke-common/SubView.qml
+++ b/examples/invoke-common/SubView.qml
@@ -57,7 +57,7 @@ Item {
text: "Go There"
width: parent.width / 2
height: parent.height
- onClicked: anywhere.event_goThere()
+ onClicked: anywhere.goThere()
}
Button {
@@ -67,6 +67,6 @@ Item {
width: parent.width / 2
height: parent.height
x: width
- onClicked: anywhere.event_goHere()
+ onClicked: anywhere.goHere()
}
}
diff --git a/examples/mediaplayer-common/Mediaplayer.qml b/examples/mediaplayer-common/Mediaplayer.qml
index d370ae9..c3e1b98 100644
--- a/examples/mediaplayer-common/Mediaplayer.qml
+++ b/examples/mediaplayer-common/Mediaplayer.qml
@@ -117,21 +117,21 @@ Window {
Connections {
target: stateMachine
- onEvent_playbackStarted: {
+ onPlaybackStarted: {
var media = data.media
theText.text = "Playing '" + media + "'"
- theLog.text = theLog.text + "\nevent_playbackStarted with data: " + JSON.stringify(data)
+ theLog.text = theLog.text + "\nplaybackStarted with data: " + JSON.stringify(data)
}
- onEvent_playbackStopped: {
+ onPlaybackStopped: {
var media = data.media
theText.text = "Stopped '" + media + "'"
- theLog.text = theLog.text + "\nevent_playbackStopped with data: " + JSON.stringify(data)
+ theLog.text = theLog.text + "\nplaybackStopped with data: " + JSON.stringify(data)
}
}
function tap(idx) {
var media = theModel.get(idx).media
var data = { "media": media }
- stateMachine.event_tap(data)
+ stateMachine.tap(data)
}
}
diff --git a/examples/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp b/examples/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp
index 286c18b..f36a62e 100644
--- a/examples/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp
+++ b/examples/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp
@@ -63,10 +63,10 @@ int main(int argc, char **argv)
machine->setParent(&mainWindow);
QObject::connect(&mainWindow, SIGNAL(tap(const QVariant &)),
- machine, SLOT(event_tap(const QVariant &)));
- QObject::connect(machine, SIGNAL(event_playbackStarted(const QVariant &)),
+ machine, SLOT(tap(const QVariant &)));
+ QObject::connect(machine, SIGNAL(playbackStarted(const QVariant &)),
&mainWindow, SLOT(started(const QVariant &)));
- QObject::connect(machine, SIGNAL(event_playbackStopped(const QVariant &)),
+ QObject::connect(machine, SIGNAL(playbackStopped(const QVariant &)),
&mainWindow, SLOT(stopped(const QVariant &)));
machine->start();
diff --git a/examples/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp b/examples/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp
index 65b8cb0..dcc6d59 100644
--- a/examples/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp
+++ b/examples/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp
@@ -62,10 +62,10 @@ int main(int argc, char **argv)
MainWindow mainWindow;
QObject::connect(&mainWindow, &MainWindow::tap,
- &machine, &MediaPlayerStateMachine::event_tap);
- QObject::connect(&machine, &MediaPlayerStateMachine::event_playbackStarted,
+ &machine, &MediaPlayerStateMachine::tap);
+ QObject::connect(&machine, &MediaPlayerStateMachine::playbackStarted,
&mainWindow, &MainWindow::started);
- QObject::connect(&machine, &MediaPlayerStateMachine::event_playbackStopped,
+ QObject::connect(&machine, &MediaPlayerStateMachine::playbackStopped,
&mainWindow, &MainWindow::stopped);
machine.start();
diff --git a/examples/trafficlight-common/TrafficLight.qml b/examples/trafficlight-common/TrafficLight.qml
index 552e41d..4d8cb15 100644
--- a/examples/trafficlight-common/TrafficLight.qml
+++ b/examples/trafficlight-common/TrafficLight.qml
@@ -109,9 +109,9 @@ Window {
onClicked: {
if (stateMachine.working)
- stateMachine.event_smash()
+ stateMachine.smash()
else
- stateMachine.event_repair()
+ stateMachine.repair()
}
}
}
diff --git a/src/scxml/qscxmlparser.cpp b/src/scxml/qscxmlparser.cpp
index 314ee90..311d92a 100644
--- a/src/scxml/qscxmlparser.cpp
+++ b/src/scxml/qscxmlparser.cpp
@@ -586,7 +586,7 @@ private:
// signals
foreach (const QString &eventName, eventSignals) {
- QByteArray signalName = QByteArray("event_") + eventName.toUtf8() + "(const QVariant &)";
+ QByteArray signalName = eventName.toUtf8() + "(const QVariant &)";
QMetaMethodBuilder signalBuilder = b.addSignal(signalName);
signalBuilder.setParameterNames(init("data"));
int idx = signalBuilder.index();
@@ -616,7 +616,7 @@ private:
// slots
m_firstSlot = m_eventNamesByIndex.size();
foreach (const QString &eventName, eventSlots) {
- QByteArray slotName = QByteArray("event_") + eventName.toUtf8() + "(const QVariant &)";
+ QByteArray slotName = eventName.toUtf8() + "(const QVariant &)";
QMetaMethodBuilder slotBuilder = b.addSlot(slotName);
slotBuilder.setParameterNames(init("data"));
int idx = slotBuilder.index();
@@ -626,7 +626,7 @@ private:
m_firstSlotWithoutData = m_eventNamesByIndex.size();
foreach (const QString &eventName, eventSlots) {
- QByteArray slotName = QByteArray("event_") + eventName.toUtf8() + "()";
+ QByteArray slotName = eventName.toUtf8() + "()";
QMetaMethodBuilder slotBuilder = b.addSlot(slotName);
int idx = slotBuilder.index();
m_eventNamesByIndex.resize(std::max(idx + 1, m_eventNamesByIndex.size()));
@@ -757,6 +757,7 @@ public:
: m_stateMachine(Q_NULLPTR)
, m_currentTransition(Q_NULLPTR)
, m_bindLate(false)
+ , m_qtMode(false)
{}
QScxmlStateMachine *build(DocumentModel::ScxmlDocument *doc)
@@ -765,6 +766,7 @@ public:
m_parents.reserve(32);
m_allTransitions.reserve(doc->allTransitions.size());
m_docStatesToQStates.reserve(doc->allStates.size());
+ m_qtMode = doc->qtMode;
doc->root->accept(this);
wireTransitions();
@@ -939,8 +941,11 @@ private:
bool visit(DocumentModel::Transition *node) Q_DECL_OVERRIDE
{
+ if (m_qtMode) {
+ m_eventSlots.unite(node->events.toSet());
+ }
+
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
- m_eventSlots.unite(node->events.toSet());
auto newTransition = new QScxmlTransition(node->events);
if (QHistoryState *parent = qobject_cast<QHistoryState*>(m_parents.last())) {
parent->setDefaultTransition(newTransition);
@@ -1016,7 +1021,7 @@ private:
bool visit(DocumentModel::Send *node) Q_DECL_OVERRIDE
{
- if (node->type == QStringLiteral("qt:signal")) {
+ if (m_qtMode && node->type == QStringLiteral("qt:signal")) {
m_eventSignals.insert(node->event);
}
@@ -1088,6 +1093,7 @@ private:
QAbstractTransition *m_currentTransition;
QVector<QPair<QState *, DocumentModel::AbstractState *>> m_initialStates;
bool m_bindLate;
+ bool m_qtMode;
QVector<DocumentModel::DataElement *> m_dataElements;
QSet<QString> m_eventSignals;
QSet<QString> m_eventSlots;
diff --git a/tools/qscxmlc/scxmlcppdumper.cpp b/tools/qscxmlc/scxmlcppdumper.cpp
index 9a38d56..3ccfb0e 100644
--- a/tools/qscxmlc/scxmlcppdumper.cpp
+++ b/tools/qscxmlc/scxmlcppdumper.cpp
@@ -197,6 +197,7 @@ public:
, clazz(clazz)
, translationUnit(tu)
, m_bindLate(false)
+ , m_qtMode(false)
{
if (!tu->namespaceName.isEmpty()) {
namespacePrefix += QStringLiteral("%1::").arg(tu->namespaceName);
@@ -208,6 +209,7 @@ public:
Q_ASSERT(doc);
clazz.className = translationUnit->classnameForDocument.value(doc);
+ m_qtMode = doc->qtMode;
doc->root->accept(this);
@@ -536,10 +538,10 @@ protected:
bool visit(Send *node) Q_DECL_OVERRIDE
{
- if (node->type == QStringLiteral("qt:signal")) {
+ if (m_qtMode && node->type == QStringLiteral("qt:signal")) {
if (!m_signals.contains(node->event)) {
m_signals.insert(node->event);
- clazz.signalMethods << QStringLiteral("void event_%1(const QVariant &data);").arg(CppDumper::mangleId(node->event));
+ clazz.signalMethods << QStringLiteral("void %1(const QVariant &data);").arg(node->event);
}
}
@@ -669,32 +671,36 @@ private:
{
QStringList knownEventsList = m_knownEvents.toList();
std::sort(knownEventsList.begin(), knownEventsList.end());
- foreach (const QString &event, knownEventsList) {
- if (event.startsWith(QStringLiteral("done.")) || event.startsWith(QStringLiteral("qsignal."))
- || event.startsWith(QStringLiteral("qevent."))) {
- continue;
+ if (m_qtMode) {
+ foreach (const QString &event, knownEventsList) {
+ if (event.startsWith(QStringLiteral("done.")) || event.startsWith(QStringLiteral("qsignal."))
+ || event.startsWith(QStringLiteral("qevent."))) {
+ continue;
+ }
+ if (event.contains(QLatin1Char('*')))
+ continue;
+
+ clazz.publicSlotDeclarations << QStringLiteral("void ") + event + QStringLiteral("(const QVariant &eventData = QVariant());");
+ clazz.publicSlotDefinitions << QStringLiteral("void ") + clazz.className
+ + QStringLiteral("::")
+ + event
+ + QStringLiteral("(const QVariant &eventData)\n{ submitEvent(data->") + qba(event)
+ + QStringLiteral(", eventData); }");
}
- if (event.contains(QLatin1Char('*')))
- continue;
-
- clazz.publicSlotDeclarations << QStringLiteral("void event_") + CppDumper::mangleId(event) + QStringLiteral("(const QVariant &eventData = QVariant());");
- clazz.publicSlotDefinitions << QStringLiteral("void ") + clazz.className
- + QStringLiteral("::event_")
- + CppDumper::mangleId(event)
- + QStringLiteral("(const QVariant &eventData)\n{ submitEvent(data->") + qba(event)
- + QStringLiteral(", eventData); }");
}
if (!m_signals.isEmpty()) {
clazz.needsEventFilter = true;
clazz.init.impl << QStringLiteral("stateMachine.setScxmlEventFilter(this);");
auto &dm = clazz.dataMethods;
- dm << QStringLiteral("bool handle(QScxmlEvent *event, QScxmlStateMachine *stateMachine) Q_DECL_OVERRIDE {")
- << QStringLiteral(" if (event->originType() != QStringLiteral(\"qt:signal\")) { return true; }")
- << QStringLiteral(" %1 *m = qobject_cast<%1 *>(stateMachine);").arg(clazz.className);
- foreach (const QString &s, m_signals) {
- dm << QStringLiteral(" if (event->name() == %1) { emit m->event_%2(event->data()); return false; }")
- .arg(qba(s), CppDumper::mangleId(s));
+ dm << QStringLiteral("bool handle(QScxmlEvent *event, QScxmlStateMachine *stateMachine) Q_DECL_OVERRIDE {");
+ if (m_qtMode) {
+ dm << QStringLiteral(" if (event->originType() != QStringLiteral(\"qt:signal\")) { return true; }")
+ << QStringLiteral(" %1 *m = qobject_cast<%1 *>(stateMachine);").arg(clazz.className);
+ foreach (const QString &s, m_signals) {
+ dm << QStringLiteral(" if (event->name() == %1) { emit m->%2(event->data()); return false; }")
+ .arg(qba(s), CppDumper::mangleId(s));
+ }
}
dm << QStringLiteral(" return true;")
<< QStringLiteral("}")
@@ -1037,6 +1043,7 @@ private:
QSet<QString> m_signals;
QString m_currentTransitionName;
bool m_bindLate;
+ bool m_qtMode;
QVector<DocumentModel::DataElement *> m_dataElements;
};
} // anonymous namespace