Warning, /graphics/krita/3rdparty/ext_qt/0027-Android-use-EXTRA_INITIAL_URI-as-the-defaultDir.patch is written in an unsupported language. File is not indexed.

0001 From 0379cb8abaed5fafb68b07fa721800d84dd6551d Mon Sep 17 00:00:00 2001
0002 From: Sharaf Zaman <sharafzaz121@gmail.com>
0003 Date: Mon, 9 Nov 2020 08:40:57 +0000
0004 Subject: [PATCH 27/46] Android: use EXTRA_INITIAL_URI as the defaultDir
0005 
0006 on API Level >= 26, Storage Access Framework attempts to use the URI to
0007 save a new file at its parent location (i.e the parent directory).
0008 ---
0009  .../qandroidplatformfiledialoghelper.cpp      | 20 +++++++++++++++++++
0010  .../qandroidplatformfiledialoghelper.h        |  4 +++-
0011  2 files changed, 23 insertions(+), 1 deletion(-)
0012 
0013 diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp
0014 index 05e4ccbbee..00b5b0887c 100644
0015 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp
0016 +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp
0017 @@ -61,6 +61,11 @@ QAndroidPlatformFileDialogHelper::QAndroidPlatformFileDialogHelper()
0018  {
0019  }
0020  
0021 +void QAndroidPlatformFileDialogHelper::setDirectory(const QUrl &directory)
0022 +{
0023 +    m_directory = directory;
0024 +}
0025 +
0026  bool QAndroidPlatformFileDialogHelper::handleActivityResult(jint requestCode, jint resultCode, jobject data)
0027  {
0028      if (requestCode != REQUEST_CODE)
0029 @@ -125,6 +130,20 @@ void QAndroidPlatformFileDialogHelper::setIntentTitle(const QString &title)
0030                                extraTitle.object(), QJNIObjectPrivate::fromString(title).object());
0031  }
0032  
0033 +void QAndroidPlatformFileDialogHelper::setInitialUri()
0034 +{
0035 +    if (QtAndroidPrivate::androidSdkVersion() >= 26) {
0036 +        const QJNIObjectPrivate extraInitialUri = QJNIObjectPrivate::getStaticObjectField(
0037 +            "android/provider/DocumentsContract",
0038 +            "EXTRA_INITIAL_URI",
0039 +            "Ljava/lang/String;");
0040 +        m_intent.callObjectMethod("putExtra",
0041 +                                "(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
0042 +                                extraInitialUri.object(),
0043 +                                QJNIObjectPrivate::fromString(m_directory.toString()).object());
0044 +    }
0045 +}
0046 +
0047  void QAndroidPlatformFileDialogHelper::setOpenableCategory()
0048  {
0049      const QJNIObjectPrivate CATEGORY_OPENABLE = QJNIObjectPrivate::getStaticObjectField(
0050 @@ -229,6 +248,7 @@ bool QAndroidPlatformFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::Win
0051      }
0052  
0053      setIntentTitle(options()->windowTitle());
0054 +    setInitialUri();
0055  
0056      QtAndroidPrivate::registerActivityResultListener(this);
0057      m_activity.callMethod<void>("startActivityForResult", "(Landroid/content/Intent;I)V",
0058 diff --git a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h
0059 index 5a7a28a8a0..9a2e037e6f 100644
0060 --- a/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h
0061 +++ b/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h
0062 @@ -68,7 +68,7 @@ public:
0063      QList<QUrl> selectedFiles() const override { return m_selectedFile; };
0064      void selectFile(const QUrl &file) override { Q_UNUSED(file) };
0065      QUrl directory() const override { return QUrl(); };
0066 -    void setDirectory(const QUrl &directory) override { Q_UNUSED(directory) };
0067 +    void setDirectory(const QUrl &directory) override;
0068      bool defaultNameFilterDisables() const override { return false; };
0069      bool handleActivityResult(jint requestCode, jint resultCode, jobject data) override;
0070  
0071 @@ -76,6 +76,7 @@ private:
0072      QJNIObjectPrivate getFileDialogIntent(const QString &intentType);
0073      void takePersistableUriPermission(const QJNIObjectPrivate &uri);
0074      void setIntentTitle(const QString &title);
0075 +    void setInitialUri();
0076      void setOpenableCategory();
0077      void setAllowMultipleSelections(bool allowMultiple);
0078      void setMimeTypes();
0079 @@ -84,6 +85,7 @@ private:
0080      QList<QUrl> m_selectedFile;
0081      QJNIObjectPrivate m_intent;
0082      const QJNIObjectPrivate m_activity;
0083 +    QUrl m_directory;
0084  };
0085  
0086  }
0087 -- 
0088 2.33.0
0089