import QtQuick import QtQuick.Controls import QtQuick.Layouts GridLayout { id: personalData columns: 4 Label { text: qsTr("Anrede") Layout.alignment: Qt.AlignRight } ComboBox { property string name: "title" id: title Layout.fillWidth: true editable: false Layout.columnSpan: 3 model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")] onCurrentTextChanged: { switch (title.currentIndex) { case 1: briefAnrede.text = "Sehr geehrter Herr " break case 2: briefAnrede.text = "Sehr geehrte Frau " break default: briefAnrede.text = "Guten Tag " } } } Label { text: qsTr("Vorname") Layout.alignment: Qt.AlignRight } TextField { property string name: "firstname" id: firstname Layout.fillWidth: true placeholderText: "Pflichtfeld" placeholderTextColor: "red" onTextChanged: checkFields() Layout.columnSpan: 3 } Label { text: qsTr("Nachname") Layout.alignment: Qt.AlignRight } TextField { property string name: "lastname" id: lastname Layout.fillWidth: true placeholderText: "Pflichtfeld" placeholderTextColor: "red" onTextChanged: checkFields() Layout.columnSpan: 3 } Label { text: qsTr("Straße") Layout.alignment: Qt.AlignRight } TextField { property string name: "street" id: street Layout.fillWidth: true placeholderTextColor: "red" onTextChanged: checkFields() } Label { text: qsTr("Nr.") Layout.alignment: Qt.AlignRight } TextField { property string name: "houseno" id: houseno Layout.fillWidth: true placeholderTextColor: "red" onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /([0-9a-zA-Z\-]{1,6})/ } } Label { text: qsTr("PLZ") Layout.alignment: Qt.AlignRight } ComboBox { property string name: "postcode" id: postcode Layout.fillWidth: true editable: true onEditTextChanged: checkFields() onCurrentTextChanged: checkFields() onActivated: currentValue model: address_model textRole: "display" popup.height: 300 popup.y: postcode.y + 5 - (postcode.height * 2) currentIndex: -1 onCurrentIndexChanged: city.currentIndex = postcode.currentIndex validator: RegularExpressionValidator { regularExpression: /([^$][0-9]{1,4})/ } } Label { text: qsTr("Ort") Layout.alignment: Qt.AlignRight } ComboBox { property string name: "city" id: city Layout.fillWidth: true editable: true onEditTextChanged: checkFields() onCurrentTextChanged: checkFields() model: address_model textRole: "city" popup.height: 300 popup.y: postcode.y + 5 - (postcode.height * 2) currentIndex: -1 } Label { text: qsTr("Geburtsname") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "birthname" id: birthname Layout.fillWidth: true onTextChanged: checkFields() Layout.columnSpan: 3 visible: radio.children[1].checked } Label { text: qsTr("Geburtsdatum") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "birthday" id: birthday Layout.fillWidth: true placeholderText: "Pflichtfeld" placeholderTextColor: "red" onTextChanged: checkFields() Layout.columnSpan: 3 visible: radio.children[1].checked validator: RegularExpressionValidator { regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/ } } Label { text: qsTr("Geburtsort") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "placeofbirth" id: placeofbirth Layout.fillWidth: true placeholderText: "Pflichtfeld" placeholderTextColor: "red" onTextChanged: checkFields() Layout.columnSpan: 3 visible: radio.children[1].checked } Label { text: qsTr("Telefonnummer") Layout.alignment: Qt.AlignRight } TextField { property string name: "phone" id: phonenumber Layout.fillWidth: true placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /([+0-9]{1})([0-9]{1,17})/ } } Label { text: qsTr("Mobil") Layout.alignment: Qt.AlignRight } TextField { property string name: "mobile" id: cellphone Layout.fillWidth: true placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /([+0-9]{1})([0-9]{1,17})/ } } Label { text: qsTr("E-Mail") Layout.alignment: Qt.AlignRight } TextField { property string name: "email" id: email Layout.fillWidth: true placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~0-9A-Za-z]{1,185})@([0-9A-Za-z\.]{1,64})\.([a-zA-z]{2,5})/ } } Label { text: qsTr("Familienstand") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } ComboBox { property string name: "maritalstatus" id: maritalstatus Layout.fillWidth: true editable: false model: [qsTr("ledig"), qsTr("verheiratet"), qsTr("verwitwet"), qsTr("geschieden")] visible: radio.children[1].checked Layout.columnSpan: 3 } Label { text: qsTr("Stundenlohn") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "salary" id: salary Layout.fillWidth: true visible: radio.children[1].checked placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() } Label { text: qsTr("Jobbeschreibung") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "jobdesc" id: jobdescription Layout.fillWidth: true visible: radio.children[1].checked placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() } Label { text: qsTr("Vertragsbeginn") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "contractstart" id: contractstart Layout.fillWidth: true visible: radio.children[1].checked placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/ } } Label { text: qsTr("Vertragsende") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } TextField { property string name: "contractend" id: contractend Layout.fillWidth: true visible: radio.children[1].checked placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() validator: RegularExpressionValidator { regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/ } } Label { text: qsTr("Arbeitszeiten Tage") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } ComboBox { property string name: "workdays" id: workdays Layout.fillWidth: true visible: radio.children[1].checked model: ["1","2","3","4","5","6","7"] } Label { text: qsTr("Stunden") Layout.alignment: Qt.AlignRight visible: radio.children[1].checked } ComboBox { property string name: "workhours" id: workhours Layout.fillWidth: true visible: radio.children[1].checked model: ["1","2","3","4","5","6","7","8"] } Label { text: qsTr("Briefanrede") Layout.alignment: Qt.AlignRight } TextField { property string name: "formofaddress" id: briefAnrede Layout.fillWidth: true placeholderTextColor: "red" Layout.columnSpan: 3 onTextChanged: checkFields() } Item { Layout.fillHeight: true Layout.columnSpan: 4 } function checkPersonalField() { if (radio.children[0].checked) { return (firstname.text.trim() && lastname.text.trim()) } else { return (firstname.text.trim() && lastname.text.trim() && street.text.trim() && houseno.text.trim() && (postcode.editText.trim() || postcode.currentText.trim()) && (city.editText.trim() || city.currentText.trim()) && birthday.text.trim() && phonenumber.text.trim() && cellphone.text.trim() && email.text.trim() && jobdescription.text.trim() && contractstart.text.trim() && contractend.text.trim() && briefAnrede.text.trim()) } } function requiredField() { var pf = (radio.children[1].checked)?"Pflichtfeld":"" street.placeholderText = pf phonenumber.placeholderText = pf cellphone.placeholderText = pf email.placeholderText = pf jobdescription.placeholderText = pf contractstart.placeholderText = pf contractend.placeholderText = pf briefAnrede.placeholderText = pf houseno.placeholderText = pf } }