141 lines
4.8 KiB
QML
141 lines
4.8 KiB
QML
import QtQuick 2.5
|
|
import QtQuick.Controls 2.1
|
|
import QtQuick.Layouts 1.1
|
|
import Nymea 1.0
|
|
import "../components"
|
|
|
|
Page {
|
|
id: root
|
|
signal backPressed();
|
|
|
|
header: NymeaHeader {
|
|
text: qsTr("Welcome to %1!").arg(app.systemName)
|
|
backButtonVisible: true
|
|
onBackPressed: root.backPressed()
|
|
}
|
|
|
|
|
|
Connections {
|
|
target: engine.jsonRpcClient
|
|
onAuthenticationFailed: {
|
|
var popup = errorDialog.createObject(root)
|
|
popup.text = qsTr("Sorry, that wasn't right. Try again please.")
|
|
popup.open();
|
|
}
|
|
onCreateUserSucceeded: {
|
|
engine.jsonRpcClient.authenticate(usernameTextField.text, passwordTextField.password, "nymea-app");
|
|
}
|
|
|
|
onCreateUserFailed: {
|
|
print("createUser failed")
|
|
var message;
|
|
switch (error) {
|
|
case "UserErrorInvalidUserId":
|
|
message = qsTr("The email you've entered isn't valid.")
|
|
break;
|
|
case "UserErrorDuplicateUserId":
|
|
message = qsTr("The email you've entered is already used.")
|
|
break;
|
|
case "UserErrorBadPassword":
|
|
message = qsTr("The password you've chose is too weak.")
|
|
break;
|
|
case "UserErrorBackendError":
|
|
message = qsTr("An error happened with the user storage. Please make sure your %1:core system is installed correctly.").arg(app.systemName)
|
|
break;
|
|
}
|
|
var popup = errorDialog.createObject(root, {text: message});
|
|
popup.open();
|
|
}
|
|
}
|
|
|
|
Flickable {
|
|
anchors.fill: parent
|
|
contentHeight: contentColumn.implicitHeight
|
|
|
|
ColumnLayout {
|
|
id: contentColumn
|
|
width: parent.width
|
|
|
|
spacing: app.margins
|
|
|
|
RowLayout {
|
|
Layout.margins: app.margins
|
|
spacing: app.margins
|
|
|
|
ColorIcon {
|
|
Layout.preferredHeight: app.iconSize * 2
|
|
Layout.preferredWidth: app.iconSize * 2
|
|
name: "../images/lock-closed.svg"
|
|
color: app.accentColor
|
|
}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: engine.jsonRpcClient.initialSetupRequired ?
|
|
qsTr("In order to use your %1 system, please enter your email address and set a password for it.").arg(app.systemName)
|
|
: qsTr("In order to use your %1 system, please log in.").arg(app.systemName)
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
}
|
|
|
|
|
|
GridLayout {
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
|
|
columns: app.width > 500 ? 2 : 1
|
|
columnSpacing: app.margins
|
|
|
|
Label {
|
|
text: qsTr("Your e-mail address:")
|
|
Layout.fillWidth: true
|
|
Layout.minimumWidth: implicitWidth
|
|
}
|
|
TextField {
|
|
id: usernameTextField
|
|
Layout.fillWidth: true
|
|
inputMethodHints: Qt.ImhEmailCharactersOnly
|
|
placeholderText: "john.smith@cooldomain.com"
|
|
}
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Password:")
|
|
}
|
|
PasswordTextField {
|
|
id: passwordTextField
|
|
Layout.fillWidth: true
|
|
minPasswordLength: 8
|
|
requireLowerCaseLetter: true
|
|
requireUpperCaseLetter: true
|
|
requireNumber: true
|
|
requireSpecialChar: false
|
|
signup: engine.jsonRpcClient.initialSetupRequired
|
|
}
|
|
}
|
|
|
|
Button {
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins; Layout.bottomMargin: app.margins
|
|
text: qsTr("OK")
|
|
enabled: passwordTextField.isValid
|
|
onClicked: {
|
|
if (engine.jsonRpcClient.initialSetupRequired) {
|
|
print("create user")
|
|
engine.jsonRpcClient.createUser(usernameTextField.text, passwordTextField.password);
|
|
} else {
|
|
print("authenticate", usernameTextField.text, passwordTextField.text, "nymea-app")
|
|
engine.jsonRpcClient.authenticate(usernameTextField.text, passwordTextField.password, "nymea-app");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
Component {
|
|
id: errorDialog
|
|
ErrorDialog {
|
|
|
|
}
|
|
}
|
|
}
|