Warning, /plasma/drkonqi/src/qml/SendingPage.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 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.19 as Kirigami
0008 
0009 import org.kde.drkonqi 1.0
0010 
0011 Kirigami.Page {
0012     id: page
0013 
0014     Connections {
0015         target: reportInterface
0016         function onDone(number) {
0017             pageStack.replace("qrc:/ui/SentPage.qml", {bugNumber: reportInterface.sentReport})
0018         }
0019         function onSendReportError(msg) {
0020             console.log("ERRROR" + msg)
0021             // TODO should going back be a thing?
0022             // pageStack.globalToolBar.showNavigationButtons = Kirigami.ApplicationHeaderStyle.Auto
0023             inlineMessage.errorContext = msg
0024             page.state = "error"
0025         }
0026     }
0027 
0028     Connections {
0029         target: bugzilla
0030         function onLoginFinished() {
0031             console.log("login success")
0032             reportInterface.sendBugReport()
0033         }
0034         function onLoginError(msg) {
0035             console.log("login ERRROR " + msg)
0036             inlineMessage.errorContext = msg
0037             page.state = "error"
0038         }
0039     }
0040 
0041     contextualActions: [
0042         Kirigami.Action {
0043             visible: page.state === "error"
0044             iconName: "document-save"
0045             text: i18nc("@action:button", "Save Report to File")
0046             tooltip: xi18nc("@info:tooltip", 'Use this button to save the crash information to a file for manual reporting.')
0047             onTriggered: DrKonqi.saveReport(reportInterface.generateReportFullText(ReportInterface.DrKonqiStamp.Include, ReportInterface.Backtrace.Complete))
0048         }
0049     ]
0050 
0051     ColumnLayout {
0052         anchors.fill: parent
0053         visible: page.state === "error"
0054 
0055         Kirigami.InlineMessage {
0056             id: inlineMessage
0057 
0058             property string errorContext: ""
0059 
0060             Layout.fillWidth: true
0061             visible: true
0062             type: Kirigami.MessageType.Error
0063             text: xi18nc("@info", "Failed to submit bug report: <message>%1</message>", errorContext)
0064             actions: [
0065                 Kirigami.Action {
0066                     icon.name: "document-send"
0067                     text: i18nc("@action retry submitting bug report", "Retry Submission")
0068                     onTriggered: {
0069                         inlineMessage.errorContext = ""
0070                         bugzilla.refreshToken()
0071                     }
0072                 }
0073             ]
0074         }
0075     }
0076 
0077     Kirigami.PlaceholderMessage {
0078         visible: page.state ===  ""
0079         anchors.centerIn: parent
0080         width: parent.width - (Kirigami.Units.largeSpacing * 4)
0081         text: i18nc("@info", "Submitting bug report...")
0082 
0083         QQC2.BusyIndicator {
0084             Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
0085         }
0086     }
0087 
0088     Component.onCompleted: {
0089         // Disable navigation from here on out, the report can't be changed anymore!
0090         pageStack.globalToolBar.showNavigationButtons = Kirigami.ApplicationHeaderStyle.NoNavigationButtons
0091 
0092         // Trigger relogin. If the user took a long time to prepare the login our
0093         // token might have gone invalid in the meantime. As a cheap way to prevent
0094         // this we'll simply refresh the token regardless. It's plenty cheap and
0095         // should reliably ensure that the token is current.
0096         // Disconnect everything first though, this function may get called a bunch
0097         // of times, so we don't want duplicated submissions.
0098         bugzilla.refreshToken();
0099     }
0100 
0101     states: [
0102         State {
0103             name: "error"
0104         },
0105         State {
0106             name: "" // default state
0107         }
0108     ]
0109 }