diff options
Diffstat (limited to 'src/imports/platform/qquickplatformfiledialog.cpp')
-rw-r--r-- | src/imports/platform/qquickplatformfiledialog.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/imports/platform/qquickplatformfiledialog.cpp b/src/imports/platform/qquickplatformfiledialog.cpp index f6d99cb3..23f696f8 100644 --- a/src/imports/platform/qquickplatformfiledialog.cpp +++ b/src/imports/platform/qquickplatformfiledialog.cpp @@ -122,8 +122,12 @@ QQuickPlatformFileDialog::QQuickPlatformFileDialog(QObject *parent) dialog = new QWidgetPlatformFileDialog(this); #endif if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, this, &QQuickPlatformFileDialog::fileSelected); - connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, this, &QQuickPlatformFileDialog::filesSelected); + connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, [this](const QUrl &file) { + emit fileSelected(addDefaultSuffix(file)); + }); + connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, [this](const QList<QUrl> &files) { + emit filesSelected(addDefaultSuffixes(files)); + }); connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, [this](const QUrl &url) { if (m_current == url) return; @@ -189,7 +193,7 @@ QUrl QQuickPlatformFileDialog::currentFile() const if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) m_current = fileDialog->selectedFiles().value(0); } - return m_current; + return addDefaultSuffix(m_current); } void QQuickPlatformFileDialog::setCurrentFile(const QUrl &file) @@ -362,4 +366,23 @@ void QQuickPlatformFileDialog::applyOptions() m_options->setWindowTitle(title()); } +QUrl QQuickPlatformFileDialog::addDefaultSuffix(const QUrl &file) const +{ + QUrl url = file; + const QString path = url.path(); + const QString suffix = m_options->defaultSuffix(); + if (!suffix.isEmpty() && !path.endsWith(QLatin1Char('/')) && path.lastIndexOf(QLatin1Char('.')) == -1) + url.setPath(path + QLatin1Char('.') + suffix); + return url; +} + +QList<QUrl> QQuickPlatformFileDialog::addDefaultSuffixes(const QList<QUrl> &files) const +{ + QList<QUrl> urls; + urls.reserve(files.size()); + for (const QUrl &file : files) + urls += addDefaultSuffix(file); + return urls; +} + QT_END_NAMESPACE |