From 1c9931b1c8b0b715a5352bd5705466e56d206087 Mon Sep 17 00:00:00 2001 From: elena Date: Tue, 13 Dec 2022 15:22:00 +0000 Subject: [PATCH] Display export groups selection as dropdown --- .../ImportExportPreferencesFragment.java | 34 ++++++++--------- app/src/main/res/layout/dialog_export.xml | 38 +++++++------------ app/src/main/res/values/strings.xml | 6 ++- 3 files changed, 36 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/ImportExportPreferencesFragment.java b/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/ImportExportPreferencesFragment.java index f22a6f90..8bdc18bc 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/ImportExportPreferencesFragment.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/fragments/preferences/ImportExportPreferencesFragment.java @@ -9,7 +9,6 @@ import android.view.View; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; -import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -30,6 +29,7 @@ import com.beemdevelopment.aegis.otp.OtpInfo; import com.beemdevelopment.aegis.otp.TotpInfo; import com.beemdevelopment.aegis.ui.ImportEntriesActivity; import com.beemdevelopment.aegis.ui.TransferEntriesActivity; +import com.beemdevelopment.aegis.ui.components.DropdownCheckBoxes; import com.beemdevelopment.aegis.ui.dialogs.Dialogs; import com.beemdevelopment.aegis.ui.tasks.ExportTask; import com.beemdevelopment.aegis.ui.tasks.ImportFileTask; @@ -41,6 +41,7 @@ import com.beemdevelopment.aegis.vault.VaultRepository; import com.beemdevelopment.aegis.vault.VaultRepositoryException; import com.beemdevelopment.aegis.vault.slots.PasswordSlot; import com.beemdevelopment.aegis.vault.slots.SlotException; +import com.google.android.material.textfield.TextInputLayout; import java.io.File; import java.io.FileOutputStream; @@ -162,8 +163,8 @@ public class ImportExportPreferencesFragment extends PreferencesFragment { CheckBox checkBoxEncrypt = view.findViewById(R.id.checkbox_export_encrypt); CheckBox checkBoxAccept = view.findViewById(R.id.checkbox_accept); CheckBox checkBoxExportAllGroups = view.findViewById(R.id.export_selected_groups); - LinearLayout groupsSelection = view.findViewById(R.id.select_groups); - TextView groupsSelectionDescriptor = view.findViewById(R.id.select_groups_hint); + TextInputLayout groupsSelectionLayout = view.findViewById(R.id.group_selection_layout); + DropdownCheckBoxes groupsSelection = view.findViewById(R.id.group_selection_dropdown); TextView passwordInfoText = view.findViewById(R.id.text_separate_password); passwordInfoText.setVisibility(checkBoxEncrypt.isChecked() && isBackupPasswordSet ? View.VISIBLE : View.GONE); AutoCompleteTextView dropdown = view.findViewById(R.id.dropdown_export_format); @@ -179,12 +180,13 @@ public class ImportExportPreferencesFragment extends PreferencesFragment { TreeSet groups = _vaultManager.getVault().getGroups(); if (groups.size() > 0) { checkBoxExportAllGroups.setVisibility(View.VISIBLE); - for (String group: groups) { - CheckBox box = new CheckBox(requireContext()); - box.setText(group); - box.setChecked(false); - groupsSelection.addView(box); - } + + ArrayList groupsArray = new ArrayList<>(); + groupsArray.add(getString(R.string.no_group)); + groupsArray.addAll(groups); + + groupsSelection.setCheckedItemsCountTextRes(R.plurals.export_groups_selected_count); + groupsSelection.addItems(groupsArray, false); } AlertDialog dialog = new AlertDialog.Builder(requireContext()) @@ -215,8 +217,7 @@ public class ImportExportPreferencesFragment extends PreferencesFragment { checkBoxExportAllGroups.setOnCheckedChangeListener((button, isChecked) -> { int visibility = isChecked ? View.GONE : View.VISIBLE; - groupsSelection.setVisibility(visibility); - groupsSelectionDescriptor.setVisibility(visibility); + groupsSelectionLayout.setVisibility(visibility); }); btnPos.setOnClickListener(v -> { @@ -303,14 +304,13 @@ public class ImportExportPreferencesFragment extends PreferencesFragment { Dialogs.showSecureDialog(dialog); } - private Vault.EntryFilter getVaultEntryFilter(LinearLayout view) { + private Vault.EntryFilter getVaultEntryFilter(DropdownCheckBoxes dropdownCheckBoxes) { Set groups = new HashSet<>(); - for (int i=0; i - @@ -76,31 +76,21 @@ android:checked="true" android:visibility="gone" /> - + android:layout_marginStart="25dp" + android:layout_marginEnd="25dp" + android:layout_marginTop="15dp" + android:hint="@string/export_choose_groups" + android:visibility="gone" + style="?attr/dropdownStyle"> - - - - - - + app:allow_filtering="false" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3df733a1..31b99132 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -108,7 +108,11 @@ Web page (.HTML) Export format Export all groups - Select which groups to export: + Select which groups to export + + %d group selected + %d groups selected + No groups selected to export Aegis Authenticator Export