From 9e47a49ec01a8eef931575de3c79a2e8970afc3d Mon Sep 17 00:00:00 2001 From: varad64 Date: Tue, 1 Oct 2024 19:49:54 +0530 Subject: [PATCH] Use SharedPreferences to restore the last selected search tab on app restart. Code refactor to change LastSelectedTab to LastSearchedTab. Signed-off-by: varad64 Code refactor to change LastSelectedTab to LastSearchedTab --- .../java/app/organicmaps/search/SearchFragment.java | 6 +++++- .../main/java/app/organicmaps/search/TabAdapter.java | 10 +++++++++- .../app/src/main/java/app/organicmaps/util/Config.java | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/search/SearchFragment.java b/android/app/src/main/java/app/organicmaps/search/SearchFragment.java index 6135ec444b..054560b4cc 100644 --- a/android/app/src/main/java/app/organicmaps/search/SearchFragment.java +++ b/android/app/src/main/java/app/organicmaps/search/SearchFragment.java @@ -3,6 +3,7 @@ package app.organicmaps.search; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.location.Location; import android.os.Bundle; import android.text.TextUtils; @@ -22,6 +23,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import app.organicmaps.Framework; import app.organicmaps.MwmActivity; +import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.base.BaseMwmFragment; import app.organicmaps.bookmarks.data.FeatureId; @@ -299,8 +301,10 @@ public class SearchFragment extends BaseMwmFragment SearchEngine.INSTANCE.addListener(this); + SharedPreferences preferences = MwmApplication.prefs(requireContext()); + int lastSelectedTabPosition = preferences.getInt(Config.KEY_PREF_LAST_SEARCHED_TAB, 0); if (SearchRecents.getSize() == 0 && Config.isSearchHistoryEnabled()) - pager.setCurrentItem(TabAdapter.Tab.CATEGORIES.ordinal()); + pager.setCurrentItem(lastSelectedTabPosition); tabAdapter.setTabSelectedListener(tab -> mToolbarController.deactivate()); diff --git a/android/app/src/main/java/app/organicmaps/search/TabAdapter.java b/android/app/src/main/java/app/organicmaps/search/TabAdapter.java index a803e2a582..5de16dfd38 100644 --- a/android/app/src/main/java/app/organicmaps/search/TabAdapter.java +++ b/android/app/src/main/java/app/organicmaps/search/TabAdapter.java @@ -1,6 +1,7 @@ package app.organicmaps.search; import android.content.Context; +import android.content.SharedPreferences; import android.util.SparseArray; import android.view.View; @@ -11,6 +12,8 @@ import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; + +import app.organicmaps.MwmApplication; import app.organicmaps.R; import app.organicmaps.util.Graphics; import app.organicmaps.util.Config; @@ -91,6 +94,9 @@ class TabAdapter extends FragmentPagerAdapter @Override public void onTabSelected(TabLayout.Tab tab) { + SharedPreferences.Editor editor = MwmApplication.prefs(mContext).edit(); + editor.putInt(Config.KEY_PREF_LAST_SEARCHED_TAB, tab.getPosition()); + editor.apply(); super.onTabSelected(tab); Graphics.tint(mContext, tab.getIcon(), androidx.appcompat.R.attr.colorAccent); } @@ -151,7 +157,9 @@ class TabAdapter extends FragmentPagerAdapter ViewPager.OnPageChangeListener listener = new PageChangedListener(tabs); mPager.addOnPageChangeListener(listener); tabs.setOnTabSelectedListener(new OnTabSelectedListenerForViewPager(mPager)); - listener.onPageSelected(0); + SharedPreferences preferences = MwmApplication.prefs(mPager.getContext()); + int lastSelectedTabPosition = preferences.getInt(Config.KEY_PREF_LAST_SEARCHED_TAB, 0); + listener.onPageSelected(lastSelectedTabPosition); } void setTabSelectedListener(OnTabSelectedListener listener) diff --git a/android/app/src/main/java/app/organicmaps/util/Config.java b/android/app/src/main/java/app/organicmaps/util/Config.java index 14eccbcead..2f9cdbf882 100644 --- a/android/app/src/main/java/app/organicmaps/util/Config.java +++ b/android/app/src/main/java/app/organicmaps/util/Config.java @@ -7,7 +7,6 @@ import android.os.Build; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import app.organicmaps.BuildConfig; -import app.organicmaps.MwmActivity; import app.organicmaps.MwmApplication; import app.organicmaps.R; @@ -36,6 +35,8 @@ public final class Config private static final String KEY_DONATE_URL = "DonateUrl"; private static final String KEY_PREF_SEARCH_HISTORY = "SearchHistoryEnabled"; + public static final String KEY_PREF_LAST_SEARCHED_TAB = "LastSearchTab"; + /** * The total number of app launches. */