Warning, /plasma/plasma-desktop/kcms/desktoppaths/ui/main.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 QtQuick 2.15
0008 import QtQuick.Layouts
0009 import QtQuick.Controls as QQC2
0010 import org.kde.kirigami 2.20 as Kirigami
0011 import org.kde.kcmutils as KCM
0012 
0013 KCM.SimpleKCM {
0014     id: root
0015 
0016     KCM.ConfigModule.buttons: KCM.ConfigModule.Default | KCM.ConfigModule.Apply
0017 
0018     implicitWidth: Kirigami.Units.gridUnit * 30
0019     implicitHeight: Kirigami.Units.gridUnit * 20
0020 
0021                                                                       // FIXME: get actual scrollbar width,
0022                                                                       // don't assume gridUnit is right
0023     readonly property int availableSpace: root.width - (__flickableOverflows ? Kirigami.Units.gridUnit : 0)
0024                                                      - buttonMetrics.implicitWidth
0025                                                      - desktop.spacing
0026                                                      - leftPadding
0027                                                      - rightPadding
0028 
0029     readonly property int commonFieldWidth: Math.min(availableSpace,
0030                                                      Math.max(desktop.implicitTextFieldWidth,
0031                                                               documents.implicitTextFieldWidth,
0032                                                               downloads.implicitTextFieldWidth,
0033                                                               videos.implicitTextFieldWidth,
0034                                                               pictures.implicitTextFieldWidth,
0035                                                               music.implicitTextFieldWidth,
0036                                                               publicPath.implicitTextFieldWidth,
0037                                                               templates.implicitTextFieldWidth))
0038 
0039     // Need to get the width of a standard button since UrlRequester includes one,
0040     // so we can subtract it from the available width for the text field.Otherwise
0041     // the layout overflows in FormLayout's narrow mode
0042     QQC2.Button {
0043         id: buttonMetrics
0044         visible: false
0045         icon.name: "document-open"
0046     }
0047 
0048     Kirigami.FormLayout {
0049         UrlRequester {
0050             id: desktop
0051 
0052             Kirigami.FormData.label: i18n("Desktop path:")
0053 
0054             textFieldWidth: root.commonFieldWidth
0055 
0056             location: kcm.settings.desktopLocation
0057             defaultLocation: kcm.settings.defaultDesktopLocation
0058             Accessible.description: i18n("This folder contains all the files which you see on your desktop. You can change the location of this folder if you want to, and the contents will move automatically to the new location as well.")
0059 
0060             onNewLocationSelected: (newLocation) => kcm.settings.desktopLocation = newLocation
0061         }
0062 
0063         UrlRequester {
0064             id: documents
0065 
0066             Kirigami.FormData.label: i18n("Documents path:")
0067 
0068             textFieldWidth: root.commonFieldWidth
0069 
0070             location: kcm.settings.documentsLocation
0071             defaultLocation: kcm.settings.defaultDocumentsLocation
0072             Accessible.description: i18n("This folder will be used by default to load or save documents from or to.")
0073 
0074             onNewLocationSelected: (newLocation) => kcm.settings.documentsLocation = newLocation
0075         }
0076 
0077         UrlRequester {
0078             id: downloads
0079 
0080             Kirigami.FormData.label: i18n("Downloads path:")
0081 
0082             textFieldWidth: root.commonFieldWidth
0083 
0084             location: kcm.settings.downloadsLocation
0085             defaultLocation: kcm.settings.defaultDownloadsLocation
0086             Accessible.description: i18n("This folder will be used by default to save your downloaded items.")
0087 
0088             onNewLocationSelected: (newLocation) => kcm.settings.downloadsLocation = newLocation
0089         }
0090 
0091         UrlRequester {
0092             id: videos
0093 
0094             Kirigami.FormData.label: i18n("Videos path:")
0095 
0096             textFieldWidth: root.commonFieldWidth
0097 
0098             location: kcm.settings.videosLocation
0099             defaultLocation: kcm.settings.defaultVideosLocation
0100             Accessible.description: i18n("This folder will be used by default to load or save movies from or to.")
0101 
0102             onNewLocationSelected: (newLocation) => kcm.settings.videosLocation = newLocation
0103         }
0104 
0105         UrlRequester {
0106             id: pictures
0107 
0108             Kirigami.FormData.label: i18n("Pictures path:")
0109 
0110             textFieldWidth: root.commonFieldWidth
0111 
0112             location: kcm.settings.picturesLocation
0113             defaultLocation: kcm.settings.defaultPicturesLocation
0114             Accessible.description: i18n("This folder will be used by default to load or save pictures from or to.")
0115 
0116             onNewLocationSelected: (newLocation) => kcm.settings.picturesLocation = newLocation
0117         }
0118 
0119         UrlRequester {
0120             id: music
0121 
0122             Kirigami.FormData.label: i18n("Music path:")
0123 
0124             textFieldWidth: root.commonFieldWidth
0125 
0126             location: kcm.settings.musicLocation
0127             defaultLocation: kcm.settings.defaultMusicLocation
0128             Accessible.description: i18n("This folder will be used by default to load or save music from or to.")
0129 
0130             onNewLocationSelected: (newLocation) => kcm.settings.musicLocation = newLocation
0131         }
0132 
0133         UrlRequester {
0134             id: publicPath
0135 
0136             Kirigami.FormData.label: i18n("Public path:")
0137 
0138             textFieldWidth: root.commonFieldWidth
0139 
0140             location: kcm.settings.publicLocation
0141             defaultLocation: kcm.settings.defaultPublicLocation
0142             Accessible.description: i18n("This folder will be used by default to load or save movies from or to.")
0143 
0144             onNewLocationSelected: (newLocation) => kcm.settings.publicLocation = newLocation
0145         }
0146 
0147         UrlRequester {
0148             id: templates
0149 
0150             Kirigami.FormData.label: i18n("Templates path:")
0151 
0152             textFieldWidth: root.commonFieldWidth
0153 
0154             location: kcm.settings.templatesLocation
0155             defaultLocation: kcm.settings.defaultTemplatesLocation
0156             Accessible.description: i18n("This folder will be used by default to load or save templates from or to.")
0157 
0158             onNewLocationSelected: (newLocation) => kcm.settings.templatesLocation = newLocation
0159         }
0160     }
0161 }