diff options
Diffstat (limited to 'examples/bluetooth/heartrate_game/HeartRateGame/App.qml')
-rw-r--r-- | examples/bluetooth/heartrate_game/HeartRateGame/App.qml | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/App.qml b/examples/bluetooth/heartrate_game/HeartRateGame/App.qml new file mode 100644 index 000000000..db6aa7145 --- /dev/null +++ b/examples/bluetooth/heartrate_game/HeartRateGame/App.qml @@ -0,0 +1,99 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Layouts +import HeartRateGame + +Item { + id: app + + required property ConnectionHandler connectionHandler + required property DeviceFinder deviceFinder + required property DeviceHandler deviceHandler + + anchors.fill: parent + opacity: 0.0 + + Behavior on opacity { + NumberAnimation { + duration: 500 + } + } + + property int __currentIndex: 0 + + TitleBar { + id: titleBar + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + currentIndex: app.__currentIndex + + onTitleClicked: (index) => { + if (index < app.__currentIndex) + app.__currentIndex = index + } + } + + StackLayout { + id: pageStack + anchors.left: parent.left + anchors.right: parent.right + anchors.top: titleBar.bottom + anchors.bottom: parent.bottom + currentIndex: app.__currentIndex + + Connect { + connectionHandler: app.connectionHandler + deviceFinder: app.deviceFinder + deviceHandler: app.deviceHandler + + onShowMeasurePage: app.__currentIndex = 1 + } + Measure { + id: measurePage + deviceHandler: app.deviceHandler + + onShowStatsPage: app.__currentIndex = 2 + } + Stats { + deviceHandler: app.deviceHandler + } + + onCurrentIndexChanged: { + if (currentIndex === 0) + measurePage.close() + } + } + + BluetoothAlarmDialog { + id: btAlarmDialog + anchors.fill: parent + visible: !app.connectionHandler.alive || permissionError + permissionError: !app.connectionHandler.hasPermission + } + + Keys.onReleased: (event) => { + switch (event.key) { + case Qt.Key_Escape: + case Qt.Key_Back: + { + if (app.__currentIndex > 0) { + app.__currentIndex = app.__currentIndex - 1 + event.accepted = true + } else { + Qt.quit() + } + break + } + default: + break + } + } + + Component.onCompleted: { + forceActiveFocus() + app.opacity = 1.0 + } +} |