diff options
-rw-r--r-- | src/imports/platform/plugins.qmltypes | 1 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformfiledialog.cpp | 23 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformfiledialog_p.h | 5 |
3 files changed, 29 insertions, 0 deletions
diff --git a/src/imports/platform/plugins.qmltypes b/src/imports/platform/plugins.qmltypes index dc9e1562..1188697d 100644 --- a/src/imports/platform/plugins.qmltypes +++ b/src/imports/platform/plugins.qmltypes @@ -115,6 +115,7 @@ Module { Property { name: "files"; type: "QList<QUrl>" } Property { name: "currentFile"; type: "QUrl" } Property { name: "currentFiles"; type: "QList<QUrl>" } + Property { name: "folder"; type: "QUrl" } Property { name: "options"; type: "QFileDialogOptions::FileDialogOptions" } Property { name: "nameFilters"; type: "QStringList" } Property { name: "defaultSuffix"; type: "string" } diff --git a/src/imports/platform/qquickplatformfiledialog.cpp b/src/imports/platform/qquickplatformfiledialog.cpp index 0a617a8c..99667262 100644 --- a/src/imports/platform/qquickplatformfiledialog.cpp +++ b/src/imports/platform/qquickplatformfiledialog.cpp @@ -255,6 +255,28 @@ void QQuickPlatformFileDialog::setCurrentFiles(const QList<QUrl> &files) } /*! + \qmlproperty url Qt.labs.platform::FileDialog::folder + + This property holds the folder where files are selected. + For selecting a folder, use FolderDialog instead. + + \sa FolderDialog +*/ +QUrl QQuickPlatformFileDialog::folder() const +{ + if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) + return fileDialog->directory(); + return QUrl(); +} + +void QQuickPlatformFileDialog::setFolder(const QUrl &folder) +{ + if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) + fileDialog->setDirectory(folder); + m_options->setInitialDirectory(folder); +} + +/*! \qmlproperty flags Qt.labs.platform::FileDialog::options This property holds the various options that affect the look and feel of the dialog. @@ -426,6 +448,7 @@ QPlatformDialogHelper *QQuickPlatformFileDialog::createHelper() // TODO: emit currentFileChanged only when the first entry in currentFiles changes connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFileChanged); connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFilesChanged); + connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered, this, &QQuickPlatformFileDialog::folderChanged); fileDialog->setOptions(m_options); } return dialog; diff --git a/src/imports/platform/qquickplatformfiledialog_p.h b/src/imports/platform/qquickplatformfiledialog_p.h index 76acd105..2d3b82be 100644 --- a/src/imports/platform/qquickplatformfiledialog_p.h +++ b/src/imports/platform/qquickplatformfiledialog_p.h @@ -62,6 +62,7 @@ class QQuickPlatformFileDialog : public QQuickPlatformDialog Q_PROPERTY(QList<QUrl> files READ files WRITE setFiles NOTIFY filesChanged FINAL) Q_PROPERTY(QUrl currentFile READ currentFile WRITE setCurrentFile NOTIFY currentFileChanged FINAL) Q_PROPERTY(QList<QUrl> currentFiles READ currentFiles WRITE setCurrentFiles NOTIFY currentFilesChanged FINAL) + Q_PROPERTY(QUrl folder READ folder WRITE setFolder NOTIFY folderChanged FINAL) Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL) Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters RESET resetNameFilters NOTIFY nameFiltersChanged FINAL) Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix RESET resetDefaultSuffix NOTIFY defaultSuffixChanged FINAL) @@ -94,6 +95,9 @@ public: QList<QUrl> currentFiles() const; void setCurrentFiles(const QList<QUrl> &files); + QUrl folder() const; + void setFolder(const QUrl &folder); + QFileDialogOptions::FileDialogOptions options() const; void setOptions(QFileDialogOptions::FileDialogOptions options); void resetOptions(); @@ -120,6 +124,7 @@ Q_SIGNALS: void filesChanged(); void currentFileChanged(); void currentFilesChanged(); + void folderChanged(); void optionsChanged(); void nameFiltersChanged(); void defaultSuffixChanged(); |