[app] Fixup plugin config pages
Depending on the content we want to use Page or ScrollablePage The runcommand config should be a scrollablepage, but isn't right now The code even (incompletely) works around that To address this make the individual config files add their page instead of an additional wrapper page
This commit is contained in:
parent
01a605652d
commit
6366ceb530
9 changed files with 278 additions and 284 deletions
|
@ -40,7 +40,6 @@ ecm_target_qml_sources(kdeconnect-app SOURCES
|
|||
qml/volume.qml
|
||||
qml/MprisSlider.qml
|
||||
qml/PluginSettings.qml
|
||||
qml/PluginInfoPage.qml
|
||||
qml/Settings.qml
|
||||
)
|
||||
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
* 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
|
||||
import org.kde.kirigami as Kirigami
|
||||
|
||||
Kirigami.Page {
|
||||
id: root
|
||||
property string configFile
|
||||
property string device
|
||||
|
||||
actions: loader.item && loader.item.action ? [loader.item.action] : []
|
||||
|
||||
onConfigFileChanged: loader.setSource(configFile, {
|
||||
device: root.device
|
||||
})
|
||||
|
||||
Loader {
|
||||
anchors.fill: parent
|
||||
id: loader
|
||||
Component.onCompleted: setSource(configFile, {
|
||||
device: root.device
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -63,17 +63,14 @@ Kirigami.ScrollablePage {
|
|||
// https://bugreports.qt.io/browse/QTBUG-123123
|
||||
Accessible.name: i18nd("kdeconnect-app", "Configure plugin")
|
||||
onTriggered: {
|
||||
if (pageStack.lastItem.toString().startsWith("PluginInfoPage")) {
|
||||
pageStack.lastItem.configFile = configSource;
|
||||
pageStack.lastItem.title = name;
|
||||
pageStack.goForward();
|
||||
} else {
|
||||
pageStack.push(Qt.resolvedUrl("PluginInfoPage.qml"), {
|
||||
title: name,
|
||||
configFile: configSource,
|
||||
device: root.device,
|
||||
});
|
||||
if (!pageStack.lastItem.toString().startsWith("PluginSettings")) {
|
||||
pageStack.pop()
|
||||
}
|
||||
|
||||
pageStack.push(configSource, {
|
||||
title: name,
|
||||
device: root.device,
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -10,31 +10,36 @@ import QtQuick.Layouts 1.15
|
|||
import org.kde.kirigami 2.20 as Kirigami
|
||||
import org.kde.kdeconnect 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
Kirigami.Page {
|
||||
|
||||
property string device
|
||||
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_clipboard"
|
||||
}
|
||||
Kirigami.FormLayout {
|
||||
|
||||
Component.onCompleted: {
|
||||
autoShare.checked = config.getBool("autoShare", config.getBool("sendUnknown", true))
|
||||
password.checked = config.getBool("sendPassword", true)
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: autoShare
|
||||
text: i18n("Automatically share the clipboard from this device")
|
||||
onClicked: config.set("autoShare", checked)
|
||||
}
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_clipboard"
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: password
|
||||
text: i18n("Including passwords (as marked by password managers)")
|
||||
onClicked: config.set("sendPassword", checked)
|
||||
}
|
||||
Component.onCompleted: {
|
||||
autoShare.checked = config.getBool("autoShare", config.getBool("sendUnknown", true))
|
||||
password.checked = config.getBool("sendPassword", true)
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: autoShare
|
||||
text: i18n("Automatically share the clipboard from this device")
|
||||
onClicked: config.set("autoShare", checked)
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: password
|
||||
text: i18n("Including passwords (as marked by password managers)")
|
||||
onClicked: config.set("sendPassword", checked)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,46 +11,52 @@ import org.kde.kirigami 2.20 as Kirigami
|
|||
import Qt.labs.platform 1.1
|
||||
import org.kde.kdeconnect 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
Kirigami.Page {
|
||||
|
||||
property string device
|
||||
|
||||
property var action: Kirigami.Action {
|
||||
icon.name: "dialog-ok"
|
||||
text: i18n("Apply")
|
||||
onTriggered: config.set("ringtone", path.text)
|
||||
}
|
||||
|
||||
FileDialog {
|
||||
id: fileDialog
|
||||
currentFile: path.text
|
||||
|
||||
onAccepted: {
|
||||
path.text = currentFile.toString().replace("file://", "")
|
||||
actions: [
|
||||
Kirigami.Action {
|
||||
icon.name: "dialog-ok"
|
||||
text: i18n("Apply")
|
||||
onTriggered: config.set("ringtone", path.text)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_findthisdevice"
|
||||
Kirigami.FormLayout {
|
||||
|
||||
onConfigChanged: {
|
||||
path.text = getString("ringtone", StandardPaths.writableLocation(StandardPaths.DownloadsLocation).toString().replace("file://", ""))
|
||||
}
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
||||
RowLayout {
|
||||
Kirigami.FormData.label: i18n("Sound to play:")
|
||||
FileDialog {
|
||||
id: fileDialog
|
||||
currentFile: path.text
|
||||
|
||||
QQC2.TextField {
|
||||
id: path
|
||||
onAccepted: {
|
||||
path.text = currentFile.toString().replace("file://", "")
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.Button {
|
||||
icon.name: "document-open"
|
||||
onClicked: fileDialog.open()
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_findthisdevice"
|
||||
|
||||
onConfigChanged: {
|
||||
path.text = getString("ringtone", StandardPaths.writableLocation(StandardPaths.DownloadsLocation).toString().replace("file://", ""))
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Kirigami.FormData.label: i18n("Sound to play:")
|
||||
|
||||
QQC2.TextField {
|
||||
id: path
|
||||
}
|
||||
|
||||
QQC2.Button {
|
||||
icon.name: "document-open"
|
||||
onClicked: fileDialog.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,48 +10,54 @@ import QtQuick.Layouts 1.15
|
|||
import org.kde.kirigami 2.20 as Kirigami
|
||||
import org.kde.kdeconnect 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
Kirigami.Page {
|
||||
|
||||
property string device
|
||||
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_pausemusic"
|
||||
}
|
||||
Kirigami.FormLayout {
|
||||
|
||||
Component.onCompleted: {
|
||||
talking.checked = config.getBool("conditionTalking", false)
|
||||
mute.checked = config.getBool("actionMute", false)
|
||||
pause.checked = config.getBool("actionPause", true)
|
||||
resume.checked = config.getBool("actionResume", true)
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
||||
QQC2.RadioButton {
|
||||
text: i18n("Pause as soon as phone rings")
|
||||
checked: !talking.checked
|
||||
}
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_pausemusic"
|
||||
}
|
||||
|
||||
QQC2.RadioButton {
|
||||
id: talking
|
||||
onCheckedChanged: config.set("conditionTalking", checked)
|
||||
text: i18n("Pause only while talking")
|
||||
}
|
||||
Component.onCompleted: {
|
||||
talking.checked = config.getBool("conditionTalking", false)
|
||||
mute.checked = config.getBool("actionMute", false)
|
||||
pause.checked = config.getBool("actionPause", true)
|
||||
resume.checked = config.getBool("actionResume", true)
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: pause
|
||||
text: i18n("Pause media players")
|
||||
onClicked: config.set("actionPause", checked)
|
||||
}
|
||||
QQC2.RadioButton {
|
||||
text: i18n("Pause as soon as phone rings")
|
||||
checked: !talking.checked
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: mute
|
||||
text: i18n("Mute system sound")
|
||||
onClicked: config.set("actionMute", checked)
|
||||
}
|
||||
QQC2.RadioButton {
|
||||
id: talking
|
||||
onCheckedChanged: config.set("conditionTalking", checked)
|
||||
text: i18n("Pause only while talking")
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: resume
|
||||
text: i18n("Resume automatically when call ends")
|
||||
onClicked: config.set("actionResume", checked)
|
||||
QQC2.CheckBox {
|
||||
id: pause
|
||||
text: i18n("Pause media players")
|
||||
onClicked: config.set("actionPause", checked)
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: mute
|
||||
text: i18n("Mute system sound")
|
||||
onClicked: config.set("actionMute", checked)
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: resume
|
||||
text: i18n("Resume automatically when call ends")
|
||||
onClicked: config.set("actionResume", checked)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,112 +9,112 @@ 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
|
||||
}
|
||||
Kirigami.ScrollablePage {
|
||||
id: root
|
||||
|
||||
property string device
|
||||
|
||||
property var action: Kirigami.Action {
|
||||
icon.name: "list-add"
|
||||
text: i18n("Add command")
|
||||
onTriggered: addDialog.open()
|
||||
}
|
||||
actions: [
|
||||
Kirigami.Action {
|
||||
icon.name: "list-add"
|
||||
text: i18n("Add command")
|
||||
onTriggered: addDialog.open()
|
||||
}
|
||||
]
|
||||
|
||||
model: CommandsModel {
|
||||
id: commandModel
|
||||
deviceId: device
|
||||
}
|
||||
ListView {
|
||||
id: view
|
||||
|
||||
delegate: Kirigami.SwipeListItem {
|
||||
width: parent.width
|
||||
enabled: true
|
||||
|
||||
contentItem: QQC2.Label {
|
||||
text: i18n("%1 <br> <i>%2</i>", name, command)
|
||||
model: CommandsModel {
|
||||
id: commandModel
|
||||
deviceId: device
|
||||
}
|
||||
|
||||
actions: Kirigami.Action {
|
||||
text: i18n("Delete")
|
||||
icon.name: "delete"
|
||||
onTriggered: commandModel.removeCommand(index)
|
||||
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.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: root.actions[0]
|
||||
}
|
||||
|
||||
QQC2.Dialog {
|
||||
id: addDialog
|
||||
title: "Add command"
|
||||
QQC2.Dialog {
|
||||
id: addDialog
|
||||
title: "Add command"
|
||||
|
||||
standardButtons: QQC2.Dialog.Save | QQC2.Dialog.Cancel
|
||||
standardButtons: QQC2.Dialog.Save | QQC2.Dialog.Cancel
|
||||
|
||||
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"
|
||||
}
|
||||
Kirigami.FormLayout {
|
||||
QQC2.TextField {
|
||||
id: nameField
|
||||
Kirigami.FormData.label: i18n("Name:")
|
||||
}
|
||||
onActivated: {
|
||||
if (index > 0) {
|
||||
nameField.text = sampleCommands.get(index).name
|
||||
commandField.text = sampleCommands.get(index).command
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onAccepted: commandModel.addCommand(nameField.text, commandField.text)
|
||||
onAccepted: commandModel.addCommand(nameField.text, commandField.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,47 +10,52 @@ import QtQuick.Layouts 1.1
|
|||
import org.kde.kirigami 2.5 as Kirigami
|
||||
import org.kde.kdeconnect 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
Kirigami.Page {
|
||||
|
||||
property string device
|
||||
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_sendnotifications"
|
||||
}
|
||||
Kirigami.FormLayout {
|
||||
|
||||
Component.onCompleted: {
|
||||
persistent.checked = config.getBool("generalPersistent", false)
|
||||
includeBody.checked = config.getBool("generalIncludeBody", true)
|
||||
includeIcon.checked = config.getBool("generalSynchronizeIcons", true)
|
||||
urgency.value = config.getInt("generalUrgency", 0)
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
||||
CheckBox {
|
||||
id: persistent
|
||||
text: i18n("Persistent notifications only")
|
||||
onClicked: config.set("generalPersistent", checked)
|
||||
}
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_sendnotifications"
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: includeBody
|
||||
text: i18n("Include body")
|
||||
onClicked: config.set("generalIncludeBody", checked)
|
||||
}
|
||||
Component.onCompleted: {
|
||||
persistent.checked = config.getBool("generalPersistent", false)
|
||||
includeBody.checked = config.getBool("generalIncludeBody", true)
|
||||
includeIcon.checked = config.getBool("generalSynchronizeIcons", true)
|
||||
urgency.value = config.getInt("generalUrgency", 0)
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: includeIcon
|
||||
text: i18n("Include icon")
|
||||
onClicked: config.set("generalSynchronizeIcons", checked)
|
||||
}
|
||||
CheckBox {
|
||||
id: persistent
|
||||
text: i18n("Persistent notifications only")
|
||||
onClicked: config.set("generalPersistent", checked)
|
||||
}
|
||||
|
||||
SpinBox {
|
||||
id: urgency
|
||||
Kirigami.FormData.label: i18n("Minimum urgency level:")
|
||||
from: 0
|
||||
to: 2
|
||||
onValueModified: config.set("generalUrgency", value)
|
||||
}
|
||||
CheckBox {
|
||||
id: includeBody
|
||||
text: i18n("Include body")
|
||||
onClicked: config.set("generalIncludeBody", checked)
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: includeIcon
|
||||
text: i18n("Include icon")
|
||||
onClicked: config.set("generalSynchronizeIcons", checked)
|
||||
}
|
||||
|
||||
SpinBox {
|
||||
id: urgency
|
||||
Kirigami.FormData.label: i18n("Minimum urgency level:")
|
||||
from: 0
|
||||
to: 2
|
||||
onValueModified: config.set("generalUrgency", value)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,49 +11,56 @@ import org.kde.kirigami 2.20 as Kirigami
|
|||
import Qt.labs.platform 1.1
|
||||
import org.kde.kdeconnect 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
Kirigami.Page {
|
||||
|
||||
property string device
|
||||
|
||||
property var action: Kirigami.Action {
|
||||
icon.name: "dialog-ok"
|
||||
text: i18n("Apply")
|
||||
onTriggered: config.set("incoming_path", path.text)
|
||||
}
|
||||
|
||||
FolderDialog {
|
||||
id: folderDialog
|
||||
currentFolder: path.text
|
||||
|
||||
onAccepted: {
|
||||
path.text = currentFolder.toString().replace("file://", "")
|
||||
actions: [
|
||||
Kirigami.Action {
|
||||
icon.name: "dialog-ok"
|
||||
text: i18n("Apply")
|
||||
onTriggered: config.set("incoming_path", path.text)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_share"
|
||||
Kirigami.FormLayout {
|
||||
|
||||
onConfigChanged: {
|
||||
path.text = getString("incoming_path", StandardPaths.writableLocation(StandardPaths.DownloadsLocation).toString().replace("file://", ""))
|
||||
}
|
||||
}
|
||||
anchors.fill: parent
|
||||
|
||||
RowLayout {
|
||||
Kirigami.FormData.label: i18n("Save files in:")
|
||||
FolderDialog {
|
||||
id: folderDialog
|
||||
currentFolder: path.text
|
||||
|
||||
QQC2.TextField {
|
||||
id: path
|
||||
onAccepted: {
|
||||
path.text = currentFolder.toString().replace("file://", "")
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.Button {
|
||||
icon.name: "document-open"
|
||||
onClicked: folderDialog.open()
|
||||
}
|
||||
}
|
||||
KdeConnectPluginConfig {
|
||||
id: config
|
||||
deviceId: device
|
||||
pluginName: "kdeconnect_share"
|
||||
|
||||
QQC2.Label {
|
||||
text: i18n("%1 in the path will be replaced with the specific device name", "%1")
|
||||
onConfigChanged: {
|
||||
path.text = getString("incoming_path", StandardPaths.writableLocation(StandardPaths.DownloadsLocation).toString().replace("file://", ""))
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Kirigami.FormData.label: i18n("Save files in:")
|
||||
|
||||
QQC2.TextField {
|
||||
id: path
|
||||
}
|
||||
|
||||
QQC2.Button {
|
||||
icon.name: "document-open"
|
||||
onClicked: folderDialog.open()
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.Label {
|
||||
text: i18n("%1 in the path will be replaced with the specific device name", "%1")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue