@@ -8,6 +8,7 @@ import org.kde.plasma.plasmoid
8
8
import org.kde.plasma.plasma5support as P5Support
9
9
import "components" as Components
10
10
import "code/utils.js" as Utils
11
+ import "code/enum.js" as Enum
11
12
12
13
KCM .SimpleKCM {
13
14
id: root
@@ -24,8 +25,17 @@ KCM.SimpleKCM {
24
25
property string cfg_presetAutoloading
25
26
property var autoLoadConfig: JSON .parse (cfg_presetAutoloading)
26
27
28
+ property alias cfg_widgetClickMode: widgetClickModeCombo .currentIndex
29
+ readonly property list< string> widgetClickModes: [" Toggle Panel Colorizer" , " Switch presets" , " Show popup" ]
30
+
31
+ property string cfg_switchPresets
32
+ property var switchPresets: JSON .parse (cfg_switchPresets)
33
+
34
+ property var presetsList: []
35
+
27
36
function updateConfig () {
28
37
cfg_presetAutoloading = JSON .stringify (autoLoadConfig, null , null )
38
+ cfg_switchPresets = JSON .stringify (switchPresets, null , null )
29
39
}
30
40
31
41
ListModel {
@@ -44,36 +54,35 @@ KCM.SimpleKCM {
44
54
// console.log(stdout);
45
55
if (cmd === listPresetsCmd) {
46
56
if (stdout .length === 0 ) return
47
- presetsModel .append (
48
- {
49
- " name" : i18n (" Do nothing" ),
50
- " value" : " " ,
51
- }
52
- )
53
57
54
58
const out = stdout .trim ().split (" \n " )
55
59
for (const line of out) {
56
- let builtin = false
57
60
const parts = line .split (" :" )
58
61
const path = parts[parts .length - 1 ]
59
62
let name = path .split (" /" )
60
63
name = name[name .length - 1 ]
61
64
const dir = parts[1 ]
62
- if (line .startsWith (" b:" )) {
63
- builtin = true
64
- }
65
65
console .error (dir)
66
+ const preset = {
67
+ " name" : name,
68
+ " value" : dir,
69
+ }
66
70
presetsModel .append (
67
- {
68
- " name" : name,
69
- " value" : dir,
70
- }
71
+ preset
71
72
)
73
+ presetsList .push (preset)
72
74
}
73
75
}
76
+ if (presetsList .length && switchPresets .length ) {
77
+ switchPresets = pruneMissingPresets (switchPresets)
78
+ }
74
79
}
75
80
}
76
81
82
+ function pruneMissingPresets (switchPresets ) {
83
+ return switchPresets .filter (saved => presetsList .some (p => p .value === saved))
84
+ }
85
+
77
86
function getIndex (model , savedValue ) {
78
87
for (let i = 0 ; i < model .count ; i++ ) {
79
88
if (model .get (i).value === savedValue) {
@@ -111,6 +120,13 @@ KCM.SimpleKCM {
111
120
}
112
121
113
122
Kirigami .FormLayout {
123
+
124
+ Kirigami .Separator {
125
+ Kirigami .FormData .isSection : true
126
+ Kirigami .FormData .label : i18n (" Environment" )
127
+ Layout .fillWidth : true
128
+ }
129
+
114
130
CheckBox {
115
131
id: enabledCheckbox
116
132
Kirigami .FormData .label : i18n (" Enabled:" )
@@ -205,6 +221,59 @@ KCM.SimpleKCM {
205
221
currentIndex: getIndex (model, autoLoadConfig .normal )
206
222
enabled: enabledCheckbox .checked
207
223
}
224
+
225
+ Kirigami .Separator {
226
+ Kirigami .FormData .isSection : true
227
+ Kirigami .FormData .label : i18n (" Widget Click" )
228
+ Layout .fillWidth : true
229
+ }
230
+
231
+ ComboBox {
232
+ id: widgetClickModeCombo
233
+ Kirigami .FormData .label : " Action:"
234
+ model: widgetClickModes
235
+ }
236
+
237
+ ColumnLayout {
238
+ Layout .fillWidth : true
239
+ ScrollView {
240
+ enabled: cfg_widgetClickMode === Enum .WidgetClickModes .SwitchPresets
241
+ Layout .fillWidth : true
242
+ Layout .preferredHeight : Math .min (implicitHeight+ 20 , 200 )
243
+ ListView {
244
+ id: listView
245
+ model: presetsModel
246
+ Layout .preferredWidth : Math .min (width+ 50 , 100 )
247
+ reuseItems: true
248
+ clip: true
249
+ focus: true
250
+ activeFocusOnTab: true
251
+ keyNavigationEnabled: true
252
+ delegate: RowLayout {
253
+ width: ListView .view .width
254
+ CheckBox {
255
+ id: presetCheckbox
256
+ text: model .name
257
+ checked: switchPresets .includes (model .value )
258
+ Layout .rightMargin : Kirigami .Units .smallSpacing * 4
259
+ onCheckedChanged: {
260
+ if (checked) {
261
+ if (! switchPresets .includes (model .value )) {
262
+ switchPresets .push (model .value )
263
+ }
264
+ } else {
265
+ switchPresets = switchPresets .filter (p => p !== model .value )
266
+ }
267
+ updateConfig ()
268
+ }
269
+ }
270
+ }
271
+ highlight: Item {}
272
+ highlightMoveDuration: 0
273
+ highlightResizeDuration: 0
274
+ }
275
+ }
276
+ }
208
277
}
209
278
}
210
279
}
0 commit comments