9f34092aa9
The HIG recommend that buttons with an action label that require further user input end in an ellipsis, and that dialog buttons should clearly indicate what they do. Button labels typically do not match the given exceptions that license sentence case. Currently, the main "Add command" button in the configuration button does not end in an ellipsis even though it opens a dialog, is sentence case, and the dialog has a "Save" rather than the customary "Add" that is used for these kinds of actions, in particular in kcms. The dialog title is also not translatable. This change adds the ellipsis, converts the button to title case, makes the dialog title translatable, and adds an "Add" button as an action to the dialog.
135 lines
4.5 KiB
QML
135 lines
4.5 KiB
QML
/**
|
|
* SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
*/
|
|
|
|
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15 as QQC2
|
|
import org.kde.kirigami 2.20 as Kirigami
|
|
import org.kde.kdeconnect 1.0
|
|
|
|
ListView {
|
|
id: view
|
|
Component.onCompleted: {
|
|
root.leftPadding = 0
|
|
root.rightPadding = 0
|
|
root.topPadding = 0
|
|
root.bottomPadding = 0
|
|
}
|
|
|
|
property string device
|
|
|
|
property var action: Kirigami.Action {
|
|
icon.name: "list-add"
|
|
text: i18n("Add Command…")
|
|
onTriggered: addDialog.open()
|
|
}
|
|
|
|
model: CommandsModel {
|
|
id: commandModel
|
|
deviceId: device
|
|
}
|
|
|
|
delegate: Kirigami.SwipeListItem {
|
|
width: parent.width
|
|
enabled: true
|
|
|
|
contentItem: QQC2.Label {
|
|
text: i18n("%1 <br> <i>%2</i>", name, command)
|
|
}
|
|
|
|
actions: Kirigami.Action {
|
|
text: i18n("Delete")
|
|
icon.name: "delete"
|
|
onTriggered: commandModel.removeCommand(index)
|
|
}
|
|
}
|
|
|
|
Kirigami.PlaceholderMessage {
|
|
icon.name: 'utilities-terminal'
|
|
anchors.centerIn: parent
|
|
visible: view.count === 0
|
|
width: parent.width - Kirigami.Units.gridUnit * 4
|
|
text: i18n("No Commands")
|
|
explanation: i18n("Add commands to run them remotely from other devices")
|
|
helpfulAction: view.action
|
|
}
|
|
|
|
Kirigami.Dialog {
|
|
id: addDialog
|
|
title: i18nc("@title:window", "Add Command")
|
|
|
|
padding: Kirigami.Units.largeSpacing
|
|
|
|
property Kirigami.Action addCommandAction: Kirigami.Action {
|
|
text: i18nc("@action:button", "Add")
|
|
icon.name: "list-add"
|
|
enabled: commandField.length > 0
|
|
onTriggered: {
|
|
commandModel.addCommand(nameField.text, commandField.text)
|
|
addDialog.close();
|
|
}
|
|
Component.onCompleted: {
|
|
// TODO: can be set directly once Qt 6.8 is required
|
|
Accessible.Name = i18nc("@action:button accessible", "Add command")
|
|
}
|
|
}
|
|
|
|
standardButtons: Kirigami.Dialog.Cancel
|
|
customFooterActions: [addCommandAction]
|
|
|
|
Kirigami.FormLayout {
|
|
QQC2.TextField {
|
|
id: nameField
|
|
Kirigami.FormData.label: i18n("Name:")
|
|
}
|
|
QQC2.TextField {
|
|
id: commandField
|
|
Kirigami.FormData.label: i18n("Command:")
|
|
}
|
|
|
|
QQC2.ComboBox {
|
|
Kirigami.FormData.label: i18n("Sample commands:")
|
|
textRole: "name"
|
|
model: ListModel {
|
|
id: sampleCommands
|
|
ListElement {
|
|
name: "Sample command"
|
|
command: ""
|
|
}
|
|
ListElement {
|
|
name: "Suspend"
|
|
command: "systemctl suspend"
|
|
}
|
|
ListElement {
|
|
name: "Maximum Brightness"
|
|
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`"
|
|
}
|
|
ListElement {
|
|
name: "Lock Screen"
|
|
command: "loginctl lock-session"
|
|
}
|
|
ListElement {
|
|
name: "Unlock Screen"
|
|
command: "loginctl unlock-session"
|
|
}
|
|
ListElement {
|
|
name: "Close All Vaults"
|
|
command: "qdbus org.kde.kded5 /modules/plasmavault closeAllVaults"
|
|
}
|
|
ListElement {
|
|
name: "Forcefully Close All Vaults"
|
|
command: "qdbus org.kde.kded5 /modules/plasmavault forceCloseAllVaults"
|
|
}
|
|
}
|
|
onActivated: {
|
|
if (index > 0) {
|
|
nameField.text = sampleCommands.get(index).name
|
|
commandField.text = sampleCommands.get(index).command
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|