From 53cd22868bb793dfcfc8afc68e17a3396664e65f Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 5 Jan 2019 08:10:41 +0000 Subject: [PATCH] Fix show/hide menu items during search --- .../astrid/activity/TaskListFragment.java | 97 +++++++++---------- 1 file changed, 46 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 65f3f199a..d9fe261ca 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -128,7 +128,7 @@ public class TaskListFragment extends InjectingFragment private TaskAdapter taskAdapter = null; private TaskListRecyclerAdapter recyclerAdapter; - private PublishSubject searchSubject; + private PublishSubject searchSubject = PublishSubject.create(); private Disposable searchDisposable; /* @@ -256,56 +256,51 @@ public class TaskListFragment extends InjectingFragment MenuItem voice = menu.findItem(R.id.menu_voice_add); voice.setVisible(device.voiceInputAvailable()); - MenuItem sort = menu.findItem(R.id.menu_sort); - MenuItem clearCompleted = menu.findItem(R.id.menu_clear_completed); - - final MenuItem item = menu.findItem(R.id.menu_search); - item.setOnActionExpandListener( - new MenuItem.OnActionExpandListener() { - @Override - public boolean onMenuItemActionExpand(MenuItem item) { - searchDisposable = - searchSubject - .debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS) - .subscribe(q -> searchByQuery(q)); - searchByQuery(""); - sort.setVisible(false); - clearCompleted.setVisible(false); - completed.setVisible(false); - hidden.setVisible(false); - voice.setVisible(false); - return true; - } - - @Override - public boolean onMenuItemActionCollapse(MenuItem item) { - taskListViewModel.searchByFilter(filter); - searchDisposable.dispose(); - sort.setVisible(true); - clearCompleted.setVisible(true); - completed.setVisible(true); - hidden.setVisible(true); - voice.setVisible(device.voiceInputAvailable()); - return true; - } - }); - searchSubject = PublishSubject.create(); - SearchView actionView = (SearchView) MenuItemCompat.getActionView(item); - actionView.setOnQueryTextListener( - new SearchView.OnQueryTextListener() { - @Override - public boolean onQueryTextSubmit(String query) { - ((MainActivity) getActivity()).onFilterItemClicked(createSearchFilter(query.trim())); - MenuItemCompat.collapseActionView(item); - return true; - } - - @Override - public boolean onQueryTextChange(String query) { - searchSubject.onNext(query); - return true; - } - }); + MenuItem search = + menu.findItem(R.id.menu_search) + .setOnActionExpandListener( + new MenuItem.OnActionExpandListener() { + @Override + public boolean onMenuItemActionExpand(MenuItem item) { + searchDisposable = + searchSubject + .debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS) + .subscribe(q -> searchByQuery(q)); + searchByQuery(""); + for (int i = 0; i < menu.size(); i++) { + menu.getItem(i).setVisible(false); + } + return true; + } + + @Override + public boolean onMenuItemActionCollapse(MenuItem item) { + taskListViewModel.searchByFilter(filter); + searchDisposable.dispose(); + for (int i = 0; i < menu.size(); i++) { + menu.getItem(i).setVisible(true); + } + voice.setVisible(device.voiceInputAvailable()); + return true; + } + }); + ((SearchView) search.getActionView()) + .setOnQueryTextListener( + new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + ((MainActivity) getActivity()) + .onFilterItemClicked(createSearchFilter(query.trim())); + MenuItemCompat.collapseActionView(search); + return true; + } + + @Override + public boolean onQueryTextChange(String query) { + searchSubject.onNext(query); + return true; + } + }); } private void searchByQuery(String query) {