Warning, /plasma/xdg-desktop-portal-kde/src/kirigami-filepicker/declarative/FilePickerWindow.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2019-2020 Jonah BrĂ¼chert <jbb@kaidan.im>
0002 // SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
0003 //
0004 // SPDX-License-Identifier: LGPL-2.0-or-later
0005
0006 import QtQuick
0007 import QtQuick.Controls as QQC2
0008 import QtQuick.Layouts
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.kirigamifilepicker
0011
0012 /**
0013 * The FilePickerWindow type is used by the C++ MobileFileDialog class.
0014 * It should not be used from QML,
0015 * its only purpose is to create an integration with C++ using its FileChooserCallback.
0016 */
0017 Kirigami.ApplicationWindow {
0018 id: root
0019
0020 title: callback.title
0021 visible: false
0022
0023 globalDrawer: PlacesGlobalDrawer {
0024 onPlaceOpenRequested: {
0025 filePicker.folder = place;
0026 close()
0027 }
0028 }
0029
0030 contextDrawer: Kirigami.ContextDrawer {}
0031
0032 onVisibleChanged: {
0033 // File picker was opened
0034 if (root.visible) {
0035 // reset old data
0036 filePicker.fileUrls = []
0037 }
0038 }
0039
0040 onClosing: close => {
0041 close.accepted = false
0042
0043 // Always make sure to exit the while loop in the filechooser portal
0044 callback.cancel()
0045 close.accepted = true
0046 }
0047
0048 FileChooserCallback {
0049 id: callback
0050 objectName: "callback"
0051
0052 Component.onCompleted: console.log(JSON.stringify(callback))
0053 }
0054
0055 pageStack.initialPage: FilePicker {
0056 id: filePicker
0057
0058 actions: [
0059 Kirigami.Action {
0060 icon.name: "folder"
0061 text: i18n("Create Folder")
0062 visible: !root.selectExisting
0063
0064 onTriggered: filePicker.createDirectorySheet.open()
0065 },
0066 Kirigami.Action {
0067 id: filterAction
0068 icon.name: "view-filter"
0069 checkable: true
0070 checked: true
0071 text: i18n("Filter Filetype")
0072 },
0073 Kirigami.Action {
0074 icon.name: "view-hidden"
0075 text: i18n("Show Hidden Files")
0076 checkable: true
0077 checked: filePicker.showHiddenFiles
0078
0079 onToggled: filePicker.showHiddenFiles = checked
0080 }
0081 ]
0082
0083 onAccepted: urls => {
0084 callback.accepted(urls)
0085 }
0086
0087 selectMultiple: callback.selectMultiple
0088 selectExisting: callback.selectExisting
0089 nameFilters: callback.nameFilters
0090 mimeTypeFilters: filterAction.checked ? callback.mimeTypeFilters : undefined
0091 currentFile: callback.currentFile
0092 acceptLabel: callback.acceptLabel
0093 selectFolder: callback.selectFolder
0094 folder: callback.folder
0095 title: callback.title
0096 }
0097 }