Files
amnezia-client/client/ui/qml/Components/ConnectButton.qml
T

107 lines
3.2 KiB
QML
Raw Normal View History

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
2023-05-14 21:11:19 +08:00
import ConnectionState 1.0
Button {
id: root
2023-06-01 11:25:33 +08:00
text: qsTr("Connect")
2023-05-14 21:11:19 +08:00
background: Image {
id: border
2023-05-14 21:11:19 +08:00
source: connectionProccess.running ? "/images/connectionProgress.svg" :
2023-06-05 15:49:10 +08:00
ConnectionController.isConnected ? "/images/connectionOff.svg" : "/images/connectionOn.svg"
2023-05-14 21:11:19 +08:00
RotationAnimator {
id: connectionProccess
2023-05-14 21:11:19 +08:00
target: border
running: false
from: 0
to: 360
loops: Animation.Infinite
duration: 1250
}
Behavior on source {
PropertyAnimation { duration: 200 }
}
}
contentItem: Text {
height: 24
font.family: "PT Root UI VF"
font.weight: 700
font.pixelSize: 20
color: "#D7D8DB"
text: root.text
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
onClicked: {
2023-06-05 15:49:10 +08:00
ConnectionController.isConnected ? ConnectionController.closeConnection() : ConnectionController.openConnection()
2023-05-14 21:11:19 +08:00
}
Connections {
target: ConnectionController
function onConnectionStateChanged(state) {
switch(state) {
2023-05-15 13:38:17 +08:00
case ConnectionState.Unknown: {
console.log("Unknown")
break
}
case ConnectionState.Disconnected: {
console.log("Disconnected")
connectionProccess.running = false
2023-06-01 11:25:33 +08:00
root.text = qsTr("Connect")
2023-06-05 15:49:10 +08:00
ConnectionController.isConnected = false
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Preparing: {
console.log("Preparing")
connectionProccess.running = true
2023-06-01 11:25:33 +08:00
root.text = qsTr("Connection...")
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Connecting: {
console.log("Connecting")
connectionProccess.running = true
2023-06-01 11:25:33 +08:00
root.text = qsTr("Connection...")
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Connected: {
console.log("Connected")
connectionProccess.running = false
2023-06-05 15:49:10 +08:00
root.text = qsTr("Disconnect")
ConnectionController.isConnected = true
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Disconnecting: {
console.log("Disconnecting")
connectionProccess.running = true
2023-06-01 11:25:33 +08:00
root.text = qsTr("Disconnection...")
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Reconnecting: {
console.log("Reconnecting")
connectionProccess.running = true
2023-06-01 11:25:33 +08:00
root.text = qsTr("Reconnection...")
2023-05-15 13:38:17 +08:00
break
}
case ConnectionState.Error: {
console.log("Error")
connectionProccess.running = false
break
}
2023-05-14 21:11:19 +08:00
}
}
}
}