Allow changing sticker directory

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/SettingsActivity.java | 15 +++++
src/main/res/xml/preferences.xml                              |  5 +
2 files changed, 20 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/ui/SettingsActivity.java 🔗

@@ -1,6 +1,7 @@
 package eu.siacs.conversations.ui;
 
 import android.app.FragmentManager;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -9,6 +10,7 @@ import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.storage.StorageManager;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
@@ -91,6 +93,12 @@ public class SettingsActivity extends XmppActivity implements OnSharedPreference
         configureActionBar(getSupportActionBar());
     }
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this);
+        p.edit().putString("sticker_directory", data.getData().toString()).commit();
+    }
+
     @Override
     void onBackendConnected() {
         boolean diallerIntegrationPossible = false;
@@ -363,6 +371,13 @@ public class SettingsActivity extends XmppActivity implements OnSharedPreference
                 privacyCategory.removePreference(omemoPreference);
             }
         }
+
+        final Preference stickerDir = mSettingsFragment.findPreference("sticker_directory");
+        stickerDir.setOnPreferenceClickListener((p) -> {
+            Intent intent = ((StorageManager) getSystemService(Context.STORAGE_SERVICE)).getPrimaryStorageVolume().createOpenDocumentTreeIntent();
+            startActivityForResult(Intent.createChooser(intent, "Choose sticker location"), 0);
+            return true;
+        });
     }
 
     private void changeOmemoSettingSummary() {

src/main/res/xml/preferences.xml 🔗

@@ -326,6 +326,11 @@
                     android:summary="@string/pref_scroll_to_bottom_summary"
                     android:title="@string/pref_scroll_to_bottom" />
             </PreferenceCategory>
+            <PreferenceCategory android:key="expert_media" android:title="Media">
+                <Preference
+                    android:title="Change Stickers Location"
+                    android:key="sticker_directory" />
+            </PreferenceCategory>
             <PreferenceCategory android:title="@string/pref_presence_settings">
                 <CheckBoxPreference
                     android:defaultValue="@bool/manually_change_presence"