aboutsummaryrefslogtreecommitdiff
path: root/ime/app
diff options
context:
space:
mode:
authorlubenard <lubenard@student.42.fr>2020-06-11 00:22:06 +0000
committerlubenard <lubenard@student.42.fr>2020-06-11 00:22:06 +0000
commit3aa4e298354ef6933adf92be9e3807c006b595e1 (patch)
treef9e0b6f0e4f713e427b9a58b30a63c0035155d98 /ime/app
parent3f7759cc8558fa29f4ffc3f463c8c7dfcef01d4c (diff)
downloadAnySoftKeyboard-3aa4e298354ef6933adf92be9e3807c006b595e1.tar.gz
AnySoftKeyboard-3aa4e298354ef6933adf92be9e3807c006b595e1.tar.bz2
Added basic version of path choosing in backup/restore settings
Diffstat (limited to 'ime/app')
-rw-r--r--ime/app/src/main/java/com/anysoftkeyboard/prefs/GlobalPrefsBackup.java7
-rw-r--r--ime/app/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java34
-rw-r--r--ime/app/src/main/res/values/strings.xml1
3 files changed, 40 insertions, 2 deletions
diff --git a/ime/app/src/main/java/com/anysoftkeyboard/prefs/GlobalPrefsBackup.java b/ime/app/src/main/java/com/anysoftkeyboard/prefs/GlobalPrefsBackup.java
index fde93b79f..ff88ce9c3 100644
--- a/ime/app/src/main/java/com/anysoftkeyboard/prefs/GlobalPrefsBackup.java
+++ b/ime/app/src/main/java/com/anysoftkeyboard/prefs/GlobalPrefsBackup.java
@@ -1,6 +1,7 @@
package com.anysoftkeyboard.prefs;
import android.content.Context;
+import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.annotation.VisibleForTesting;
@@ -48,6 +49,12 @@ public class GlobalPrefsBackup {
R.string.abbreviation_dict_prefs_provider));
}
+ public static File returnCustomBackupPath(String basepath) {
+ final File externalFolder = Environment.getExternalStorageDirectory();
+ return (new File(
+ new File(externalFolder, basepath), GlobalPrefsBackup.GLOBAL_BACKUP_FILENAME));
+ }
+
private static Boolean backupProvider(PrefsProvider provider, PrefsRoot prefsRoot) {
final PrefsRoot providerRoot = provider.getPrefsRoot();
prefsRoot
diff --git a/ime/app/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java b/ime/app/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java
index 265d4d9a5..f82f7d3a9 100644
--- a/ime/app/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java
+++ b/ime/app/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java
@@ -1,8 +1,10 @@
package com.anysoftkeyboard.ui.settings;
import android.Manifest;
+import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
@@ -47,6 +49,7 @@ import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.disposables.Disposables;
import io.reactivex.functions.Function;
+import java.io.File;
import java.lang.ref.WeakReference;
import java.util.List;
import net.evendanan.chauffeur.lib.FragmentChauffeurActivity;
@@ -63,6 +66,7 @@ public class MainFragment extends Fragment {
static final int DIALOG_SAVE_FAILED = 11;
static final int DIALOG_LOAD_SUCCESS = 20;
static final int DIALOG_LOAD_FAILED = 21;
+ private File pathFileBackup;
private final boolean mTestingBuild;
private AnimationDrawable mNotConfiguredAnimation = null;
@@ -138,6 +142,8 @@ public class MainFragment extends Fragment {
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_fragment_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
+
+ pathFileBackup = GlobalPrefsBackup.getBackupFile();
}
@Override
@@ -350,6 +356,7 @@ public class MainFragment extends Fragment {
private void onBackupRestoreDialogRequired(AlertDialog.Builder builder, int optionId) {
final int actionString;
+ final int choosePathString;
final Function<
Pair<List<GlobalPrefsBackup.ProviderDetails>, Boolean[]>,
ObservableSource<GlobalPrefsBackup.ProviderDetails>>
@@ -361,12 +368,14 @@ public class MainFragment extends Fragment {
action = GlobalPrefsBackup::backup;
actionString = R.string.word_editor_action_backup_words;
builder.setTitle(R.string.pick_prefs_providers_to_backup);
+ choosePathString = R.string.word_editor_action_choose_path;
successDialog = DIALOG_SAVE_SUCCESS;
failedDialog = DIALOG_SAVE_FAILED;
break;
case R.id.restore_prefs:
action = GlobalPrefsBackup::restore;
actionString = R.string.word_editor_action_restore_words;
+ choosePathString = R.string.word_editor_action_choose_path;
builder.setTitle(R.string.pick_prefs_providers_to_restore);
successDialog = DIALOG_LOAD_SUCCESS;
failedDialog = DIALOG_LOAD_FAILED;
@@ -426,11 +435,32 @@ public class MainFragment extends Fragment {
() ->
mDialogController.showDialog(
successDialog,
- GlobalPrefsBackup.getBackupFile()
- .getAbsolutePath())));
+ pathFileBackup.getAbsolutePath())));
+ });
+ builder.setNeutralButton(
+ choosePathString,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Intent dataToFileChooser = new Intent(Intent.ACTION_PICK);
+ dataToFileChooser.setType("text/xml/*");
+ startActivityForResult(dataToFileChooser, 1);
+ }
});
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (requestCode == 1
+ && resultCode == Activity.RESULT_OK
+ && data != null
+ && data.getDataString() != null) {
+ pathFileBackup = GlobalPrefsBackup.returnCustomBackupPath(data.getDataString());
+ }
+ }
+
private static class StoragePermissionRequest
extends PermissionsRequest.PermissionsRequestBase {
diff --git a/ime/app/src/main/res/values/strings.xml b/ime/app/src/main/res/values/strings.xml
index 4729e46f7..eb60a4c40 100644
--- a/ime/app/src/main/res/values/strings.xml
+++ b/ime/app/src/main/res/values/strings.xml
@@ -893,6 +893,7 @@
<string name="prefs_providers_backed_up_to">You data was successfully backed-up to %s</string>
<string name="prefs_providers_failed_restore_due_to">Failed to restore your data due to %s</string>
<string name="prefs_providers_restored_to">You data was successfully restored from %s</string>
+ <string name="word_editor_action_choose_path">Choose custom path</string>
<string name="allow_layouts_to_provide_generic_rows">Keyboards can provide generic rows</string>
<string name="allow_layouts_to_provide_generic_rows_off_summary">Always use selected generic rows.</string>