diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-01-28 16:04:06 +0200 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-02-17 19:05:31 +0200 |
commit | dcb38e4bc74337d0d670bc30b8193cbd73f11599 (patch) | |
tree | 3638464c9ab65dbe39d6f760505ec5639fa95b1b /src/plugins/platforms/android/qandroidplatformfiledialoghelper.h | |
parent | f36b042e2b66a3ad32980b21e9fafc1bd9b0c7c1 (diff) |
Android: fully integrate native file dialog
Allow Qt to use native file dialog to open (file, multiple files,
directory) and save a file.
Due to changes in file permission in Android 10, proper permissions
tokens are granted after selecting a file or directory.
[ChangeLog][Android] Use native file dialog by default for open and save
operations.
Task-number: QTBUG-82120
Fixes: QTBUG-75484
Change-Id: I92c9d08e0f214a57c4b3880fbd948adbabe39694
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformfiledialoghelper.h')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformfiledialoghelper.h | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h index 5cd26af7c9..fa9c3f47b3 100644 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h @@ -44,6 +44,8 @@ #include <QEventLoop> #include <qpa/qplatformdialoghelper.h> #include <QtCore/private/qjnihelpers_p.h> +#include <private/qjni_p.h> +#include <QEventLoop> QT_BEGIN_NAMESPACE @@ -55,26 +57,34 @@ class QAndroidPlatformFileDialogHelper: public QPlatformFileDialogHelper, public public: QAndroidPlatformFileDialogHelper(); - void exec() override; - bool show(Qt::WindowFlags windowFlags, - Qt::WindowModality windowModality, - QWindow *parent) override; + void exec() override; + bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) override; void hide() override; - QString selectedNameFilter() const override; - void selectNameFilter(const QString &filter) override; - void setFilter() override; - QList<QUrl> selectedFiles() const override; - void selectFile(const QUrl &file) override; - QUrl directory() const override; - void setDirectory(const QUrl &directory) override; - bool defaultNameFilterDisables() const override; + QString selectedNameFilter() const override { return QString(); }; + void selectNameFilter(const QString &filter) override { Q_UNUSED(filter) }; + void setFilter() override {}; + QList<QUrl> selectedFiles() const override { return m_selectedFile; }; + void selectFile(const QUrl &file) override { Q_UNUSED(file) }; + QUrl directory() const override { return QUrl(); }; + void setDirectory(const QUrl &directory) override { Q_UNUSED(directory) }; + bool defaultNameFilterDisables() const override { return false; }; bool handleActivityResult(jint requestCode, jint resultCode, jobject data) override; private: + QJNIObjectPrivate getFileDialogIntent(const QString &intentType); + void takePersistableUriPermission(const QJNIObjectPrivate &uri); + void setLocalFilesOnly(bool localOnly); + void setIntentTitle(const QString &title); + void setOpenableCategory(); + void setAllowMultipleSelections(bool allowMultiple); + void setMimeTypes(); + QEventLoop m_eventLoop; - QUrl m_selectedFile; + QList<QUrl> m_selectedFile; + QJNIObjectPrivate m_intent; + const QJNIObjectPrivate m_activity; }; } |