47 lines
1.2 KiB
QML
47 lines
1.2 KiB
QML
|
// Copyright 2019 miruka
|
||
|
// This file is part of harmonyqml, licensed under LGPLv3.
|
||
|
|
||
|
import QtQuick 2.12
|
||
|
import Qt.labs.platform 1.1
|
||
|
|
||
|
Item {
|
||
|
anchors.fill: parent
|
||
|
|
||
|
property alias dialog: fileDialog
|
||
|
property var selectedFile: null
|
||
|
|
||
|
enum FileType { All, Images }
|
||
|
property int fileType: FileType.All
|
||
|
|
||
|
TapHandler { onTapped: fileDialog.open() }
|
||
|
|
||
|
FileDialog {
|
||
|
id: fileDialog
|
||
|
|
||
|
property var filters: ({
|
||
|
all: qsTr("All files") + " (*)",
|
||
|
images: qsTr("Image files") +
|
||
|
" (*.jpg *.jpeg *.png *.gif *.bmp *.webp)"
|
||
|
})
|
||
|
|
||
|
nameFilters:
|
||
|
fileType == HFileDialogOpener.FileType.Images ?
|
||
|
[filters.images, filters.all] :
|
||
|
[filters.all]
|
||
|
|
||
|
folder: StandardPaths.writableLocation(
|
||
|
fileType == HFileDialogOpener.FileType.Images ?
|
||
|
StandardPaths.PicturesLocation :
|
||
|
StandardPaths.HomeLocation
|
||
|
)
|
||
|
|
||
|
title: "Select file"
|
||
|
modality: Qt.WindowModal
|
||
|
|
||
|
onVisibleChanged: if (visible) {
|
||
|
selectedFile = Qt.binding(() => Qt.resolvedUrl(currentFile))
|
||
|
}
|
||
|
onRejected: selectedFile = null
|
||
|
}
|
||
|
}
|