Warning, /plasma/drkonqi/src/qml/LoginPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0002 // SPDX-FileCopyrightText: 2022-2023 Harald Sitter <sitter@kde.org>
0003
0004 import QtQuick 2.15
0005 import QtQuick.Layouts 1.15
0006 import QtQuick.Controls 2.15 as QQC2
0007 import org.kde.kirigami 2.12 as Kirigami
0008 import org.kde.syntaxhighlighting 1.0
0009
0010 import org.kde.drkonqi 1.0
0011
0012 Kirigami.ScrollablePage {
0013 id: page
0014 title: i18nc("@title", "Login into the bug tracking system")
0015
0016 property bool loggedIn: false
0017
0018 onLoggedInChanged: {
0019 console.log("logged in changed")
0020 if (loggedIn) {
0021 pageStack.push('qrc:/ui/ReportPage.qml')
0022 }
0023 }
0024
0025 Connections {
0026 target: bugzilla
0027 function onLoginFinished(loggedIn) {
0028 console.log("logged in " + loggedIn)
0029 page.loggedIn = loggedIn
0030 if (rememberBox.checked) {
0031 credentialStore.email = emailField.text
0032 credentialStore.password = passwordField.text
0033 credentialStore.store()
0034 } else {
0035 credentialStore.drop()
0036 }
0037 }
0038 function onLoginError(error) {
0039 console.log("error " + error)
0040 inlineMessage.text = error
0041 page.enabled = true
0042 }
0043 enabled: !page.loggedIn
0044 }
0045
0046 ColumnLayout {
0047 CredentialStore {
0048 id: credentialStore
0049 onEmailChanged: emailField.text = email
0050 onPasswordChanged: passwordField.text = password
0051 window: root
0052 Component.onCompleted: load()
0053 }
0054
0055 Kirigami.InlineMessage {
0056 id: inlineMessage
0057 Layout.fillWidth: true
0058 type: Kirigami.MessageType.Error
0059 visible: text !== ""
0060 }
0061
0062 QQC2.Label {
0063 Layout.fillWidth: true
0064 wrapMode: Text.Wrap
0065 text: i18nc("@info:status '1' is replaced with the short URL of the bugzilla ",
0066 "You need to login with your %1 account in order to proceed.", Globals.bugzillaShortUrl);
0067 }
0068 Kirigami.FormLayout {
0069 QQC2.TextField {
0070 id: emailField
0071 Kirigami.FormData.label: i18nc("@label:textbox bugzilla account email", "E-mail Address:")
0072 Accessible.name: Kirigami.FormData.label
0073 onAccepted: loginAction.trigger()
0074 }
0075 Kirigami.PasswordField {
0076 id: passwordField
0077 Kirigami.FormData.label: i18nc("@label:textbox bugzilla account password", "Password:")
0078 Accessible.description: Kirigami.FormData.label
0079 onAccepted: loginAction.trigger()
0080 }
0081 QQC2.CheckBox {
0082 id: rememberBox
0083 checked: true
0084 text: i18nc("@option:check", "Save login information using the KDE Wallet system")
0085 }
0086 }
0087 QQC2.Label {
0088 Layout.fillWidth: true
0089 wrapMode: Text.Wrap
0090 text: xi18nc("@info/rich",
0091 `<note>You need a user account on the <link url='%1'>KDE bug tracking system</link> in order to file a bug report, because we may need to contact you later
0092 for requesting further information. If you do not have one, you can freely <link url='%2'>create one here</link>. Please do not use disposable email accounts.</note>`,
0093 CrashedApplication.bugReportAddress,
0094 Globals.bugzillaCreateAccountUrl)
0095 onLinkActivated: link => Qt.openUrlExternally(link)
0096 }
0097 }
0098
0099 footer: FooterActionBar {
0100 actions: [
0101 Kirigami.Action {
0102 id: loginAction
0103 enabled: emailField.text.length > 0 && passwordField.text.length > 0
0104 icon.name: "network-connect"
0105 text: i18nc("@action:button", "Login")
0106 tooltip: xi18nc("@info:tooltip", "Use this button to login to the KDE bug tracking system using the provided e-mail address and password.")
0107 onTriggered: {
0108 bugzilla.tryLogin(emailField.text, passwordField.text)
0109 page.enabled = false
0110 }
0111 Component.onCompleted: { // auto-login if possible
0112 if (emailField.text !== "" && passwordField.text !== "") {
0113 trigger()
0114 }
0115 }
0116 }
0117 ]
0118 }
0119
0120 Component.onCompleted: emailField.forceActiveFocus()
0121 }