mirror of https://github.com/qt/qtdoc.git
225 lines
6.8 KiB
QML
225 lines
6.8 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
import QtQuick
|
|
|
|
ApplicationFlowForm {
|
|
id: applicationFlow
|
|
state: "Home"
|
|
property int animationDuration: 400
|
|
property string platform: Qt.platform.os
|
|
|
|
CoffeeConfig {
|
|
id: coffeeConfig
|
|
}
|
|
|
|
|
|
|
|
stack.initialItem: Home {
|
|
id: home
|
|
visible: true
|
|
//! [On clicked]
|
|
getStartedbutton.onClicked: {
|
|
applicationFlow.state = "Coffee-selection"
|
|
applicationFlow.stack.pushItem(applicationFlow.choosingCoffee, {appFlow: applicationFlow})
|
|
}
|
|
//! [On clicked]
|
|
}
|
|
|
|
//! [Theme button]
|
|
function themeButton() {
|
|
if (Colors.currentTheme == Colors.dark) {
|
|
Colors.currentTheme = Colors.light
|
|
} else {
|
|
Colors.currentTheme = Colors.dark
|
|
}
|
|
}
|
|
//! [Theme button]
|
|
function cappuccino() {
|
|
applicationFlow.state = "Settings"
|
|
applicationFlow.coffeeName = "Cappuccino"
|
|
coffeeConfig.coffeeAmount = 60
|
|
coffeeConfig.milkAmount = 60
|
|
coffeeConfig.foamAmount = 60
|
|
coffeeConfig.brewTime = 5000
|
|
coffeeConfig.sugarAmount = 0
|
|
stack.pushItem(settings, {appFlow: applicationFlow, coffeeConfig})
|
|
coffeeText.text = "Cappuccino"
|
|
}
|
|
function espresso() {
|
|
applicationFlow.state = "Settings"
|
|
applicationFlow.coffeeName = "Espresso"
|
|
coffeeConfig.coffeeAmount = 80
|
|
coffeeConfig.milkAmount = 0
|
|
coffeeConfig.foamAmount = 0
|
|
coffeeConfig.brewTime = 4000
|
|
coffeeConfig.sugarAmount = 0
|
|
stack.pushItem(settings, {appFlow: applicationFlow, coffeeConfig})
|
|
coffeeText.text = "Espresso"
|
|
}
|
|
function latte() {
|
|
applicationFlow.state = "Settings"
|
|
applicationFlow.coffeeName = "Latte"
|
|
coffeeConfig.coffeeAmount = 40
|
|
coffeeConfig.milkAmount = 20
|
|
coffeeConfig.foamAmount = 60
|
|
coffeeConfig.brewTime = 6000
|
|
coffeeConfig.sugarAmount = 0
|
|
stack.pushItem(settings, {appFlow: applicationFlow, coffeeConfig})
|
|
coffeeText.text = "Latte"
|
|
}
|
|
function macchiato() {
|
|
applicationFlow.state = "Settings"
|
|
applicationFlow.coffeeName = "Macchiato"
|
|
coffeeConfig.coffeeAmount = 100
|
|
coffeeConfig.milkAmount = 5
|
|
coffeeConfig.foamAmount = 10
|
|
coffeeConfig.brewTime = 8000
|
|
coffeeConfig.sugarAmount = 0
|
|
stack.pushItem(settings, {appFlow: applicationFlow, coffeeConfig})
|
|
coffeeText.text = "Macchiato"
|
|
}
|
|
function backButton() {
|
|
stack.pop()
|
|
applicationFlow.state = applicationFlow.previousState
|
|
}
|
|
function confirmButton() {
|
|
stack.pushItem(insert, {appFlow: applicationFlow})
|
|
applicationFlow.state = "Insert"
|
|
}
|
|
function continueButton() {
|
|
stack.pushItem(progress, {appFlow: applicationFlow, coffeeConfig})
|
|
applicationFlow.state = "Progress"
|
|
applicationFlow.progressBarValue = 1
|
|
applicationFlow.progressCupState = "1"
|
|
if (applicationFlow.coffeeName == "Cappuccino") {
|
|
applicationFlow.cappuccinos = applicationFlow.cappuccinos - 1
|
|
} else if (applicationFlow.coffeeName == "Espresso") {
|
|
applicationFlow.espressos = applicationFlow.espressos - 1
|
|
} else if (applicationFlow.coffeeName == "Latte") {
|
|
applicationFlow.lattes = applicationFlow.lattes - 1
|
|
} else {
|
|
applicationFlow.macchiatos = applicationFlow.macchiatos - 1
|
|
}
|
|
}
|
|
function cancelButton() {
|
|
applicationFlow.state = "Coffee-selection"
|
|
stack.pop(stack.get(1))
|
|
}
|
|
function onFinished() {
|
|
stack.pushItem(ready, {appFlow: applicationFlow, coffeeConfig})
|
|
applicationFlow.state = "Ready"
|
|
}
|
|
function onReturnToStart() {
|
|
stack.pop(stack.get(0))
|
|
applicationFlow.state = "Home"
|
|
applicationFlow.progressBarValue = 0
|
|
applicationFlow.progressCupState = "0"
|
|
}
|
|
|
|
toolbar.onBackClicked: applicationFlow.backButton()
|
|
toolbar.onThemeChangeRequested: applicationFlow.themeButton()
|
|
|
|
//! [States]
|
|
states: [
|
|
State {
|
|
name: "Home"
|
|
PropertyChanges {
|
|
target: toolbar
|
|
backButton.opacity: 0
|
|
backButton.enabled: false
|
|
themeButton.opacity: 0
|
|
themeButton.enabled: false
|
|
logo.sourceSize.width: 70
|
|
logo.sourceSize.height: 50
|
|
}
|
|
//! [States]
|
|
PropertyChanges {
|
|
target: coffeeText
|
|
visible: false
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
},
|
|
State {
|
|
name: "Coffee-selection"
|
|
PropertyChanges {
|
|
target: applicationFlow
|
|
previousState: "Home"
|
|
|
|
}
|
|
PropertyChanges {
|
|
target: coffeeText
|
|
text: "Coffee Selection"
|
|
}
|
|
PropertyChanges {
|
|
target: toolbar
|
|
backButton.opacity: 0
|
|
backButton.enabled: false
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
},
|
|
State {
|
|
name: "Settings"
|
|
PropertyChanges {
|
|
target: applicationFlow
|
|
previousState: "Coffee-selection"
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
},
|
|
State {
|
|
name: "Insert"
|
|
PropertyChanges {
|
|
target: applicationFlow
|
|
previousState: "Settings"
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
},
|
|
State {
|
|
name: "Progress"
|
|
PropertyChanges {
|
|
target: applicationFlow
|
|
previousState: "Insert"
|
|
|
|
}
|
|
PropertyChanges {
|
|
target: toolbar
|
|
backButton.opacity: 0
|
|
backButton.enabled: false
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
},
|
|
State {
|
|
name: "Ready"
|
|
PropertyChanges {
|
|
target: applicationFlow
|
|
previousState: "Progress"
|
|
|
|
}
|
|
PropertyChanges {
|
|
target: toolbar
|
|
backButton.opacity: 0
|
|
backButton.enabled: false
|
|
}
|
|
PropertyChanges {
|
|
target: stack
|
|
anchors.top: coffeeText.bottom
|
|
}
|
|
}
|
|
|
|
]
|
|
}
|