219 lines
6.0 KiB
QML
219 lines
6.0 KiB
QML
import QtQuick
|
|
import QtQuick.Controls.impl
|
|
import QtQuick.Layouts
|
|
import TeroStyle
|
|
|
|
ColumnLayout {
|
|
readonly property int fieldM: 235
|
|
readonly property int fieldS: 110
|
|
readonly property bool valid: emailAddress.acceptableInput && firstName.acceptableInput && houseNumber.acceptableInput && lastName.acceptableInput && mobileNumber.acceptableInput && phoneNumber.acceptableInput && salutation.acceptableInput&& street.acceptableInput && title.acceptableInput && zipCode.acceptableInput
|
|
readonly property var value: QtObject {
|
|
readonly property string emailAddress: emailAddress.text ?? ""
|
|
readonly property string firstName: firstName.text ?? ""
|
|
readonly property string houseNumber: houseNumber.text ?? ""
|
|
readonly property string lastName: lastName.text ?? ""
|
|
readonly property string mobileNumber: mobileNumber.text ?? ""
|
|
readonly property string phoneNumber: phoneNumber.text ?? ""
|
|
readonly property string salutation: salutation.text ?? ""
|
|
readonly property string street: street.text ?? ""
|
|
readonly property string title: title.currentText
|
|
readonly property int zipCode: zipCode.currentIndex
|
|
}
|
|
|
|
function setValue(value) {
|
|
title.currentIndex = value.title ?? 0;
|
|
firstName.text = value.firstName ?? "";
|
|
lastName.text = value.lastName ?? "";
|
|
street.text = value.street ?? "";
|
|
houseNumber.text = value.houseNumber ?? "";
|
|
zipCode.currentIndex = value.zipCode ?? -1;
|
|
phoneNumber.text = value.phoneNumber ?? "";
|
|
mobileNumber.text = value.mobileNumber ?? "";
|
|
emailAddress.text = value.emailAddress ?? "";
|
|
salutation.text = value.salutation ?? 0;
|
|
}
|
|
|
|
spacing: Dimensions.l
|
|
|
|
IconLabel {
|
|
color: Colors.foreground
|
|
font: Typography.h2
|
|
icon.color: Colors.foreground
|
|
icon.height: Typography.h2.pixelSize
|
|
icon.source: "qrc:/images/UserCircle"
|
|
icon.width: Typography.h2.pixelSize
|
|
spacing: Dimensions.m
|
|
text: qsTr("Stammdaten")
|
|
}
|
|
RowLayout {
|
|
spacing: Dimensions.m
|
|
|
|
Field {
|
|
label: qsTr("Anrede")
|
|
|
|
ComboBox {
|
|
id: title
|
|
|
|
implicitWidth: fieldM
|
|
model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")]
|
|
|
|
onCurrentTextChanged: {
|
|
switch (title.currentIndex) {
|
|
case 1:
|
|
salutation.text = "Sehr geehrter Herr ";
|
|
break;
|
|
case 2:
|
|
salutation.text = "Sehr geehrte Frau ";
|
|
break;
|
|
default:
|
|
salutation.text = "Guten Tag ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Vorname")
|
|
mandatory: true
|
|
|
|
TextField {
|
|
id: firstName
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: qsTr("Max")
|
|
|
|
validator: NotEmptyValidator {
|
|
}
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Nachname")
|
|
mandatory: true
|
|
|
|
TextField {
|
|
id: lastName
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: qsTr("Mustermann")
|
|
|
|
validator: NotEmptyValidator {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RowLayout {
|
|
spacing: Dimensions.m
|
|
|
|
Field {
|
|
label: qsTr("Straße")
|
|
|
|
TextField {
|
|
id: street
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: qsTr("Musterstraße")
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Hausnummer")
|
|
|
|
TextField {
|
|
id: houseNumber
|
|
|
|
implicitWidth: fieldS
|
|
placeholderText: qsTr("1a")
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("PLZ")
|
|
|
|
ComboBox {
|
|
id: zipCode
|
|
|
|
currentIndex: -1
|
|
editable: true
|
|
implicitWidth: fieldS
|
|
model: address_model
|
|
textRole: "display"
|
|
|
|
onActivated: currentValue
|
|
onCurrentIndexChanged: city.currentIndex = zipCode.currentIndex
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Ort")
|
|
|
|
ComboBox {
|
|
id: city
|
|
|
|
currentIndex: -1
|
|
editable: true
|
|
implicitWidth: fieldM
|
|
model: address_model
|
|
textRole: "city"
|
|
}
|
|
}
|
|
}
|
|
IconLabel {
|
|
color: Colors.foreground
|
|
font: Typography.h2
|
|
icon.color: Colors.foreground
|
|
icon.height: Typography.h2.pixelSize
|
|
icon.source: "qrc:/images/Phone"
|
|
icon.width: Typography.h2.pixelSize
|
|
spacing: Dimensions.m
|
|
text: qsTr("Kontakt")
|
|
}
|
|
RowLayout {
|
|
spacing: Dimensions.m
|
|
|
|
Field {
|
|
label: qsTr("Telefonnummer")
|
|
|
|
TextField {
|
|
id: phoneNumber
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: "+49 1234 567890"
|
|
|
|
validator: OptionalPhoneNumberValidator {
|
|
}
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Mobil")
|
|
|
|
TextField {
|
|
id: mobileNumber
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: "+49 123 4567891011"
|
|
|
|
validator: OptionalPhoneNumberValidator {
|
|
}
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("E-Mail Adresse")
|
|
|
|
TextField {
|
|
id: emailAddress
|
|
|
|
implicitWidth: fieldM
|
|
placeholderText: "tero@example.org"
|
|
|
|
validator: OptionalEmailAddressValidator {
|
|
}
|
|
}
|
|
}
|
|
Field {
|
|
label: qsTr("Briefanrede")
|
|
|
|
TextField {
|
|
id: salutation
|
|
|
|
implicitWidth: fieldM
|
|
}
|
|
}
|
|
}
|
|
}
|