summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-26 14:28:34 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-27 13:36:14 +0200
commitcc2397eea05eedbbcbf8a592fad13ee51f6db5cf (patch)
treefb2a22ad90fdf0ff82538ed957d3e92fbe09cc2e /src/core
parent1e11cc6c856b731a7e8d42a433840671c46e97a8 (diff)
Clean-up handling of selected files
Simplifies the code and makes sure both the two QML implementations of the file-selector are source compatible. Note, this does not address issues with test on Windows. Change-Id: Ieee84866c456d600a812683cae389d6a6980366f Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/file_picker_controller.cpp36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp
index 3e64afd20..28ededf37 100644
--- a/src/core/file_picker_controller.cpp
+++ b/src/core/file_picker_controller.cpp
@@ -64,12 +64,19 @@ FilePickerController::~FilePickerController() = default;
void FilePickerController::accepted(const QStringList &files)
{
QStringList stringList;
-
- for (const QString &file : files) {
- if (QDir(file).isAbsolute())
- stringList.append(file);
- else
- qWarning("Ignore invalid item in FilePickerController::accepted(QStringList): %s", qPrintable(file));
+ stringList.reserve(files.count());
+
+ for (const QString &urlString : files) {
+ // We accept strings on both absolute-path and file-URL form:
+ if (QDir::isAbsolutePath(urlString)) {
+ stringList.append(QDir::fromNativeSeparators(urlString));
+ } else {
+ QUrl url(urlString, QUrl::StrictMode);
+ if (url.isLocalFile() && QDir::isAbsolutePath(url.toLocalFile()))
+ stringList.append(url.toLocalFile());
+ else
+ qWarning("Ignoring invalid item in FilePickerController::accepted(QStringList): %s", qPrintable(urlString));
+ }
}
FilePickerController::filesSelectedInChooser(stringList);
@@ -77,21 +84,10 @@ void FilePickerController::accepted(const QStringList &files)
void FilePickerController::accepted(const QVariant &files)
{
- QStringList stringList;
- QList<QUrl> urlList = QUrl::fromStringList(files.toStringList());
-
- if (urlList.isEmpty()) {
- FilePickerController::accepted(stringList);
- } else {
- for (const QUrl &url : qAsConst(urlList)) {
- if (url.isValid() && url.scheme() == "file" && !url.path().isEmpty())
- stringList.append(url.path());
- else
- qWarning("Ignore invalid item in FilePickerController::accepted(QVariant): %s", qPrintable(url.toString()));
- }
+ if (!files.canConvert(QVariant::StringList))
+ qWarning("An unhandled type '%s' was provided in FilePickerController::accepted(QVariant)", files.typeName());
- FilePickerController::accepted(stringList);
- }
+ accepted(files.toStringList());
}
void FilePickerController::rejected()