Warning, /plasma/drkonqi/src/qml/ReportPage.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 import org.kde.kcmutils as KCM // why ContextualHelpButton is in kcm is anyone's guess
0011
0012 Kirigami.Page {
0013 id: page
0014
0015 title: i18nc("@title", "Enter the Details about the Crash")
0016
0017 property bool isComplete: contentCapacityBar.value >= contentCapacityBar.to
0018
0019 ColumnLayout {
0020 anchors.fill: parent
0021 Kirigami.Heading {
0022 level: 3
0023 text: i18nc("@info", "Please provide the following information in English.")
0024 }
0025
0026 ColumnLayout {
0027 RowLayout {
0028 Kirigami.Heading {
0029 level: 2
0030 text: i18nc("@info", "Title of the bug report:")
0031 }
0032
0033 KCM.ContextualHelpButton {
0034 toolTipText: xi18nc("@info:tooltip examples of good bug report titles",
0035 `<subtitle>Examples of good titles:</subtitle>
0036 <list>
0037 <item>Plasma crashed after adding the Notes widget and writing on it</item>
0038 <item>Konqueror crashed when accessing the Facebook application 'X'</item>
0039 <item>Kopete closed after resuming the computer and talking to a MSN buddy</item>
0040 <item>Kate closed while editing a log file and pressing the Delete key a couple of times</item>
0041 </list>`);
0042 }
0043 }
0044 QQC2.TextField {
0045 id: titleField
0046 // FIXME: use placeholder text instead of heading??
0047 Layout.fillWidth: true
0048 onEditingFinished: reportInterface.title = text
0049 Accessible.name: i18nc("@info", "Title of the bug report:")
0050 }
0051 }
0052
0053 RowLayout {
0054 Kirigami.Heading {
0055 level: 2
0056 text: i18nc("@info", "Information about the crash:")
0057 }
0058
0059 KCM.ContextualHelpButton {
0060 toolTipText: xi18nc("@info",
0061 `<subtitle>Describe in as much detail as possible the crash circumstances:</subtitle>
0062 <list>
0063 <item>Detail which actions were you taking inside and outside the application an instant before the crash.</item>
0064 <item>Note if you noticed any unusual behavior in the application or in the whole environment.</item>
0065 <item>Note any non-default configuration in the application</item>
0066 </list>`)
0067 }
0068
0069 QQC2.Label {
0070 Layout.fillWidth: true
0071 horizontalAlignment: Text.AlignRight
0072 wrapMode: Text.Wrap
0073 text: {
0074 if (isComplete) {
0075 return i18nc("the minimum required length of a text was reached", "Minimum length reached");
0076 }
0077 return i18nc("the minimum required length of a text wasn't reached yet", "Provide more information");
0078 }
0079 }
0080 QQC2.ProgressBar {
0081 id: contentCapacityBar
0082 from: 0
0083 to: {
0084 const multiplier = (reportInterface.attachToBugNumber == 0) ? 10 : 5
0085 return 20 + (reportInterface.selectedOptionsRating() * multiplier)
0086 }
0087 value: informationField.text.length
0088 }
0089 }
0090 QQC2.ScrollView {
0091 Layout.fillWidth: true
0092 Layout.fillHeight: true
0093
0094 QQC2.TextArea {
0095 id: informationField
0096 wrapMode: TextEdit.Wrap
0097 onEditingFinished: reportInterface.detailText = text
0098 Accessible.name: i18nc("@info", "Information about the crash:")
0099 }
0100 }
0101
0102 Kirigami.Heading {
0103 level: 2
0104 text: i18nc("@info", "Distribution method:")
0105 }
0106 RowLayout {
0107 QQC2.ComboBox {
0108 id: platformCombo
0109 model: PlatformModel {
0110 property bool initialized: false
0111 manager: bugzilla
0112 onDetectedPlatformRowChanged: {
0113 if (initialized) {
0114 return
0115 }
0116 initialized = true
0117 platformCombo.currentIndex = detectedPlatformRow
0118 }
0119 }
0120 onCurrentValueChanged: {
0121 if (model.initialized) { // lest we screw up initial platform detection
0122 DrKonqi.systemInformation.bugzillaPlatform = currentValue
0123 }
0124 }
0125 }
0126 QQC2.CheckBox {
0127 text: i18nc("@option:check", "KDE Platform is compiled from source")
0128 onCheckedChanged: DrKonqi.systemInformation.compiledSources = checked
0129 Component.onCompleted: checked = DrKonqi.systemInformation.compiledSources
0130 }
0131 }
0132 QQC2.Label {
0133 Layout.fillWidth: true
0134 wrapMode: Text.Wrap
0135 text: xi18nc("@info", "<note>The crash and system information will be automatically added to the bug report.</note>")
0136 }
0137 }
0138
0139 footer: FooterActionBar {
0140 enabled: isComplete
0141 actions: [
0142 Kirigami.Action {
0143 icon.name: "preview"
0144 text: i18nc("@action:button", "Preview Report")
0145 onTriggered: pageStack.push("qrc:/ui/PreviewPage.qml")
0146 }
0147 ]
0148 }
0149
0150 Component.onCompleted: {
0151 if (titleField.visible) {
0152 titleField.forceActiveFocus()
0153 } else {
0154 informationField.forceActiveFocus()
0155 }
0156 }
0157 }