diff --git a/app/src/main/java/com/beemdevelopment/aegis/BackupsVersioningStrategy.java b/app/src/main/java/com/beemdevelopment/aegis/BackupsVersioningStrategy.java new file mode 100644 index 00000000..0e06954f --- /dev/null +++ b/app/src/main/java/com/beemdevelopment/aegis/BackupsVersioningStrategy.java @@ -0,0 +1,7 @@ +package com.beemdevelopment.aegis; + +public enum BackupsVersioningStrategy { + UNDEFINED, + MULTIPLE_BACKUPS, + SINGLE_BACKUP +} \ No newline at end of file diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index 5b4041ab..95f3ed4c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -6,7 +6,9 @@ import android.content.res.Resources; import android.net.Uri; import android.os.Build; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.provider.DocumentsContractCompat; import androidx.preference.PreferenceManager; import com.beemdevelopment.aegis.util.JsonUtils; @@ -597,6 +599,19 @@ public class Preferences { } } + @NonNull + public BackupsVersioningStrategy getBackupVersioningStrategy() { + Uri uri = getBackupsLocation(); + if (uri == null) { + return BackupsVersioningStrategy.UNDEFINED; + } + if (DocumentsContractCompat.isTreeUri(uri)) { + return BackupsVersioningStrategy.MULTIPLE_BACKUPS; + } else { + return BackupsVersioningStrategy.SINGLE_BACKUP; + } + } + public static class BackupResult { private final Date _time; private boolean _isBuiltIn; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/Dialogs.java b/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/Dialogs.java index 2a76f083..692ba3a5 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/Dialogs.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/dialogs/Dialogs.java @@ -19,6 +19,8 @@ import android.widget.EditText; import android.widget.ListView; import android.widget.NumberPicker; import android.widget.ProgressBar; +import android.widget.RadioButton; +import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; @@ -27,6 +29,7 @@ import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; +import com.beemdevelopment.aegis.BackupsVersioningStrategy; import com.beemdevelopment.aegis.Preferences; import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.helpers.EditTextHelper; @@ -577,6 +580,54 @@ public class Dialogs { showSecureDialog(dialog); } + public static void showBackupsVersioningStrategy(Context context, BackupsVersioningStrategy currentStrategy, BackupsVersioningStrategyListener listener) { + View view = LayoutInflater.from(context).inflate(R.layout.dialog_backups_versioning_strategy, null); + RadioGroup radioGroup = view.findViewById(R.id.radio_group); + RadioButton keepXVersionsButton = view.findViewById(R.id.keep_x_versions_button); + RadioButton singleBackupButton = view.findViewById(R.id.single_backup_button); + TextView warningText = view.findViewById(R.id.warning_text); + CheckBox riskAccept = view.findViewById(R.id.risk_accept); + final AtomicReference