1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
/*
SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
SPDX-FileCopyrightText: 2019 Aleix Pol Gonzalez <aleixpol@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.3 as QQC2
import org.kde.kirigami 2.6 as Kirigami
import org.kde.userfeedback 1.0 as UserFeedback
import org.kde.userfeedback.kcm 1.0
import org.kde.kcmutils
import org.kde.kcmutils 1.0 as KCMUtils
SimpleKCM {
id: root
KCMUtils.ConfigModule.buttons: KCMUtils.ConfigModule.Default | KCMUtils.ConfigModule.Apply
implicitWidth: Kirigami.Units.gridUnit * 38
implicitHeight: Kirigami.Units.gridUnit * 35
headerPaddingEnabled: false // Let the InlineMessage touch the edges
header: Kirigami.InlineMessage {
id: infoLabel
position: Kirigami.InlineMessage.Position.Header
type: Kirigami.MessageType.Information
visible: !form.enabled
text: i18n("User Feedback has been disabled centrally. Please contact your distributor.")
}
ColumnLayout {
spacing: 0
// The system settings window likes to take over
// the cursor with a plain label. The TextEdit
// 'takes priority' over the system settings
// window trying to eat the mouse, allowing
// us to use the HoverHandler boilerplate for
// proper link handling
TextEdit {
Kirigami.FormData.label: i18n("Plasma:")
Layout.fillWidth: true
Layout.topMargin: Kirigami.Units.gridUnit
Layout.leftMargin: Kirigami.Units.gridUnit
Layout.rightMargin: Kirigami.Units.gridUnit
Layout.alignment: Qt.AlignHCenter
wrapMode: Text.WordWrap
text: xi18nc("@info", "You can help KDE improve Plasma by contributing information on how you use it, so we can focus on things that matter to you.<nl/><nl/>Contributing this information is optional and entirely anonymous. We never collect your personal data, files you use, websites you visit, or information that could identify you.<nl/><nl/>You can read about <link url='https://kde.org/privacypolicy-apps.php'>our privacy policy here.</link>")
textFormat: TextEdit.RichText
readOnly: true
color: Kirigami.Theme.textColor
selectedTextColor: Kirigami.Theme.highlightedTextColor
selectionColor: Kirigami.Theme.highlightColor
onLinkActivated: (url) => Qt.openUrlExternally(url)
HoverHandler {
acceptedButtons: Qt.NoButton
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
Kirigami.Separator {
Layout.fillWidth: true
Layout.margins: Kirigami.Units.gridUnit
}
Kirigami.FormLayout {
id: form
enabled: kcm.feedbackEnabled
QQC2.Slider {
id: statisticsModeSlider
Kirigami.FormData.label: i18n("Plasma:")
readonly property var currentMode: modeOptions[value]
Layout.fillWidth: true
Layout.maximumWidth: Kirigami.Units.gridUnit * 22
readonly property var modeOptions: [UserFeedback.Provider.NoTelemetry, UserFeedback.Provider.BasicSystemInformation, UserFeedback.Provider.BasicUsageStatistics,
UserFeedback.Provider.DetailedSystemInformation, UserFeedback.Provider.DetailedUsageStatistics]
from: 0
to: modeOptions.length - 1
stepSize: 1
snapMode: QQC2.Slider.SnapAlways
function findIndex(array, what, defaultValue) {
for (var v in array) {
if (array[v] == what)
return v;
}
return defaultValue;
}
value: findIndex(modeOptions, kcm.feedbackSettings.feedbackLevel, 0)
onMoved: {
kcm.feedbackSettings.feedbackLevel = modeOptions[value]
}
SettingStateBinding {
configObject: kcm.feedbackSettings
settingName: "feedbackLevel"
extraEnabledConditions: kcm.feedbackEnabled
}
}
UserFeedback.FeedbackConfigUiController {
id: feedbackController
applicationName: i18n("Plasma")
}
Kirigami.Heading {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.preferredWidth: Kirigami.Units.gridUnit * 22
Layout.maximumWidth: Kirigami.Units.gridUnit * 29
wrapMode: Text.WordWrap
level: 3
text: feedbackController.telemetryName(statisticsModeSlider.currentMode)
textFormat: Text.PlainText
}
Item {
Kirigami.FormData.isSection: true
}
QQC2.Label {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: Kirigami.Units.gridUnit * 22
wrapMode: Text.WordWrap
text: i18n("The following information will be sent:")
textFormat: Text.PlainText
visible: statisticsModeSlider.value != 0 // This is "disabled"
}
ColumnLayout {
Layout.maximumWidth: parent.width * 0.5
Repeater {
model: kcm.feedbackSources
delegate: QQC2.Label {
visible: modelData.mode <= statisticsModeSlider.currentMode
text: "ยท " + modelData.description
textFormat: Text.PlainText
Layout.fillWidth: true
}
}
}
Item {
implicitHeight: Kirigami.Units.largeSpacing
Layout.fillWidth: true
}
Repeater {
model: kcm.audits
delegate: Kirigami.LinkButton {
Layout.fillWidth: true
horizontalAlignment: Text.AlignLeft
Kirigami.FormData.label: model.index === 0 ? i18n("View sent data:") : ""
text: modelData.program
onClicked: Qt.openUrlExternally("file://" + modelData.audits)
}
}
}
}
}
|