diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-10-21 13:25:02 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-10-25 15:47:46 +0300 |
commit | cbc29dc16c4e08d6e399c7c26a38736bff80d6e6 (patch) | |
tree | 668867109e9cef3b1b17b8560eca9177a81d0586 /src/plugins/platforms/android | |
parent | 137ba2aba858bc32350e82ef6a1da91266c7f432 (diff) |
Android: set EXTRA_TITLE to the initially selected file in save dialog
The extra data EXTRA_TITLE is only documented to be used to provide
the initially selected file name in the context of file dialog [1].
So, let's stick to setting it only in save mode. This also now allows
the save dialog to set an initial file name which wasn't possible
before.
[1] https://developer.android.com/reference/kotlin/android/content/
Intent#action_create_document
Pick-to: 6.2 5.15
Change-Id: Ib55191a7269bfad28af4928f4e74d87981bdd574
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp | 11 | ||||
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformfiledialoghelper.h | 2 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp index 7741fc755d..1ec5867a38 100644 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp @@ -46,6 +46,7 @@ #include <QMimeDatabase> #include <QMimeType> #include <QRegularExpression> +#include <QUrl> QT_BEGIN_NAMESPACE @@ -119,7 +120,7 @@ void QAndroidPlatformFileDialogHelper::takePersistableUriPermission(const QJniOb uri.object(), modeFlags); } -void QAndroidPlatformFileDialogHelper::setIntentTitle(const QString &title) +void QAndroidPlatformFileDialogHelper::setInitialFileName(const QString &title) { const QJniObject extraTitle = QJniObject::getStaticObjectField( JniIntentClass, "EXTRA_TITLE", "Ljava/lang/String;"); @@ -209,6 +210,12 @@ bool QAndroidPlatformFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::Win if (options()->acceptMode() == QFileDialogOptions::AcceptSave) { m_intent = getFileDialogIntent("ACTION_CREATE_DOCUMENT"); + const QList<QUrl> selectedFiles = options()->initiallySelectedFiles(); + if (selectedFiles.size() > 0) { + // TODO: The initial folder to show at the start should be handled by EXTRA_INITIAL_URI + // Take only the file name. + setInitialFileName(selectedFiles.first().fileName()); + } } else if (options()->acceptMode() == QFileDialogOptions::AcceptOpen) { switch (options()->fileMode()) { case QFileDialogOptions::FileMode::DirectoryOnly: @@ -232,8 +239,6 @@ bool QAndroidPlatformFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::Win setMimeTypes(); } - setIntentTitle(options()->windowTitle()); - QtAndroidPrivate::registerActivityResultListener(this); m_activity.callMethod<void>("startActivityForResult", "(Landroid/content/Intent;I)V", m_intent.object(), REQUEST_CODE); diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h index 2d3cb49a96..f573e72fef 100644 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h @@ -76,7 +76,7 @@ public: private: QJniObject getFileDialogIntent(const QString &intentType); void takePersistableUriPermission(const QJniObject &uri); - void setIntentTitle(const QString &title); + void setInitialFileName(const QString &title); void setOpenableCategory(); void setAllowMultipleSelections(bool allowMultiple); void setMimeTypes(); |