Warning, /network/kdeconnect-kde/plugins/runcommand/kdeconnect_runcommand_config.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15 as QQC2
0009 import org.kde.kirigami 2.20 as Kirigami
0010 import org.kde.kdeconnect 1.0
0011
0012 ListView {
0013 id: view
0014 Component.onCompleted: {
0015 root.leftPadding = 0
0016 root.rightPadding = 0
0017 root.topPadding = 0
0018 root.bottomPadding = 0
0019 }
0020
0021 property string device
0022
0023 property var action: Kirigami.Action {
0024 icon.name: "list-add"
0025 text: i18n("Add command")
0026 onTriggered: addDialog.open()
0027 }
0028
0029 model: CommandsModel {
0030 id: commandModel
0031 deviceId: device
0032 }
0033
0034 delegate: Kirigami.SwipeListItem {
0035 width: parent.width
0036 enabled: true
0037
0038 contentItem: QQC2.Label {
0039 text: i18n("%1 <br> <i>%2</i>", name, command)
0040 }
0041
0042 actions: Kirigami.Action {
0043 text: i18n("Delete")
0044 icon.name: "delete"
0045 onTriggered: commandModel.removeCommand(index)
0046 }
0047 }
0048
0049 Kirigami.PlaceholderMessage {
0050 icon.name: 'utilities-terminal'
0051 anchors.centerIn: parent
0052 visible: view.count === 0
0053 width: parent.width - Kirigami.Units.gridUnit * 4
0054 text: i18n("No Commands")
0055 explanation: i18n("Add commands to run them remotely from other devices")
0056 helpfulAction: view.action
0057 }
0058
0059 QQC2.Dialog {
0060 id: addDialog
0061 title: "Add command"
0062
0063 standardButtons: QQC2.Dialog.Save | QQC2.Dialog.Cancel
0064
0065 Kirigami.FormLayout {
0066 QQC2.TextField {
0067 id: nameField
0068 Kirigami.FormData.label: i18n("Name:")
0069 }
0070 QQC2.TextField {
0071 id: commandField
0072 Kirigami.FormData.label: i18n("Command:")
0073 }
0074
0075 QQC2.ComboBox {
0076 Kirigami.FormData.label: i18n("Sample commands:")
0077 textRole: "name"
0078 model: ListModel {
0079 id: sampleCommands
0080 ListElement {
0081 name: "Sample command"
0082 command: ""
0083 }
0084 ListElement {
0085 name: "Suspend"
0086 command: "systemctl suspend"
0087 }
0088 ListElement {
0089 name: "Maximum Brightness"
0090 command: "qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness `qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.brightnessMax`"
0091 }
0092 ListElement {
0093 name: "Lock Screen"
0094 command: "loginctl lock-session"
0095 }
0096 ListElement {
0097 name: "Unlock Screen"
0098 command: "loginctl unlock-session"
0099 }
0100 ListElement {
0101 name: "Close All Vaults"
0102 command: "qdbus org.kde.kded5 /modules/plasmavault closeAllVaults"
0103 }
0104 ListElement {
0105 name: "Forcefully Close All Vaults"
0106 command: "qdbus org.kde.kded5 /modules/plasmavault forceCloseAllVaults"
0107 }
0108 }
0109 onActivated: {
0110 if (index > 0) {
0111 nameField.text = sampleCommands.get(index).name
0112 commandField.text = sampleCommands.get(index).command
0113 }
0114 }
0115 }
0116 }
0117
0118 onAccepted: commandModel.addCommand(nameField.text, commandField.text)
0119 }
0120 }