diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java index c3b4f1cf..26744914 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java @@ -116,8 +116,6 @@ public class EditEntryActivity extends AegisActivity { setTitle(R.string.add_new_entry); } - String selectedGroup = intent.getStringExtra("selectedGroup"); - // set up fields _iconView = findViewById(R.id.profile_drawable); _kropView = findViewById(R.id.krop_view); @@ -211,7 +209,6 @@ public class EditEntryActivity extends AegisActivity { // automatically open advanced settings since 'Secret' is required. if (_isNew) { openAdvancedSettings(); - setGroup(selectedGroup); } _dropdownGroup.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -221,13 +218,12 @@ public class EditEntryActivity extends AegisActivity { public void onItemClick(AdapterView parent, View view, int position, long id) { if (position == _dropdownGroupList.size() - 1) { Dialogs.showTextInputDialog(EditEntryActivity.this, R.string.set_group, R.string.group_name_hint, text -> { - String str = new String(text); - if (str.isEmpty()) { - return; + String groupName = new String(text); + if (!groupName.isEmpty()) { + _groups.add(groupName); + updateGroupDropdownList(); + _dropdownGroup.setText(groupName, false); } - _groups.add(str); - updateGroupDropdownList(); - _dropdownGroup.setText(_dropdownGroupList.get(position), false); }); _dropdownGroup.setText(_dropdownGroupList.get(prevPosition), false); } else { diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index bc74a361..4ae84227 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -249,7 +249,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene } else { intent.putExtra("entryUUID", entry.getUUID()); } - intent.putExtra("selectedGroup", (ArrayList) _selectedGroups); startActivityForResult(intent, requestCode); } @@ -326,11 +325,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _menu.findItem(category.getMenuItem()).setChecked(true); } - private void setGroupFilter(List group) { - _selectedGroups = group; - _entryListView.setGroupFilter(group, true); - } - private void onDoIntroResult() { _vault = _app.getVaultManager(); loadEntries(); @@ -460,10 +454,8 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene if (_app.isVaultLocked()) { startAuthActivity(false); } else if (_loaded) { - // update the list of groups in the filter menu - if (_menu != null) { - _entryListView.setGroups(_vault.getGroups()); - } + // update the list of groups in the entry list view so that the chip gets updated + _entryListView.setGroups(_vault.getGroups()); // refresh all codes to prevent showing old ones _entryListView.refresh(false); @@ -485,8 +477,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _entryListView.setSearchFilter(null); collapseSearchView(); - setTitle("Aegis"); - setGroupFilter(_selectedGroups); + setTitle(R.string.app_name); return; } @@ -566,16 +557,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _app.lock(true); return true; default: - /*if (item.getGroupId() == R.id.action_filter_group) { - item.setChecked(true); - - String group = null; - if (item.getItemId() != R.id.menu_filter_all) { - group = item.getTitle().toString(); - } - setGroupFilter(group); - }*/ - if (item.getGroupId() == R.id.action_sort_category) { item.setChecked(true); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java index 52f2f386..60fcd2f1 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java @@ -237,7 +237,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I } public void setGroupFilter(List groups, boolean apply) { - if(groups == null) { + if (groups == null) { groups = new ArrayList<>(); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index 08832d40..63798383 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -86,6 +86,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { View view = inflater.inflate(R.layout.fragment_entry_list_view, container, false); _progressBar = view.findViewById(R.id.progressBar); _groupChip = view.findViewById(R.id.chip_group); + initializeGroupChip(); // set up the recycler view _recyclerView = view.findViewById(R.id.rvKeyProfiles); @@ -141,8 +142,9 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { super.onDestroyView(); } - public void setGroupFilter(List group, boolean apply) { - _adapter.setGroupFilter(group, apply); + public void setGroupFilter(List groups, boolean apply) { + _groupFilter = groups; + _adapter.setGroupFilter(groups, apply); _touchCallback.setIsLongPressDragEnabled(_adapter.isDragAndDropAllowed()); if (apply) { @@ -285,6 +287,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { public void addEntry(VaultEntry entry) { addEntry(entry, false); + } @SuppressLint("ClickableViewAccessibility") @@ -352,44 +355,11 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { } private void initializeGroupChip() { - if (_groups.isEmpty()) { - _groupChip.setVisibility(View.GONE); - return; - } - View view = getLayoutInflater().inflate(R.layout.dialog_select_groups, null); BottomSheetDialog dialog = new BottomSheetDialog(getContext()); dialog.setContentView(view); - ColorStateList colorStateList = ContextCompat.getColorStateList(getContext(), R.color.bg_chip_text_color); - ChipGroup chipGroup = view.findViewById(R.id.groupChipGroup); - String groupChipText = _groupChip.getText().toString(); - chipGroup.removeAllViews(); - for (String group : _groups) { - Chip chip = new Chip(getContext()); - chip.setText(group); - chip.setCheckable(true); - chip.setCheckedIconVisible(false); - chip.setChipBackgroundColorResource(R.color.bg_chip_color); - chip.setTextColor(colorStateList); - chip.setOnCheckedChangeListener((group1, checkedId) -> { - List groupFilter = chipGroup.getCheckedChipIds().stream() - .map(i -> ((Chip) view.findViewById(i)).getText().toString()) - .collect(Collectors.toList()); - _groupFilter = groupFilter; - setGroupFilter(groupFilter, true); - - if (_groupFilter.isEmpty()) { - _groupChip.setText(groupChipText); - } else { - _groupChip.setText(String.format("%s (%d)", getString(R.string.groups), _groupFilter.size())); - } - }); - - chipGroup.addView(chip); - } - Button clearButton = view.findViewById(R.id.btnClear); clearButton.setOnClickListener(v -> { chipGroup.clearCheck(); @@ -398,6 +368,33 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { }); _groupChip.setOnClickListener(v -> { + ColorStateList colorStateList = ContextCompat.getColorStateList(getContext(), R.color.bg_chip_text_color); + chipGroup.removeAllViews(); + + for (String group : _groups) { + Chip chip = new Chip(getContext()); + chip.setText(group); + chip.setCheckable(true); + chip.setChecked(_groupFilter != null && _groupFilter.contains(group)); + chip.setCheckedIconVisible(false); + chip.setChipBackgroundColorResource(R.color.bg_chip_color); + chip.setTextColor(colorStateList); + chip.setOnCheckedChangeListener((group1, checkedId) -> { + List groupFilter = chipGroup.getCheckedChipIds().stream() + .map(i -> ((Chip) view.findViewById(i)).getText().toString()) + .collect(Collectors.toList()); + setGroupFilter(groupFilter, true); + + if (groupFilter.isEmpty()) { + _groupChip.setText(R.string.groups); + } else { + _groupChip.setText(String.format("%s (%d)", getString(R.string.groups), groupFilter.size())); + } + }); + + chipGroup.addView(chip); + } + Dialogs.showSecureDialog(dialog); }); } @@ -409,7 +406,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { public void setGroups(TreeSet groups) { _groups = groups; - initializeGroupChip(); + _groupChip.setVisibility(_groups.isEmpty() ? View.GONE : View.VISIBLE); } private void updateDividerDecoration() { diff --git a/app/src/main/res/layout/dialog_select_groups.xml b/app/src/main/res/layout/dialog_select_groups.xml index 7c9eee56..ea6c3cf1 100644 --- a/app/src/main/res/layout/dialog_select_groups.xml +++ b/app/src/main/res/layout/dialog_select_groups.xml @@ -22,7 +22,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="?attr/primaryText" - android:text="Groups" /> + android:text="@string/groups" /> - - - - - - - - تصفية تمت إزالتها من المجموعة قفل - الكل الاسم بلا مجموعة المصدِّر (أ إلى ي) diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index c6b31691..25970dab 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -199,7 +199,6 @@ Filtr Bez skupiny Uzamknout - Vše Název Žádná skupina Poskytovatel (A → Z) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index c25942d7..5d5b8e73 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -195,7 +195,6 @@ Filter Nicht gruppiert Sperren - Alle Name Keine Gruppe Herausgeber (A bis Z) diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 7fc37ec0..3429d41f 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -195,7 +195,6 @@ Φίλτρο Χωρίς ομάδα Κλείδωμα - Όλα Όνομα Χωρίς ομάδα Εκδότης (Α προς Ζ) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 0f9c956d..01565e51 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -176,7 +176,6 @@ Filtrar Sin agrupar Bloquear - Todo Cuenta Sin grupo Emisor (A a Z) diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app/src/main/res/values-eu-rES/strings.xml index efd88986..34097650 100644 --- a/app/src/main/res/values-eu-rES/strings.xml +++ b/app/src/main/res/values-eu-rES/strings.xml @@ -191,7 +191,6 @@ Iragazkia Taldekatu gabekoak Blokeatu - Denak Izena Talderik ez Igorlea (A-tik Z-ra) diff --git a/app/src/main/res/values-fa-rIR/strings.xml b/app/src/main/res/values-fa-rIR/strings.xml index b6bd0874..95769dff 100644 --- a/app/src/main/res/values-fa-rIR/strings.xml +++ b/app/src/main/res/values-fa-rIR/strings.xml @@ -191,7 +191,6 @@ فیلتر گروه‌بندی نشده قفل - همه نام بدون گروه صادر کننده (A - Z) diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index eef05532..d4099233 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -191,7 +191,6 @@ Suodata Ryhmittelemättömät Lukitse - Kaikki Nimi Ei ryhmää Myöntäjä (A-Ö) diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index be0f7eae..f93bd43f 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -195,7 +195,6 @@ Filtre Non groupés Verrouiller - Tous Nom Aucun groupe Émetteur (de A à Z) diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 0129dc5e..fd7485cb 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -186,7 +186,6 @@ फ़िल्टर असमूहीकृत लॉक करें - सभी नाम कोई समूह नहीं जारीकर्ता (A से Z) diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 87caf8dd..f5b2e2ac 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -155,7 +155,6 @@ Szűrő Csoport nélküli Zárolás - Összes Név Nincs csoport Kibocsátó (A-tól Z-ig) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 8bbf945a..b3eb0769 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -190,7 +190,6 @@ Saring Tidak dikelompokkan Kunci - Semua Nama Tidak ada kelompok Penerbit (A ke Z) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index a7c3152d..db7e4193 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -195,7 +195,6 @@ Filtra Non raggruppati Blocca - Tutti Nome Nessun gruppo Emittente (A-Z) diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 91c3c24f..8e88fc99 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -191,7 +191,6 @@ フィルター グループ解除 ロックする - すべて 名前 グループなし 発行者 (A to Z) diff --git a/app/src/main/res/values-kn-rIN/strings.xml b/app/src/main/res/values-kn-rIN/strings.xml index ef573add..d2b6afec 100644 --- a/app/src/main/res/values-kn-rIN/strings.xml +++ b/app/src/main/res/values-kn-rIN/strings.xml @@ -102,7 +102,6 @@ ವಿವರಗಳು ಮಿತಿಗೊಳಿಸು ಬೀಗ ಹಾಕು - ಎಲ್ಲಾ ಹೆಸರು ಗುಂಪಿಲ್ಲ ನೀಡುವವರು (ವರ್ಣಮಾಲೆಯಂತೆ) diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 33b90863..318fe066 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -195,7 +195,6 @@ Filter Geen groep Vergrendel - Alles Naam Geen groep Uitgever (A t/m Z) diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 892df695..3b0ef3b6 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -201,7 +201,6 @@ Filtruj Bez grupy Zablokuj - Wszystkie Nazwa Brak grupy Wydawca (od A do Z) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ee4c89f6..4aa913f2 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -195,7 +195,6 @@ Filtrar Não agrupar Bloquear - Todos Conta Sem grupo Nome (A to Z) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index ee706ab1..dbad1553 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -195,7 +195,6 @@ Filtrar Não agrupado Bloquear - Todos Nome Sem grupo Emissor (A a Z) diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 974c173e..b81b7c6f 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -196,7 +196,6 @@ Filtru Negrupat Blocare - Toate Nume Niciun grup Emitent (A - Z) diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 119931f2..3d73f89d 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -201,7 +201,6 @@ Фильтр Без группировки Заблокировать - Все Имя Нет группы Эмитент (А→Я) diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index affd4496..f8590d0b 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -85,7 +85,6 @@ Filtrovať Nezoskupené Uzamknúť - Všetko Meno Žiadna skupina Účet (A až Z) diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index e0988805..432a59f9 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -162,7 +162,6 @@ Filtrele Gruplandırılmamış Kilitle - Hepsi Ad Grupsuz Sağlayıcı (A\'dan Z\'ye) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9bcfb3fe..ed97fe0b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -192,7 +192,6 @@ 筛选 未分组 锁定 - 所有 名称 无群组 服务商(A 到 Z) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e694789b..1274ee35 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -183,7 +183,6 @@ 篩選 未分組 鎖定 - 所有 名稱 無群組 服務商(A 到 Z) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 919a74c9..913cd64c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -224,7 +224,6 @@ Filter Ungrouped Lock - All Name No group Issuer (A to Z)