mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
25d2f9b84d
The user is most likely to find out, that he does not remember the password, when asked for it. Add "forgot password" button in the signin dialog (both credentials and pin dialog). Signed-off-by: Jan Iversen <jan@casacondor.com>
155 lines
3.5 KiB
QML
155 lines
3.5 KiB
QML
// SPDX-License-Identifier: GPL-2.0
|
|
import QtQuick 2.6
|
|
import QtQuick.Controls 2.2 as Controls
|
|
import QtQuick.Window 2.2
|
|
import QtQuick.Dialogs 1.2
|
|
import QtQuick.Layouts 1.2
|
|
import org.kde.kirigami 2.4 as Kirigami
|
|
import org.subsurfacedivelog.mobile 1.0
|
|
|
|
Item {
|
|
id: loginWindow
|
|
height: outerLayout.height
|
|
|
|
property string username: login.text;
|
|
property string password: password.text;
|
|
|
|
ColumnLayout {
|
|
id: outerLayout
|
|
width: loginWindow.width - Kirigami.Units.gridUnit // to ensure the full input fields are visible
|
|
|
|
function goToNext() {
|
|
for (var i = 0; i < children.length; ++i)
|
|
if (children[i].focus) {
|
|
children[i].nextItemInFocusChain().forceActiveFocus()
|
|
break
|
|
}
|
|
}
|
|
|
|
Keys.onReturnPressed: goToNext()
|
|
Keys.onTabPressed: goToNext()
|
|
|
|
onVisibleChanged: {
|
|
if (visible) {
|
|
Qt.inputMethod.show()
|
|
login.forceActiveFocus()
|
|
} else {
|
|
Qt.inputMethod.hide()
|
|
}
|
|
}
|
|
|
|
Kirigami.Heading {
|
|
text: qsTr("Cloud credentials")
|
|
level: headingLevel
|
|
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
|
|
}
|
|
|
|
Controls.Label {
|
|
text: qsTr("Email")
|
|
visible: !prefs.showPin
|
|
font.pointSize: subsurfaceTheme.smallPointSize
|
|
color: subsurfaceTheme.secondaryTextColor
|
|
}
|
|
|
|
Controls.TextField {
|
|
id: login
|
|
text: PrefCloudStorage.cloud_storage_email
|
|
visible: !prefs.showPin
|
|
Layout.fillWidth: true
|
|
inputMethodHints: Qt.ImhEmailCharactersOnly |
|
|
Qt.ImhNoAutoUppercase
|
|
}
|
|
|
|
Controls.Label {
|
|
text: qsTr("Password")
|
|
visible: !prefs.showPin
|
|
font.pointSize: subsurfaceTheme.smallPointSize
|
|
color: subsurfaceTheme.secondaryTextColor
|
|
}
|
|
|
|
Controls.TextField {
|
|
id: password
|
|
text: PrefCloudStorage.cloud_storage_password
|
|
visible: !prefs.showPin
|
|
echoMode: TextInput.PasswordEchoOnEdit
|
|
inputMethodHints: Qt.ImhSensitiveData |
|
|
Qt.ImhHiddenText |
|
|
Qt.ImhNoAutoUppercase
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Controls.Label {
|
|
text: qsTr("PIN")
|
|
visible: prefs.showPin
|
|
}
|
|
Controls.TextField {
|
|
id: pin
|
|
text: ""
|
|
Layout.fillWidth: true
|
|
visible: prefs.showPin
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
Layout.margins: Kirigami.Units.smallSpacing
|
|
spacing: Kirigami.Units.smallSpacing
|
|
visible: prefs.showPin
|
|
SsrfButton {
|
|
id: registerpin
|
|
text: qsTr("Register")
|
|
onClicked: {
|
|
verifyCredentials(login.text, password.text, pin.text)
|
|
}
|
|
}
|
|
Controls.Label {
|
|
text: "" // Spacer between 2 button groups
|
|
Layout.fillWidth: true
|
|
}
|
|
SsrfButton {
|
|
id: cancelpin
|
|
text: qsTr("Cancel")
|
|
onClicked: {
|
|
prefs.cancelCredentialsPinSetup()
|
|
rootItem.returnTopPage()
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
Layout.margins: Kirigami.Units.smallSpacing
|
|
spacing: Kirigami.Units.smallSpacing
|
|
visible: !prefs.showPin
|
|
|
|
SsrfButton {
|
|
id: signin_register_normal
|
|
text: qsTr("Sign-in or Register")
|
|
onClicked: {
|
|
manager.saveCloudCredentials(login.text, password.text)
|
|
}
|
|
}
|
|
Controls.Label {
|
|
text: "" // Spacer between 2 button groups
|
|
Layout.fillWidth: true
|
|
}
|
|
SsrfButton {
|
|
id: toNoCloudMode
|
|
text: qsTr("No cloud mode")
|
|
onClicked: {
|
|
manager.setGitLocalOnly(true)
|
|
PrefCloudStorage.cloud_auto_sync = false
|
|
prefs.credentialStatus = CloudStatus.CS_NOCLOUD
|
|
manager.saveCloudCredentials("", "")
|
|
manager.openNoCloudRepo()
|
|
}
|
|
}
|
|
}
|
|
SsrfButton {
|
|
id: signin_forgot_password
|
|
text: qsTr("Forgot password?")
|
|
onClicked: {
|
|
Qt.openUrlExternally("https://cloud.subsurface-divelog.org/passwordreset")
|
|
}
|
|
}
|
|
}
|
|
}
|