diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2016-03-09 16:38:29 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2016-03-30 11:56:40 +0000 |
commit | a14b1e4c4787fa1e4a7d470444c248fd08817105 (patch) | |
tree | 53cd8d65c7aa8a983e1381a072a511c81ee028c5 /examples | |
parent | 703c6a6bee98c5d316de408867982b1684ad550b (diff) |
Change examples to follow best practices
Adding QObjects as context properties to QML engines is not the best
way to interoperate between QML and C++. This change exposes all state
machines as proper QML components and instantiates them from QML. Also,
it drops all the now unnecessary init() calls.
Change-Id: Id44b4038542dd9469e02831c1bb54f096af1b6ff
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'examples')
13 files changed, 31 insertions, 28 deletions
diff --git a/examples/scxml/calculator/main.cpp b/examples/scxml/calculator/main.cpp index 2587e2b..af51f8f 100644 --- a/examples/scxml/calculator/main.cpp +++ b/examples/scxml/calculator/main.cpp @@ -58,7 +58,6 @@ int main(int argc, char **argv) QApplication app(argc, argv); Calculator machine; - machine.init(); MainWindow mainWindow(&machine); machine.start(); diff --git a/examples/scxml/invoke-static/invoke-static.cpp b/examples/scxml/invoke-static/invoke-static.cpp index c955ebe..d53eb48 100644 --- a/examples/scxml/invoke-static/invoke-static.cpp +++ b/examples/scxml/invoke-static/invoke-static.cpp @@ -58,15 +58,12 @@ int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - Directions stateMachine; + qmlRegisterType<Directions>("Directions", 1, 0, "Directions"); QQmlApplicationEngine engine; - engine.rootContext()->setContextProperty(QStringLiteral("directions"), &stateMachine); engine.load(QUrl(QStringLiteral("qrc:/invoke-static.qml"))); if (engine.rootObjects().isEmpty()) return -1; - stateMachine.start(); - return app.exec(); } diff --git a/examples/scxml/invoke-static/invoke-static.qml b/examples/scxml/invoke-static/invoke-static.qml index 68f0556..dc59e1b 100644 --- a/examples/scxml/invoke-static/invoke-static.qml +++ b/examples/scxml/invoke-static/invoke-static.qml @@ -48,6 +48,10 @@ ** ****************************************************************************/ +import Directions 1.0 + MainView { - stateMachine: directions + stateMachine: Directions { + running: true + } } diff --git a/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.cpp b/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.cpp index 461e84f..e0d97b1 100644 --- a/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.cpp +++ b/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.cpp @@ -59,14 +59,10 @@ int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - MediaPlayerStateMachine stateMachine; - TheDataModel dataModel; - stateMachine.setDataModel(&dataModel); - stateMachine.init(); - stateMachine.start(); + qmlRegisterType<TheDataModel>("MediaPlayerDataModel", 1, 0, "MediaPlayerDataModel"); + qmlRegisterType<MediaPlayerStateMachine>("MediaPlayerStateMachine", 1, 0, "MediaPlayerStateMachine"); QQmlApplicationEngine engine; - engine.rootContext()->setContextProperty(QStringLiteral("mediaPlayerStateMachine"), &stateMachine); engine.load(QUrl(QStringLiteral("qrc:///mediaplayer-qml-cppdatamodel.qml"))); return app.exec(); diff --git a/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.qml b/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.qml index 252d69b..b1aacb1 100644 --- a/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.qml +++ b/examples/scxml/mediaplayer-qml-cppdatamodel/mediaplayer-qml-cppdatamodel.qml @@ -48,6 +48,16 @@ ** ****************************************************************************/ +import MediaPlayerStateMachine 1.0 +import MediaPlayerDataModel 1.0 + Mediaplayer { - stateMachine: mediaPlayerStateMachine + MediaPlayerDataModel { + id: model + } + + stateMachine: MediaPlayerStateMachine { + onDataModelChanged: start() + dataModel: model + } } diff --git a/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.cpp b/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.cpp index 9aa1ea3..6dd263e 100644 --- a/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.cpp +++ b/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.cpp @@ -58,12 +58,9 @@ int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - MediaPlayerStateMachine stateMachine; - stateMachine.init(); - stateMachine.start(); + qmlRegisterType<MediaPlayerStateMachine>("MediaPlayerStateMachine", 1, 0, "MediaPlayerStateMachine"); QQmlApplicationEngine engine; - engine.rootContext()->setContextProperty(QStringLiteral("mediaPlayerStateMachine"), &stateMachine); engine.load(QUrl(QStringLiteral("qrc:///mediaplayer-qml-static.qml"))); if (engine.rootObjects().isEmpty()) return -1; diff --git a/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.qml b/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.qml index 252d69b..170b938 100644 --- a/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.qml +++ b/examples/scxml/mediaplayer-qml-static/mediaplayer-qml-static.qml @@ -48,6 +48,10 @@ ** ****************************************************************************/ +import MediaPlayerStateMachine 1.0 + Mediaplayer { - stateMachine: mediaPlayerStateMachine + stateMachine: MediaPlayerStateMachine { + running: true + } } diff --git a/examples/scxml/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp b/examples/scxml/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp index f36a62e..eba0fba 100644 --- a/examples/scxml/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp +++ b/examples/scxml/mediaplayer-widgets-dynamic/mediaplayer-widgets-dynamic.cpp @@ -58,7 +58,6 @@ int main(int argc, char **argv) QApplication app(argc, argv); auto machine = QScxmlStateMachine::fromFile(QStringLiteral(":mediaplayer.scxml")); - machine->init(); MainWindow mainWindow; machine->setParent(&mainWindow); diff --git a/examples/scxml/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp b/examples/scxml/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp index dcc6d59..1668eac 100644 --- a/examples/scxml/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp +++ b/examples/scxml/mediaplayer-widgets-static/mediaplayer-widgets-static.cpp @@ -58,7 +58,6 @@ int main(int argc, char **argv) QApplication app(argc, argv); MediaPlayerStateMachine machine; - machine.init(); MainWindow mainWindow; QObject::connect(&mainWindow, &MainWindow::tap, diff --git a/examples/scxml/pinball/main.cpp b/examples/scxml/pinball/main.cpp index 4b4c06e..832f004 100644 --- a/examples/scxml/pinball/main.cpp +++ b/examples/scxml/pinball/main.cpp @@ -59,7 +59,6 @@ int main(int argc, char **argv) Pinball machine; MainWindow mainWindow(&machine); - machine.init(); machine.start(); mainWindow.show(); diff --git a/examples/scxml/trafficlight-common/trafficlight.cpp b/examples/scxml/trafficlight-common/trafficlight.cpp index 6cbed1b..c14d4dc 100644 --- a/examples/scxml/trafficlight-common/trafficlight.cpp +++ b/examples/scxml/trafficlight-common/trafficlight.cpp @@ -102,8 +102,6 @@ TrafficLight::TrafficLight(QScxmlStateMachine *machine, QWidget *parent) TrafficLightWidget *widget = new TrafficLightWidget(this); setFixedSize(widget->sizeHint()); - Q_ASSERT(machine->init()); - machine->connectToState(QStringLiteral("red"), widget->redLight(), SLOT(switchLight(bool))); machine->connectToState(QStringLiteral("redGoingGreen"), diff --git a/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.cpp b/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.cpp index f675a68..30b5950 100644 --- a/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.cpp +++ b/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.cpp @@ -58,16 +58,13 @@ int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - TrafficLightStateMachine stateMachine; + qmlRegisterType<TrafficLightStateMachine>("TrafficLightStateMachine", 1, 0, "TrafficLightStateMachine"); QQmlApplicationEngine engine; - engine.rootContext()->setContextProperty(QStringLiteral("trafficLightStateMachine"), &stateMachine); engine.load(QUrl(QStringLiteral("qrc:/trafficlight-qml-static.qml"))); if (engine.rootObjects().isEmpty()) return -1; - stateMachine.start(); - return app.exec(); } diff --git a/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.qml b/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.qml index 28024a0..e0bd89d 100644 --- a/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.qml +++ b/examples/scxml/trafficlight-qml-static/trafficlight-qml-static.qml @@ -48,6 +48,10 @@ ** ****************************************************************************/ +import TrafficLightStateMachine 1.0 + TrafficLight { - stateMachine: trafficLightStateMachine + stateMachine: TrafficLightStateMachine { + running: true + } } |