From 0f6b0dddbe52d60af935148ed2b18650fe62de7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Sch=C3=A4ttgen?= Date: Sun, 16 Aug 2020 03:33:53 +0200 Subject: [PATCH] Add checkbox dialog to wipe vault before import Only show dialog when vault contains entries Add improvements from review --- .../com/beemdevelopment/aegis/ui/Dialogs.java | 35 +++++++++++++++++++ .../aegis/ui/PreferencesFragment.java | 7 ++++ .../aegis/ui/SelectEntriesActivity.java | 24 +++++++++++-- .../beemdevelopment/aegis/util/UUIDMap.java | 7 ++++ .../aegis/vault/VaultManager.java | 4 +++ app/src/main/res/layout/dialog_checkbox.xml | 15 ++++++++ app/src/main/res/values/strings.xml | 3 ++ 7 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/layout/dialog_checkbox.xml diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java index 2a12690b..121fd1a8 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/Dialogs.java @@ -231,6 +231,37 @@ public class Dialogs { showTextInputDialog(context, setPasswordMessageId, messageId, R.string.password, listener, dismissListener, true); } + public static void showCheckboxDialog(Context context, @StringRes int titleId, @StringRes int messageId, @StringRes int checkboxMessageId, CheckboxInputListener listener) { + View view = LayoutInflater.from(context).inflate(R.layout.dialog_checkbox, null); + CheckBox checkBox = view.findViewById(R.id.checkbox); + checkBox.setText(checkboxMessageId); + + AlertDialog.Builder builder = new AlertDialog.Builder(context) + .setTitle(titleId) + .setView(view) + .setNegativeButton(R.string.no, (dialog1, which) -> + listener.onCheckboxInputResult(false)) + .setPositiveButton(R.string.yes, (dialog1, which) -> + listener.onCheckboxInputResult(checkBox.isChecked())); + + if (messageId != 0) { + builder.setMessage(messageId); + } + + AlertDialog dialog = builder.create(); + + final AtomicReference