Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
trinity/qml/AccountCreation.qml

149 lines
3.9 KiB
QML
Raw Normal View History

2021-07-21 16:08:15 -04:00
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtGraphicalEffects 1.0
import QtQuick.Shapes 1.0
Rectangle {
id: accountCreation
color: Qt.rgba(0.1, 0.1, 0.1, 1.0)
Rectangle {
width: 700
height: parent.height
anchors.horizontalCenter: parent.horizontalCenter
color: "transparent"
BackButton {
id: backButton
anchors.top: parent.top
anchors.topMargin: 15
anchors.right: parent.right
}
Rectangle {
width: 200
height: 300
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
color: "transparent"
Text {
id: accountCreationLabel
anchors.top: parent.top
anchors.topMargin: 15
text: "Create an account"
font.pointSize: 18
color: "white"
}
Text {
id: usernameLabel
anchors.top: accountCreationLabel.bottom
anchors.topMargin: 10
text: "Username"
color: "white"
}
TextField {
id: usernameField
anchors.top: usernameLabel.bottom
}
Text {
id: passwordLabel
anchors.top: usernameField.bottom
text: "Password"
color: "white"
}
TextField {
id: passwordField
anchors.top: passwordLabel.bottom
echoMode: TextInput.Password
}
Button {
id: registerButton
anchors.top: passwordField.bottom
anchors.topMargin: 15
anchors.horizontalCenter: parent.horizontalCenter
text: "Register"
onClicked: {
setRegisterState(false)
matrix.registerAccount(usernameField.text, passwordField.text)
}
}
}
}
Connections {
target: matrix
onRegisterAttempt: {
setRegisterState(true)
if(error) {
showDialog("Error while registering account", description)
} else {
desktop.showTrayIcon(true)
stack.push("qrc:/Client.qml", {replace: true})
}
}
onRegisterFlow: {
if(data["type"] === "m.login.recaptcha") {
Qt.openUrlExternally("https://" + matrix.homeserverURL + "/_matrix/client/r0/auth/m.login.recaptcha/fallback/web?session=" + data["session"])
showDialog("Needs additional authentication", "Please complete the recaptcha", [
{
text: "Done",
onClicked: function(dialog) {
matrix.registerAccount(usernameField.text, passwordField.text, data["session"], data["type"])
}
},
{
text: "Cancel",
onClicked: function(dialog) {
dialog.close()
setRegisterState(false)
}
}
])
} else if(data["type"] === "m.login.dummy") {
matrix.registerAccount(usernameField.text, passwordField.text, data["session"], data["type"])
}
}
}
property var setRegisterState: function(enabled) {
usernameField.enabled = enabled
passwordField.enabled = enabled
registerButton.enabled = enabled
backButton.enabled = enabled
}
}