linux.x86.linphone/Linphone/view/Page/Login/RegisterPage.qml
2024-04-22 18:16:32 +02:00

264 lines
7.1 KiB
QML

import QtQuick 2.15
import QtQuick.Layouts 1.3
import QtQuick.Controls as Control
import Linphone
LoginLayout {
id: mainItem
signal returnToLogin()
signal registerCalled(countryCode: string, phoneNumber: string, email: string)
readonly property string countryCode: phoneNumberInput.countryCode
readonly property string phoneNumber: phoneNumberInput.phoneNumber
readonly property string email: emailInput.text
titleContent: [
RowLayout {
spacing: 21 * DefaultStyle.dp
Layout.leftMargin: 119 * DefaultStyle.dp
Image {
fillMode: Image.PreserveAspectFit
source: AppIcons.profile
}
Text {
Layout.preferredWidth: width
text: qsTr("Inscription")
font {
pixelSize: 36 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
wrapMode: Text.NoWrap
scaleLettersFactor: 1.1
}
},
Item {
Layout.fillWidth: true
},
RowLayout {
spacing: 20 * DefaultStyle.dp
Layout.rightMargin: 51 * DefaultStyle.dp
Text {
Layout.rightMargin: 15 * DefaultStyle.dp
color: DefaultStyle.main2_700
text: qsTr("Déjà un compte ?")
font {
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
}
Button {
leftPadding: 20 * DefaultStyle.dp
rightPadding: 20 * DefaultStyle.dp
topPadding: 11 * DefaultStyle.dp
bottomPadding: 11 * DefaultStyle.dp
text: qsTr("Connexion")
onClicked: {
console.debug("[RegisterPage] User: return")
returnToLogin()
}
}
}
]
centerContent: [
ColumnLayout {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: 51 * DefaultStyle.dp
anchors.leftMargin: 127 * DefaultStyle.dp
anchors.rightMargin: 127 * DefaultStyle.dp
spacing: 50 * DefaultStyle.dp
TabBar {
Layout.fillWidth: true
id: bar
model: [qsTr("Register with phone number"), qsTr("Register with email")]
}
ColumnLayout {
spacing: 22 * DefaultStyle.dp
ColumnLayout {
spacing: 24 * DefaultStyle.dp
RowLayout {
spacing: 16 * DefaultStyle.dp
FormItemLayout {
label: qsTr("Username")
mandatory: true
contentItem: TextField {
id: usernameInput
Layout.preferredWidth: 346 * DefaultStyle.dp
}
}
RowLayout {
spacing: 10 * DefaultStyle.dp
Layout.alignment: Qt.AlignBottom
ComboBox {
enabled: false
model: [{text:"@sip.linphone.org"}]
Layout.preferredWidth: 210 * DefaultStyle.dp
Layout.preferredHeight: 49 * DefaultStyle.dp
}
EffectImage {
imageSource: AppIcons.lock
colorizationColor: DefaultStyle.main2_600
Layout.preferredWidth: 16 * DefaultStyle.dp
Layout.preferredHeight: 16 * DefaultStyle.dp
}
}
}
StackLayout {
currentIndex: bar.currentIndex
Layout.fillWidth: true
PhoneNumberInput {
id: phoneNumberInput
label: qsTr("Phone number")
mandatory: true
placeholderText: "Phone number"
Layout.preferredWidth: 346 * DefaultStyle.dp
}
FormItemLayout {
label: qsTr("Email")
mandatory: true
contentItem: TextField {
id: emailInput
Layout.preferredWidth: 346 * DefaultStyle.dp
}
}
}
RowLayout {
spacing: 16 * DefaultStyle.dp
ColumnLayout {
spacing: 5 * DefaultStyle.dp
FormItemLayout {
label: qsTr("Password")
mandatory: true
contentItem: TextField {
id: pwdInput
hidden: true
Layout.preferredWidth: 346 * DefaultStyle.dp
}
}
Text {
text: qsTr("The password must contain 6 characters minimum")
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
ColumnLayout {
spacing: 5 * DefaultStyle.dp
FormItemLayout {
label: qsTr("Confirm password")
mandatory: true
contentItem: TextField {
id: confirmPwdInput
hidden: true
Layout.preferredWidth: 346 * DefaultStyle.dp
}
}
Text {
text: qsTr("The password must contain 6 characters minimum")
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
}
}
ColumnLayout {
spacing: 18 * DefaultStyle.dp
RowLayout {
CheckBox {
}
Text {
text: qsTr("I would like to suscribe to the newsletter")
font {
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
}
}
RowLayout {
CheckBox {
id: termsCheckBox
}
RowLayout {
spacing: 0
Layout.fillWidth: true
Text {
// Layout.preferredWidth: 450 * DefaultStyle.dp
text: qsTr("I accept the Terms and Conditions: ")
font {
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
}
Text {
// Layout.preferredWidth: 450 * DefaultStyle.dp
font {
underline: true
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
text: qsTr("Read the Terms and Conditions.")
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
onClicked: console.log("TODO : display terms and conditions")
}
}
Text {
// Layout.preferredWidth: 450 * DefaultStyle.dp
text: qsTr("I accept the Privacy policy: ")
font {
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
}
Text {
// Layout.preferredWidth: 450 * DefaultStyle.dp
font {
underline: true
pixelSize: 14 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
text: qsTr("Read the Privacy policy.")
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
onClicked: console.log("TODO : display privacy policy")
}
}
}
}
}
Button {
// enabled: termsCheckBox.checked && usernameInput.text.length != 0 && pwdInput.text.length != 0 && confirmPwdInput.text.length != 0
// && (phoneNumberInput.phoneNumber.length != 0 || emailInput.text.length != 0)
leftPadding: 20 * DefaultStyle.dp
rightPadding: 20 * DefaultStyle.dp
topPadding: 11 * DefaultStyle.dp
bottomPadding: 11 * DefaultStyle.dp
text: qsTr("Register")
onClicked:{
console.log("[RegisterPage] User: Call register with phone number", phoneNumberInput.phoneNumber)
mainItem.registerCalled(phoneNumberInput.countryCode, phoneNumberInput.phoneNumber, emailInput.text)
}
}
}
},
Image {
anchors.top: parent.top
anchors.right: parent.right
anchors.topMargin: 129 * DefaultStyle.dp
anchors.rightMargin: 127 * DefaultStyle.dp
width: 395 * DefaultStyle.dp
height: 350 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
source: AppIcons.loginImage
}
]
}