// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \example statemachine/twowaybutton
    \title Two-way Button Example
    \ingroup examples-qtstatemachine

    \brief The Two-way button example shows how to use
    \l{Qt State Machine Overview}{Qt State Machine Framework}
    to implement a simple state machine that toggles the current
    state when a button is clicked.

    \image twowaybutton-example.png

    \snippet statemachine/twowaybutton/main.cpp 0

    The application's main() function begins by constructing the application
    object, a button and a state machine.

    \snippet statemachine/twowaybutton/main.cpp 1

    \image twowaybutton-chart.png

    The state machine has two states; \c on and \c off. When either state is
    entered, the text of the button will be set accordingly.

    \snippet statemachine/twowaybutton/main.cpp 2

    When the state machine is in the \c off state and the button is clicked,
    it will transition to the \c on state; when the state machine is in the \c
    on state and the button is clicked, it will transition to the \c off
    state.

    \snippet statemachine/twowaybutton/main.cpp 3

    The states are added to the state machine; they become top-level (sibling)
    states.

    \snippet statemachine/twowaybutton/main.cpp 4

    The initial state is \c off; this is the state the state machine will
    immediately transition to once the state machine is started.

    \snippet statemachine/twowaybutton/main.cpp 5

    Finally, the button is resized and made visible, and the application event
    loop is entered.

*/
