LedDisplay/LedDisplayController/ressources/qml/main.qml

307 lines
8.4 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
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()
}
2022-08-03 09:09:31 +02:00
ToolButton {
visible: mainStack.currentItem.actionButtonVisible
opacity: 0
enabled: false
}
Label {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.alignment: Layout.Center
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: "black"
text: mainStack.currentItem.title
}
2022-08-03 09:09:31 +02:00
ToolButton {
id: infoToolButton
Layout.fillHeight: true
Layout.preferredWidth: height
font.family: fontAwesome.name
font.pixelSize: height * 0.4
Material.foreground: "black"
flat: true
text: "\uf05a"
onClicked: infoDisclaimerDialog.open()
}
ToolButton {
id: actionToolButton
Layout.fillHeight: true
Layout.preferredWidth: height
2022-08-03 09:09:31 +02:00
visible: mainStack.currentItem.actionButtonVisible
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
}
]
2022-08-03 09:09:31 +02:00
DisclaimerDialog {
id: infoDisclaimerDialog
title: "LedDisplayController v" + APP_VERSION + "<br>By <a href=\"https://itsblue.de\">Itsblue Development</a>, <a href=\"https://itsblue.de/apps/bluerock\">" + qsTr("privacy policy") + "</a>"
content: qsTr("This app was built using the <a href='https://qt.io'>Qt Framework</a> licensed under the <a href='https://www.gnu.org/licenses/lgpl-3.0.en.html'>GNU lgplV3 license</a>.<br><br>This app is open source and licensed under the <a href='https://www.gnu.org/licenses/agpl-3.0.en.html'>GNU agplV3 license</a>, the source code can be found <a href='https://itsblue.dev/fenoglion/omobileddisplay'>here</a>.")
}
2020-10-11 15:50:13 +02:00
}
}