aboutsummaryrefslogtreecommitdiffstats
path: root/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/qtdesignstudio/examples/doc/coffeemachine.qdoc')
-rw-r--r--doc/qtdesignstudio/examples/doc/coffeemachine.qdoc175
1 files changed, 175 insertions, 0 deletions
diff --git a/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc b/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc
new file mode 100644
index 00000000000..7742b7eba46
--- /dev/null
+++ b/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Design Studio documentation.
+**
+** 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.
+**
+****************************************************************************/
+
+/*!
+ \example CoffeeMachine
+ \ingroup studioexamples
+
+ \title Coffee Machine
+ \brief Illustrates how to use the timeline and states to animate transitions
+ in a UI.
+
+ \image coffee-machine-overview.png
+
+ \e {Coffee Machine} lets users choose the type of coffee to brew.
+ They can determine the ratio of coffee, hot milk, and milk foam by using
+ sliders. The progress of the brewing process is displayed as
+ an animation. When the coffee is ready, the startup screen appears again.
+
+ The \e {ApplicationFlow.ui.qml} file contains all the screens in the
+ UI. We use states to display the appropriate screen in the
+ viewport and the timeline to animate the transitions between and on
+ the screens.
+
+ \section1 Application Flow
+
+ On the startup screen, \e {AnimationFlowForm.ui.qml}, users can select
+ from several types of coffee to fill the empty cup. The selection
+ triggers \c animation1 and \c animation2 in \e {CoffeeButton.qml}.
+
+ \quotefromfile CoffeeMachine/CoffeeButton.qml
+ \skipto PropertyAnimation
+ \printuntil }
+ \printuntil }
+ \dots
+
+ Selecting the coffee type triggers the respective signal handler in
+ \e {SideBar.qml}, which sets the default mix for the selected coffee type.
+ The following code snippet displays the \c {cappuccinoButton.onClicked()}
+ signal handler:
+
+ \quotefromfile CoffeeMachine/SideBar.qml
+ \skipto cappuccinoButton.onClicked
+ \printuntil }
+
+ The \c {sideBar.coffeeSelected()} signal sets \c {applicationFlow.state}
+ in \e {ApplicationFlow.qml} to \c "selection". We will specify the states
+ later.
+
+ \quotefromfile CoffeeMachine/ApplicationFlow.qml
+ \skipto choosingCoffee.sideBar.onCoffeeSelected
+ \printuntil }
+
+ \image coffee-machine-selection.png
+
+ Clicking \uicontrol {Brew me a cup} triggers the
+ \c {choosingCoffee.brewButtonSelection.onClicked}
+ signal handler, which changes the application flow
+ state to \c {"to settings"}:
+
+ \quotefromfile CoffeeMachine/ApplicationFlow.qml
+ \skipto choosingCoffee.brewButtonSelection.onClicked
+ \printuntil }
+
+ Users can use the sliders for the amount of milk and
+ sugar to change the default values.
+
+ \image coffee-machine-modify.png
+
+ Clicking \uicontrol Brew triggers the
+ \c {choosingCoffee.brewButton.onClicked()}
+ signal handler, which sets the application
+ flow state to \c {"to empty cup"}.
+
+ \skipto choosingCoffee.brewButton.onClicked
+ \printuntil }
+
+ \image coffee-machine-emptycup.png
+
+ Clicking on \uicontrol Continue triggers the
+ \c {emptyCup.continueButton.onClicked} signal
+ handler, which sets the application flow status
+ to \c {"to brewing"}.
+
+ \skipto emptyCup.continueButton.onClicked
+ \printuntil }
+
+ When the coffee is ready, the \c {brewing.onFinished} signal handler
+ is triggered. It sets the application flow status to \c "reset", so
+ that the application returns to the startup screen.
+
+ \section1 Using Timelines to Animate Transitions
+
+ The Coffee Machine application screens for choosing coffee, empty cup, and
+ brewing each use custom QML types specified in separate QML files.
+
+ We use the \uicontrol Timeline view to animate the transitions between
+ the screens during the application flow in \e {ApplicationFlow.ui.qml}.
+
+ \image coffee-machine-timeline.png
+
+ Our viewport contains 200 frames, so we select the
+ \inlineimage plus.png "Plus button"
+ button to add a 1200-frame timeline to the root element.
+ We use the default values for all other fields.
+
+ To start recording the transition from the startup screen to the coffee
+ selection screen on the timeline, we select \e choosingCoffee in the
+ \uicontrol Navigator. We check that the playhead is at frame 0, and then
+ select the \inlineimage recordfill.png
+ (\uicontrol {Auto Key (K)}) button (or press \key k).
+
+ At frame 0, we set the X coordinate to 0 in \uicontrol Properties >
+ \uicontrol Geometry > \uicontrol Position. We then move the playhead
+ to 400 frames and set the X coordinate to a negative value.
+
+ \image coffee-machine-properties.png
+
+ When we deselect the record button to stop recording the timeline, the
+ new timeline appears in the view.
+
+ For more information about using the timeline, see \l {Creating Animations}.
+
+ \section1 Using States to Move Between Screens
+
+ We use the \uicontrol States view to determine the contents of the
+ viewport. The animations are run when moving from one state to another.
+
+ \image coffee-machine-states.png
+
+ We create the states by moving from viewport to viewport in
+ \e ApplicationFlow.ui.qml and clicking \inlineimage plus.png "Add button"
+ in the \uicontrol States view.
+
+ We also create states for animations that are run when moving to the
+ \c {"settings"} and \c {"selection"} states.
+
+ We then return to the \uicontrol Timeline view and select
+ \inlineimage animation.png "Timeline Settings button"
+ to open the \uicontrol {Timeline Settings} dialog. We select
+ the \uicontrol Add button to create animations for each part
+ of the timeline. Therefore, the start and end frame of each
+ animation are important, whereas their duration is not.
+
+ \image coffee-machine-timeline-settings.png
+
+ We set the start frame for the \c {"selection"} state to 400 and
+ the end frame to 200, because we are moving back on the timeline to display
+ the selection sidebar.
+
+ In the \uicontrol {Transitions to states} field, we select the state to
+ switch to when the animation ends. In the lower part of the dialog, we
+ bind the states that don't have animations to fixed frames.
+*/