LedDisplay/LedDisplayController/ressources/qml/main.qml

279 lines
7.2 KiB
QML
Raw Normal View History

2020-10-11 15:50:13 +02:00
import QtQuick 2.12
import QtQuick.Controls 2.0
import QtQuick.Window 2.12
2020-10-18 15:08:12 +02:00
import de.itsblue.LedDisplayController 1.0
2020-10-11 15:50:13 +02:00
import de.itsblue.bluetoothleuart 1.0
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.0
2020-10-11 15:50:13 +02:00
ApplicationWindow {
width: 540
height: 960
visible: true
title: qsTr("Itsblue smart display")
2020-10-11 15:50:13 +02:00
Page {
id: app
state: backend.state
onStateChanged: {
console.log("new state: " + state)
}
anchors.fill: parent
Material.accent: "#0094ff"
2020-10-18 15:20:55 +02:00
Material.theme: Material.Light
2020-10-11 15:50:13 +02:00
header: ToolBar {
id: headerToolBar
height: 50
implicitWidth: parent.width
2020-10-11 15:50:13 +02:00
Material.background: "white"
RowLayout {
2020-10-11 15:50:13 +02:00
anchors.fill: parent
ToolButton {
id: backToolButton
enabled: false
Layout.fillHeight: true
Layout.preferredWidth: height
opacity: mainStack.currentItem.backButtonVisible ? 1:0
font.family: fontAwesome.name
font.pixelSize: height * 0.6
Material.foreground: "black"
text: "\uf104"
contentItem: Item {}
Text {
anchors.centerIn: parent
font.pixelSize: parent.font.pixelSize
text: parent.text
}
onClicked: mainStack.currentItem.backButtonClicked()
}
Label {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.alignment: Layout.Center
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: "black"
text: mainStack.currentItem.title
}
ToolButton {
id: actionToolButton
Layout.fillHeight: true
Layout.preferredWidth: height
opacity: mainStack.currentItem.actionButtonVisible ? 1:0
2020-10-11 15:50:13 +02:00
font.family: fontAwesome.name
font.pixelSize: height * 0.4
Material.foreground: "black"
flat: true
text: "\uf013"
onClicked: mainStack.currentItem.actionButtonClicked()
}
}
2020-10-11 15:50:13 +02:00
}
2020-10-18 15:08:12 +02:00
LedDisplayBackend {
2020-10-11 15:50:13 +02:00
id: backend
}
2020-10-17 03:22:37 +02:00
FontLoader {
id: fontAwesome
source: "qrc:/fa5solid.woff"
Component.onCompleted: {
console.log("Font name: " + fontAwesome.name)
}
2020-10-17 03:22:37 +02:00
}
FontLoader {
id: fontAwesomeBrands
source: "qrc:/fa5brands.woff"
Component.onCompleted: {
console.log("Font name: " + fontAwesome.name)
}
}
2020-10-11 15:50:13 +02:00
StackView {
id: mainStack
anchors.fill: parent
property Component currentComponent
onCurrentComponentChanged: {
if(currentComponent != currentItem)
mainStack.replace(currentComponent)
2020-10-11 15:50:13 +02:00
}
onCurrentItemChanged: {
currentItem.opened()
}
initialItem: connectedPageComp
2020-10-11 21:01:21 +02:00
replaceEnter: Transition {
NumberAnimation {
properties: "opacity"
from: 0
to: 1
}
}
replaceExit: Transition {
NumberAnimation {
properties: "opacity"
from: 1
to: 0
}
}
2020-10-11 15:50:13 +02:00
Component {
id: connectPageComp
ConnectPage {
state: app.state
}
}
Component {
id: connectedPageComp
ConnectedPage {
opacity: 0
2020-10-11 15:50:13 +02:00
state: app.state
}
}
}
states: [
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Idle
2020-10-11 15:50:13 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.BluetoothOff
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.LocationPermissionDenied
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
2020-10-11 15:50:13 +02:00
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Scanning
2020-10-11 15:50:13 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
2020-10-11 15:50:13 +02:00
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.ReadyToConnect
2020-10-11 15:50:13 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Connecting
2020-10-11 15:50:13 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
2020-10-17 01:08:23 +02:00
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.AuthenticationRequired
2020-10-17 01:08:23 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Authenticating
2020-10-17 01:08:23 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Initing
PropertyChanges {
target: mainStack
currentComponent: connectPageComp
}
},
2020-10-11 15:50:13 +02:00
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Connected
2020-10-11 15:50:13 +02:00
PropertyChanges {
target: mainStack
currentComponent: connectedPageComp
}
PropertyChanges {
target: headerToolBar
state: "open"
}
PropertyChanges {
target: backToolButton
enabled: true
}
},
State {
2020-10-18 15:08:12 +02:00
name: LedDisplayBackend.Loading
PropertyChanges {
target: mainStack
currentComponent: connectedPageComp
}
PropertyChanges {
target: headerToolBar
state: "open"
}
PropertyChanges {
target: backToolButton
enabled: true
}
2020-10-11 15:50:13 +02:00
}
]
}
}