import QtCore import QtQuick import QtQuick.Controls import QtQuick.Dialogs import QtQuick.Layouts import TeroStyle Item { property string recpass: "" function dbConnectionFailed(msg) { oschkar.notificationBox.informativeText = msg; oschkar.notificationBox.text = "Verbindung zum Datenbankserver verloren"; oschkar.notificationBox.open(); } function getEncryptionKey() { recoveryPaswordDialog.open(); } function loggedin() { appLoader.source = "Dashboard.qml"; } anchors.fill: parent Component.onCompleted: { loggedin_user.loginOkay.connect(loggedin); config.invalidEncryptionKey.connect(getEncryptionKey); config.checkEncryptionKey(); loggedin_user.noDbConnection.connect(dbConnectionFailed); benutzerName.forceActiveFocus(); } ColumnLayout { anchors.fill: parent spacing: Dimensions.m Label { font: Typography.h1 text: qsTr("Login") } Label { text: qsTr("Benutzername") } TextField { id: benutzerName focus: true implicitWidth: 300 placeholderText: qsTr("Benutzernamen eingeben") onAccepted: { if (benutzerName.text.trim() && passwort.text.trim()) loggedin_user.login(benutzerName.text.trim(), passwort.text); else if (benutzerName.text.trim()) passwort.forceActiveFocus(); } } Label { text: qsTr("Passwort") } TextField { id: passwort echoMode: TextInput.Password implicitWidth: 300 placeholderText: qsTr("Passwort eingeben") onAccepted: { if (benutzerName.text.trim() && passwort.text.trim()) loggedin_user.login(benutzerName.text.trim(), passwort.text); else if (passwort.text.trim()) benutzerName.forceActiveFocus(); } } Button { text: qsTr("Primary") onClicked: { if (benutzerName.text.trim() && passwort.text.trim()) loggedin_user.login(benutzerName.text.trim(), passwort.text); } } Item { Layout.fillHeight: true } Dialog { id: recoveryPaswordDialog anchors.centerIn: parent modal: true standardButtons: Dialog.Ok | Dialog.Cancel title: qsTr("Wiederherstellung") onAccepted: { recpass = recoveryPaswordInput.text; getRecoveryDialog.open(); } ColumnLayout { RowLayout { Label { text: qsTr("Wiederherstellungspasswort eingeben: ") } TextField { id: recoveryPaswordInput echoMode: TextInput.Password implicitWidth: 300 placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben") text: "" } } } } FileDialog { id: getRecoveryDialog currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0] fileMode: FileDialog.OpenFile nameFilters: ["PYQCRM Recovery files (*.pyqrec)"] title: qsTr("Wiederherstellungsdatei") onAccepted: config.getRecoveryKey(getRecoveryDialog.currentFile, recpass) onRejected: quit() } Notifications { id: oschkar } } }