From 0523416e7845eb7c22ae99185c810a64230b1bf2 Mon Sep 17 00:00:00 2001 From: Chengxu Yang Date: Sun, 12 Oct 2025 20:59:05 +1100 Subject: [PATCH] fix the bug of map reset --- ...NearbyFilterSearchRecyclerViewAdapter.java | 3 +++ .../nearby/fragments/NearbyParentFragment.kt | 25 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyFilterSearchRecyclerViewAdapter.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyFilterSearchRecyclerViewAdapter.java index b5f760c9f..53e9970a6 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyFilterSearchRecyclerViewAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyFilterSearchRecyclerViewAdapter.java @@ -91,6 +91,7 @@ public class NearbyFilterSearchRecyclerViewAdapter label.setSelected(!label.isSelected()); holder.placeTypeLayout.setSelected(label.isSelected()); + NearbyFilterState.setSelectedLabels(new ArrayList<>(selectedLabels)); callback.filterByMarkerType(selectedLabels, 0, false, false); }); } @@ -152,6 +153,7 @@ public class NearbyFilterSearchRecyclerViewAdapter label.setSelected(false); selectedLabels.remove(label); } + NearbyFilterState.setSelectedLabels(new ArrayList<>(selectedLabels)); notifyDataSetChanged(); } @@ -163,6 +165,7 @@ public class NearbyFilterSearchRecyclerViewAdapter selectedLabels.add(label); } } + NearbyFilterState.setSelectedLabels(new ArrayList<>(selectedLabels)); notifyDataSetChanged(); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index 5c991f465..3e6e71511 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -881,6 +881,12 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), fun initNearbyFilter() { binding!!.nearbyFilterList.root.visibility = View.GONE hideBottomSheet() + binding!!.nearbyFilter.searchViewLayout.searchView.apply { + setIconifiedByDefault(false) + isIconified = false + setQuery("", false) + clearFocus() + } binding!!.nearbyFilter.searchViewLayout.searchView.setOnQueryTextFocusChangeListener { v, hasFocus -> setLayoutHeightAlignedToWidth( 1.25, @@ -924,6 +930,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), return _isDarkTheme } }) + restoreStoredFilterSelection() binding!!.nearbyFilterList.root .layoutParams.width = getScreenWidth( requireActivity(), @@ -942,6 +949,22 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), }) } + private fun restoreStoredFilterSelection() { + val adapter = nearbyFilterSearchRecyclerViewAdapter ?: return + val savedLabels = ArrayList(NearbyFilterState.getInstance().selectedLabels) + adapter.selectedLabels.clear() + val savedSet = savedLabels.toSet() + Label.valuesAsList().forEach { label -> + val isSelected = savedSet.contains(label) + label.setSelected(isSelected) + if (isSelected) { + adapter.selectedLabels.add(label) + } + } + NearbyFilterState.setSelectedLabels(ArrayList(adapter.selectedLabels)) + adapter.notifyDataSetChanged() + } + override fun setCheckBoxAction() { binding!!.nearbyFilterList.checkboxTriStates.addAction() binding!!.nearbyFilterList.checkboxTriStates.state = CheckBoxTriStates.UNKNOWN @@ -2987,4 +3010,4 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), return input.contains("(") || input.contains(")") } } -} \ No newline at end of file +}