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 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
|
/*
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.kcm 1.3
SimpleKCM {
id: root
ConfigModule.buttons: ConfigModule.Default | ConfigModule.Apply
implicitWidth: Kirigami.Units.gridUnit * 38
implicitHeight: Kirigami.Units.gridUnit * 35
ColumnLayout {
spacing: 0
Kirigami.InlineMessage {
id: infoLabel
Layout.fillWidth: true
type: Kirigami.MessageType.Information
visible: !form.enabled
text: i18n("User Feedback has been disabled centrally. Please contact your distributor.")
}
// 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)
}
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:")
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
Layout.fillWidth: true
MouseArea {
anchors.fill: parent
hoverEnabled: true
QQC2.ToolTip {
width: iconsLayout.implicitWidth + Kirigami.Units.largeSpacing * 2
height: iconsLayout.implicitHeight + Kirigami.Units.smallSpacing * 2
visible: parent.containsMouse
RowLayout {
id: iconsLayout
Repeater {
model: modelData.icons
delegate: Kirigami.Icon {
implicitHeight: Kirigami.Units.iconSizes.medium
implicitWidth: Kirigami.Units.iconSizes.medium
source: modelData
}
}
}
}
}
}
}
}
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(modelData.audits)
}
}
}
}
}
|