From 38f29097029d5fb6a45e7c9e5e861421be6886c3 Mon Sep 17 00:00:00 2001 From: Unpublished Date: Mon, 12 Aug 2019 15:35:22 +0200 Subject: [PATCH] Persist search query --- .../widget/PersistentSearchView.java | 33 +++++++++++++++++++ .../eu/faircode/email/FragmentMessages.java | 5 ++- app/src/main/res/menu/menu_accounts.xml | 2 +- app/src/main/res/menu/menu_contacts.xml | 2 +- app/src/main/res/menu/menu_folders.xml | 2 +- app/src/main/res/menu/menu_messages.xml | 2 +- 6 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/androidx/appcompat/widget/PersistentSearchView.java diff --git a/app/src/main/java/androidx/appcompat/widget/PersistentSearchView.java b/app/src/main/java/androidx/appcompat/widget/PersistentSearchView.java new file mode 100644 index 0000000000..a8f95f0b61 --- /dev/null +++ b/app/src/main/java/androidx/appcompat/widget/PersistentSearchView.java @@ -0,0 +1,33 @@ +package androidx.appcompat.widget; + +import android.content.Context; +import android.util.AttributeSet; + +public class PersistentSearchView extends SearchView { + + public CharSequence lastQuery; + + public PersistentSearchView(Context context) { + super(context); + } + + public PersistentSearchView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public PersistentSearchView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public void onActionViewCollapsed() { + lastQuery = getQuery(); + super.onActionViewCollapsed(); + } + + @Override + public void onActionViewExpanded() { + super.onActionViewExpanded(); + setQuery(lastQuery, false); + } +} diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index d7c2953768..9a9fc72a1f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -80,6 +80,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.PersistentSearchView; import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.SearchView; import androidx.constraintlayout.widget.ConstraintLayout; @@ -2327,12 +2328,14 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. inflater.inflate(R.menu.menu_messages, menu); final MenuItem menuSearch = menu.findItem(R.id.menu_search); - final SearchView searchView = (SearchView) menuSearch.getActionView(); + final PersistentSearchView searchView = (PersistentSearchView) menuSearch.getActionView(); searchView.setQueryHint(getString(R.string.title_search)); if (!TextUtils.isEmpty(searching)) { menuSearch.expandActionView(); searchView.setQuery(searching, false); + } else { + searchView.lastQuery = query; } AutoCompleteTextView autoCompleteTextView = searchView.findViewById(androidx.appcompat.R.id.search_src_text); diff --git a/app/src/main/res/menu/menu_accounts.xml b/app/src/main/res/menu/menu_accounts.xml index 38f71a0ad1..58c552203f 100644 --- a/app/src/main/res/menu/menu_accounts.xml +++ b/app/src/main/res/menu/menu_accounts.xml @@ -6,6 +6,6 @@ android:id="@+id/menu_search" android:icon="@drawable/baseline_search_24" android:title="@string/title_search" - app:actionViewClass="androidx.appcompat.widget.SearchView" + app:actionViewClass="androidx.appcompat.widget.PersistentSearchView" app:showAsAction="collapseActionView|always" /> diff --git a/app/src/main/res/menu/menu_contacts.xml b/app/src/main/res/menu/menu_contacts.xml index d8c19cb8e6..0661966d29 100644 --- a/app/src/main/res/menu/menu_contacts.xml +++ b/app/src/main/res/menu/menu_contacts.xml @@ -6,7 +6,7 @@ android:id="@+id/menu_search" android:icon="@drawable/baseline_search_24" android:title="@string/title_search" - app:actionViewClass="androidx.appcompat.widget.SearchView" + app:actionViewClass="androidx.appcompat.widget.PersistentSearchView" app:showAsAction="collapseActionView|always" />