summarylogtreecommitdiffstats
path: root/0002-Show-only-local-files.patch
blob: 834c013e99a719ac7b4f3727a99fec7ea0cac7dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From a42107c2ca206fadb32496057089c240cfc0d160 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Tue, 18 Jan 2022 09:42:12 +0100
Subject: [PATCH 2/3] Show only local files

Call setSupportedSchemes("file") to allow only local files to be selected.
That way QUrl::toStringList can be used as well.
---
 src/filechooser.cpp | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/filechooser.cpp b/src/filechooser.cpp
index 97a48fc..d141212 100644
--- a/src/filechooser.cpp
+++ b/src/filechooser.cpp
@@ -305,6 +305,7 @@ uint FileChooserPortal::OpenFile(const QDBusObjectPath &handle,
     fileDialog->setModal(modalDialog);
     KFile::Mode mode = directory ? KFile::Mode::Directory : multipleFiles ? KFile::Mode::Files : KFile::Mode::File;
     fileDialog->m_fileWidget->setMode(mode | KFile::Mode::ExistingOnly);
+    fileDialog->m_fileWidget->setSupportedSchemes(QStringList{QStringLiteral("file")});
     fileDialog->m_fileWidget->okButton()->setText(!acceptLabel.isEmpty() ? acceptLabel : i18n("Open"));
 
     bool bMimeFilters = false;
@@ -320,19 +321,13 @@ uint FileChooserPortal::OpenFile(const QDBusObjectPath &handle,
     }
 
     if (fileDialog->exec() == QDialog::Accepted) {
-        QStringList files;
-        const auto selectedFiles = fileDialog->m_fileWidget->selectedFiles();
-        for (const QString &filename : selectedFiles) {
-            QUrl url = QUrl::fromLocalFile(filename);
-            files << url.toDisplayString();
-        }
-
-        if (files.isEmpty()) {
+        const auto urls = fileDialog->m_fileWidget->selectedUrls();
+        if (urls.isEmpty()) {
             qCDebug(XdgDesktopPortalKdeFileChooser) << "Failed to open file: no local file selected";
             return 2;
         }
 
-        results.insert(QStringLiteral("uris"), files);
+        results.insert(QStringLiteral("uris"), QUrl::toStringList(urls));
         results.insert(QStringLiteral("writable"), true);
 
         if (optionsWidget) {
-- 
2.35.0