summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs/qfiledialog.cpp
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2020-02-17 16:13:15 +0200
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2020-02-19 14:28:00 +0200
commit1576f81baa8a1c992a005397edfc5d6f9e1b44c1 (patch)
tree8d310d200cf01b28021d78896038b3a89e38db6a /src/widgets/dialogs/qfiledialog.cpp
parent3dd5caaaec7c4c0d209b0327b647bfb5d46ac001 (diff)
Android: QFileDialog check isLocalFile() with static functions
The functions below try to return the selected QUrl string with toLocalFile(), however in case of Android "content" Uri isLocalFile() is false, thus we end up with empty path. This checks is QUrl isLocalFile() otherwise return QUrl::toString(). * QString QFileDialog::getSaveFileName() * QString QFileDialog::getOpenFileName() * QStringList QFileDialog::getOpenFileNames() * QString QFileDialog::getExistingDirectory() Change-Id: If7eefb3a067d4bd09849807e60554e0ded507f19 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 7c2c202cd6..af2007a4d1 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -2193,8 +2193,12 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
Options options)
{
const QStringList schemes = QStringList(QStringLiteral("file"));
- const QUrl selectedUrl = getOpenFileUrl(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes);
- return selectedUrl.toLocalFile();
+ const QUrl selectedUrl = getOpenFileUrl(parent, caption, QUrl::fromLocalFile(dir), filter,
+ selectedFilter, options, schemes);
+ if (selectedUrl.isLocalFile() || selectedUrl.isEmpty())
+ return selectedUrl.toLocalFile();
+ else
+ return selectedUrl.toString();
}
/*!
@@ -2303,11 +2307,16 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
Options options)
{
const QStringList schemes = QStringList(QStringLiteral("file"));
- const QList<QUrl> selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes);
+ const QList<QUrl> selectedUrls = getOpenFileUrls(parent, caption, QUrl::fromLocalFile(dir),
+ filter, selectedFilter, options, schemes);
QStringList fileNames;
fileNames.reserve(selectedUrls.size());
- for (const QUrl &url : selectedUrls)
- fileNames << url.toLocalFile();
+ for (const QUrl &url : selectedUrls) {
+ if (url.isLocalFile() || url.isEmpty())
+ fileNames << url.toLocalFile();
+ else
+ fileNames << url.toString();
+ }
return fileNames;
}
@@ -2549,8 +2558,12 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
Options options)
{
const QStringList schemes = QStringList(QStringLiteral("file"));
- const QUrl selectedUrl = getSaveFileUrl(parent, caption, QUrl::fromLocalFile(dir), filter, selectedFilter, options, schemes);
- return selectedUrl.toLocalFile();
+ const QUrl selectedUrl = getSaveFileUrl(parent, caption, QUrl::fromLocalFile(dir), filter,
+ selectedFilter, options, schemes);
+ if (selectedUrl.isLocalFile() || selectedUrl.isEmpty())
+ return selectedUrl.toLocalFile();
+ else
+ return selectedUrl.toString();
}
/*!
@@ -2657,8 +2670,12 @@ QString QFileDialog::getExistingDirectory(QWidget *parent,
Options options)
{
const QStringList schemes = QStringList(QStringLiteral("file"));
- const QUrl selectedUrl = getExistingDirectoryUrl(parent, caption, QUrl::fromLocalFile(dir), options, schemes);
- return selectedUrl.toLocalFile();
+ const QUrl selectedUrl =
+ getExistingDirectoryUrl(parent, caption, QUrl::fromLocalFile(dir), options, schemes);
+ if (selectedUrl.isLocalFile() || selectedUrl.isEmpty())
+ return selectedUrl.toLocalFile();
+ else
+ return selectedUrl.toString();
}
/*!