Warning, /plasma/plasma-desktop/kcms/desktoppaths/ui/UrlRequester.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2023 Fushan Wen <qydwhotmail@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtCore
0008 import QtQuick 2.15
0009 import QtQuick.Controls 2.15 as QQC2
0010 import QtQuick.Dialogs 6.3
0011 import org.kde.kirigami 2.20 as Kirigami
0012 import org.kde.kcmutils as KCM
0013 
0014 Row {
0015     id: urlRequester
0016 
0017     required property url location
0018     required property url defaultLocation
0019     required property int textFieldWidth
0020 
0021     readonly property int implicitTextFieldWidth: metrics.width + textField.leftPadding + textField.rightPadding
0022 
0023     /**
0024      * Emitted when the user selects a new folder
0025      */
0026     signal newLocationSelected(url newLocation)
0027 
0028     spacing: Kirigami.Units.smallSpacing
0029 
0030     TextMetrics {
0031         id: metrics
0032         text: textField.text
0033     }
0034 
0035     Component {
0036         id: fileDialogComponent
0037 
0038         FolderDialog {
0039             id: fileDialog
0040             currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
0041 
0042             onAccepted: {
0043                 urlRequester.newLocationSelected(selectedFolder);
0044                 destroy();
0045             }
0046             onRejected: destroy()
0047             Component.onCompleted: open()
0048         }
0049     }
0050 
0051     KCM.SettingHighlighter {
0052         highlight: location !== defaultLocation
0053     }
0054 
0055     QQC2.TextField {
0056         id: textField
0057         width: urlRequester.textFieldWidth
0058         height: Math.max(fileDialogButton.implicitHeight, textField.implicitHeight)
0059         text: location.toString().substr(7)
0060         readOnly: true
0061 
0062         Accessible.description: urlRequester.Accessible.description
0063         QQC2.ToolTip.text: urlRequester.Accessible.description
0064         QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
0065         QQC2.ToolTip.visible: textField.hovered
0066     }
0067 
0068     QQC2.Button {
0069         id: fileDialogButton
0070         anchors.verticalCenter: textField.verticalCenter
0071 
0072         display: QQC2.AbstractButton.IconOnly
0073         icon.name: "document-open"
0074         text: i18nc("@action:button", "Choose new location")
0075 
0076         Accessible.description: text
0077         QQC2.ToolTip.text: text
0078         QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
0079         QQC2.ToolTip.visible: fileDialogButton.hovered
0080 
0081         onClicked: fileDialogComponent.incubateObject(urlRequester)
0082     }
0083 }