diff options
-rw-r--r-- | examples/scxml/scxml.pro | 1 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/Light.qml | 65 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/TrafficLight.qml | 108 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/doc/images/trafficlight.png | bin | 0 -> 4522 bytes | |||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/doc/src/trafficlight-qml-simple.qdoc | 63 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.cpp | 71 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.pro | 14 | ||||
-rw-r--r-- | examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.qrc | 6 |
8 files changed, 328 insertions, 0 deletions
diff --git a/examples/scxml/scxml.pro b/examples/scxml/scxml.pro index 7a93fd4..9da27ce 100644 --- a/examples/scxml/scxml.pro +++ b/examples/scxml/scxml.pro @@ -14,6 +14,7 @@ qtHaveModule(qml) { SUBDIRS += calculator-qml SUBDIRS += trafficlight-qml-static SUBDIRS += trafficlight-qml-dynamic + SUBDIRS += trafficlight-qml-simple SUBDIRS += mediaplayer-qml-static SUBDIRS += mediaplayer-qml-dynamic diff --git a/examples/scxml/trafficlight-qml-simple/Light.qml b/examples/scxml/trafficlight-qml-simple/Light.qml new file mode 100644 index 0000000..8502d35 --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/Light.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtScxml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.5 + +Item { + property color color + height: parent.height / 3 + width: height + + Rectangle { + anchors.fill: parent + anchors.margins: 3 + color: parent.color + radius: width + } +} + diff --git a/examples/scxml/trafficlight-qml-simple/TrafficLight.qml b/examples/scxml/trafficlight-qml-simple/TrafficLight.qml new file mode 100644 index 0000000..da51ded --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/TrafficLight.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtScxml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Window 2.2 +import TrafficLightStateMachine 1.0 + +Window { + id: root + visible: true + width: 100 + height: 350 + + TrafficLightStateMachine { + id: stateMachine + running: true + } + + Item { + id: lights + width: parent.width + height: 300 + + Light { + anchors.top: parent.top + color: "red" + visible: stateMachine.red || stateMachine.redGoingGreen + } + + Light { + anchors.centerIn: parent + color: "yellow" + visible: stateMachine.yellow || stateMachine.blinking + } + + Light { + anchors.bottom: parent.bottom + color: "green" + visible: stateMachine.green + } + } + + Rectangle { + anchors.top: lights.bottom + anchors.bottom: parent.bottom + width: parent.width + border.color: "black" + + Text { + anchors.fill: parent + text: stateMachine.working ? "Pause" : "Unpause" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea { + anchors.fill: parent + onClicked: stateMachine.submitEvent(stateMachine.working ? "smash" : "repair"); + } + } +} diff --git a/examples/scxml/trafficlight-qml-simple/doc/images/trafficlight.png b/examples/scxml/trafficlight-qml-simple/doc/images/trafficlight.png Binary files differnew file mode 100644 index 0000000..ddd7431 --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/doc/images/trafficlight.png diff --git a/examples/scxml/trafficlight-qml-simple/doc/src/trafficlight-qml-simple.qdoc b/examples/scxml/trafficlight-qml-simple/doc/src/trafficlight-qml-simple.qdoc new file mode 100644 index 0000000..f66f5f7 --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/doc/src/trafficlight-qml-simple.qdoc @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example trafficlight-qml-simple + \title Qt SCXML Traffic Light QML Example (Simple) + \ingroup examples-qtscxml + + \brief A Qt Quick application that uses a compiled state machine to + implement a simplified traffic light. + + \image trafficlight.png + + \e{Traffic Light QML Example (Simple)} demonstrates how to connect to the + active properties of a state in a state machine that is compiled to a class. + + The UI is created using Qt Quick. + + \include examples-run.qdocinc + + \include trafficlight-compiling.qdocinc + + \section1 Instantiating the State Machine + + We instantiate the state machine as follows: + + \quotefromfile trafficlight-qml-simple/TrafficLight.qml + + \skipto TrafficLightStateMachine { + \printuntil } + + \include trafficlight-state-machine.qdocinc + + We connect to the states as follows: + + \quotefromfile trafficlight-qml-simple/TrafficLight.qml + \skipto Light { + \printuntil /^ {4}\}/ +*/ diff --git a/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.cpp b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.cpp new file mode 100644 index 0000000..c9950c4 --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtScxml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QGuiApplication> +#include <QQmlApplicationEngine> +#include <QQmlContext> + +#include "statemachine.h" + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + qmlRegisterType<TrafficLightStateMachine>("TrafficLightStateMachine", 1, 0, + "TrafficLightStateMachine"); + + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/TrafficLight.qml"))); + if (engine.rootObjects().isEmpty()) + return -1; + + return app.exec(); +} + diff --git a/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.pro b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.pro new file mode 100644 index 0000000..4de04ea --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.pro @@ -0,0 +1,14 @@ +TEMPLATE = app + +QT += qml scxml +CONFIG += c++11 + +SOURCES += trafficlight-qml-simple.cpp + +RESOURCES += trafficlight-qml-simple.qrc + +STATECHARTS = ../trafficlight-common/statemachine.scxml + +target.path = $$[QT_INSTALL_EXAMPLES]/scxml/trafficlight-qml-simple +INSTALLS += target + diff --git a/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.qrc b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.qrc new file mode 100644 index 0000000..bb75dba --- /dev/null +++ b/examples/scxml/trafficlight-qml-simple/trafficlight-qml-simple.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/"> + <file>TrafficLight.qml</file> + <file>Light.qml</file> + </qresource> +</RCC> |