linphone-desktop/Linphone/view/Item/Form/LoginForm.qml
2024-04-22 18:16:32 +02:00

144 lines
3.4 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as Control
import Linphone
ColumnLayout {
id: mainItem
spacing: 25 * DefaultStyle.dp
signal connectionSucceed()
FormItemLayout {
id: username
label: "Username"
mandatory: true
enableErrorText: true
contentItem: TextField {
id: usernameEdit
Layout.preferredWidth: 360 * DefaultStyle.dp
Layout.preferredHeight: 49 * DefaultStyle.dp
Binding on backgroundBorderColor {
when: errorText.opacity != 0
value: DefaultStyle.danger_500main
}
Binding on color {
when: errorText.opacity != 0
value: DefaultStyle.danger_500main
}
}
}
Item {
Layout.preferredHeight: password.implicitHeight
FormItemLayout {
id: password
label: "Password"
mandatory: true
enableErrorText: true
contentItem: TextField {
id: passwordEdit
Layout.preferredWidth: 360 * DefaultStyle.dp
Layout.preferredHeight: 49 * DefaultStyle.dp
hidden: true
Binding on backgroundBorderColor {
when: errorText.opacity != 0
value: DefaultStyle.danger_500main
}
Binding on color {
when: errorText.opacity != 0
value: DefaultStyle.danger_500main
}
}
}
ErrorText {
id: errorText
anchors.top: password.bottom
Connections {
target: LoginPageCpp
onErrorMessageChanged: {
errorText.text = LoginPageCpp.errorMessage
}
onRegistrationStateChanged: {
if (LoginPageCpp.registrationState === LinphoneEnums.RegistrationState.Ok) {
mainItem.connectionSucceed()
}
}
}
}
}
RowLayout {
Layout.topMargin: 7 * DefaultStyle.dp
spacing: 29 * DefaultStyle.dp
Button {
leftPadding: 20 * DefaultStyle.dp
rightPadding: 20 * DefaultStyle.dp
topPadding: 11 * DefaultStyle.dp
bottomPadding: 11 * DefaultStyle.dp
contentItem: StackLayout {
id: connectionButton
currentIndex: 0
Text {
text: qsTr("Connexion")
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font {
pixelSize: 18 * DefaultStyle.dp
weight: 600 * DefaultStyle.dp
}
color: DefaultStyle.grey_0
}
BusyIndicator {
implicitWidth: parent.height
implicitHeight: parent.height
Layout.alignment: Qt.AlignCenter
indicatorColor: DefaultStyle.grey_0
}
Connections {
target: LoginPageCpp
onRegistrationStateChanged: {
if (LoginPageCpp.registrationState != LinphoneEnums.RegistrationState.Progress) {
connectionButton.currentIndex = 0
}
}
onErrorMessageChanged: {
connectionButton.currentIndex = 0
}
}
}
onClicked: {
username.errorMessage = ""
password.errorMessage = ""
errorText.text = ""
if (usernameEdit.text.length == 0 || passwordEdit.text.length == 0) {
if (usernameEdit.text.length == 0)
username.errorMessage = qsTr("You must enter a username")
if (passwordEdit.text.length == 0)
password.errorMessage = qsTr("You must enter a password")
return
}
LoginPageCpp.login(usernameEdit.text, passwordEdit.text)
connectionButton.currentIndex = 1
}
}
Button {
background: Item {
visible: false
}
contentItem: Text {
color: DefaultStyle.main2_500main
text: "Forgotten password?"
font{
underline: true
pixelSize: 13 * DefaultStyle.dp
weight: 600 * DefaultStyle.dp
}
}
onClicked: console.debug("[LoginForm]User: forgotten password button clicked")
}
}
}