From 51eade900c0a2cd30df2f36e5ad2ecfe0fef096f Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Wed, 19 May 2021 12:56:35 +0200 Subject: [PATCH] Fix a number of issues related to updating the group chip after changes --- .../aegis/ui/MainActivity.java | 1 + .../aegis/ui/views/EntryAdapter.java | 14 ++++------- .../aegis/ui/views/EntryListView.java | 24 +++++++++++-------- 3 files changed, 19 insertions(+), 20 deletions(-) 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 d3b0ec1b..92a2dd38 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -793,6 +793,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene if (entry.getGroup() != null) { if (!_vault.getGroups().contains(entry.getGroup())) { _entryListView.setGroups(_vault.getGroups()); + break; } } } 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 cc1b267d..07b1cca0 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 @@ -6,9 +6,9 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.beemdevelopment.aegis.R; import com.beemdevelopment.aegis.SortCategory; import com.beemdevelopment.aegis.ViewMode; import com.beemdevelopment.aegis.helpers.ItemTouchHelperAdapter; @@ -232,20 +232,14 @@ public class EntryAdapter extends RecyclerView.Adapter implements I } } - public void setGroupFilter(List groups, boolean apply) { - if (groups == null) { - groups = new ArrayList<>(); - } - + public void setGroupFilter(@NonNull List groups) { if (_groupFilter.equals(groups)) { return; } _groupFilter = groups; - if (apply) { - updateShownEntries(); - checkPeriodUniformity(); - } + updateShownEntries(); + checkPeriodUniformity(); } public void setSortCategory(SortCategory category, boolean apply) { 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 673fdcc3..36b98fc4 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 @@ -144,12 +144,14 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { super.onDestroyView(); } - public void setGroupFilter(List groups, boolean apply) { + public void setGroupFilter(List groups, boolean animate) { _groupFilter = groups; - _adapter.setGroupFilter(groups, apply); + _adapter.setGroupFilter(groups); _touchCallback.setIsLongPressDragEnabled(_adapter.isDragAndDropAllowed()); + updateEmptyState(); + updateGroupChip(); - if (apply) { + if (animate) { runEntriesAnimation(); } } @@ -375,7 +377,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { Button clearButton = view.findViewById(R.id.btnClear); clearButton.setOnClickListener(v -> { chipGroup.clearCheck(); - setGroupFilter(null, true); + setGroupFilter(Collections.emptyList(), true); dialog.dismiss(); }); @@ -396,12 +398,6 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { .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); @@ -411,6 +407,14 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { }); } + private void updateGroupChip() { + if (_groupFilter.isEmpty()) { + _groupChip.setText(R.string.groups); + } else { + _groupChip.setText(String.format("%s (%d)", getString(R.string.groups), _groupFilter.size())); + } + } + private void setShowProgress(boolean showProgress) { _showProgress = showProgress; updateDividerDecoration();