import QtQuick import QtQuick.Layouts import QtQuick.Controls.Basic as Control import Linphone import ConstantsCpp 1.0 import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils import "qrc:/qt/qml/Linphone/view/Style/buttonStyle.js" as ButtonStyle ColumnLayout { id: mainItem spacing: Utils.getSizeWithScreenRatio(8) FormItemLayout { id: username Layout.preferredWidth: Utils.getSizeWithScreenRatio(346) //: Nom d'utilisateur : username label: qsTr("username") mandatory: true enableErrorText: true contentItem: TextField { id: usernameEdit Layout.preferredWidth: Utils.getSizeWithScreenRatio(360) Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) isError: username.errorTextVisible || (errorText.isVisible && text.length > 0) onAccepted: passwordEdit.forceActiveFocus() //: "%1 mandatory" Accessible.name: qsTr("mandatory_field_accessible_name").arg(qsTr("username")) } } Item { Layout.preferredHeight: password.implicitHeight FormItemLayout { id: password width: Utils.getSizeWithScreenRatio(346) //: Mot de passe label: qsTr("password") mandatory: true enableErrorText: true contentItem: TextField { id: passwordEdit Layout.preferredWidth: Utils.getSizeWithScreenRatio(360) Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) isError: password.errorTextVisible || (errorText.isVisible && text.length > 0) hidden: true onAccepted: connectionButton.trigger() Accessible.name: qsTr("password") } TemporaryText { id: errorText anchors.bottom: parent.bottom Connections { target: LoginPageCpp function onErrorMessageChanged() { if (passwordEdit.text.length > 0 || usernameEdit.text.length > 0) errorText.setText(LoginPageCpp.errorMessage); } } } } } RowLayout { Layout.topMargin: Utils.getSizeWithScreenRatio(7) spacing: Utils.getSizeWithScreenRatio(29) BigButton { id: connectionButton style: ButtonStyle.main Accessible.name: qsTr("assistant_account_login") contentItem: StackLayout { id: connectionButtonContent currentIndex: 0 Text { //: "Connexion" text: qsTr("assistant_account_login") horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter font { pixelSize: Typography.b1.pixelSize weight: Typography.b1.weight } color: DefaultStyle.grey_0 } BusyIndicator { implicitWidth: parent.height implicitHeight: parent.height Layout.alignment: Qt.AlignCenter indicatorColor: DefaultStyle.grey_0 indicatorWidth: Utils.getSizeWithScreenRatio(25) } Connections { target: LoginPageCpp function onRegistrationStateChanged() { if (LoginPageCpp.registrationState != LinphoneEnums.RegistrationState.Progress) { connectionButton.enabled = true; connectionButtonContent.currentIndex = 0; } } function onErrorMessageChanged() { connectionButton.enabled = true; connectionButtonContent.currentIndex = 0; } } } function trigger() { username.errorMessage = ""; password.errorMessage = ""; errorText.text = ""; if (usernameEdit.text.length == 0 || passwordEdit.text.length == 0) { if (usernameEdit.text.length == 0) //: "Veuillez saisir un nom d'utilisateur" username.errorMessage = qsTr("assistant_account_login_missing_username"); if (passwordEdit.text.length == 0) //: "Veuillez saisir un mot de passe" password.errorMessage = qsTr("assistant_account_login_missing_password"); return; } LoginPageCpp.login(usernameEdit.text, passwordEdit.text); connectionButton.enabled = false; connectionButtonContent.currentIndex = 1; } onPressed: connectionButton.trigger() } SmallButton { id: forgottenButton style: ButtonStyle.noBackground //: "Mot de passe oubliƩ ?" text: qsTr("assistant_forgotten_password") underline: true onClicked: Qt.openUrlExternally(ConstantsCpp.PasswordRecoveryUrl) } } }