Fix show/hide menu items during search

pull/795/head
Alex Baker 6 years ago
parent 59deff44d3
commit 53cd22868b

@ -128,7 +128,7 @@ public class TaskListFragment extends InjectingFragment
private TaskAdapter taskAdapter = null; private TaskAdapter taskAdapter = null;
private TaskListRecyclerAdapter recyclerAdapter; private TaskListRecyclerAdapter recyclerAdapter;
private PublishSubject<String> searchSubject; private PublishSubject<String> searchSubject = PublishSubject.create();
private Disposable searchDisposable; private Disposable searchDisposable;
/* /*
@ -256,56 +256,51 @@ public class TaskListFragment extends InjectingFragment
MenuItem voice = menu.findItem(R.id.menu_voice_add); MenuItem voice = menu.findItem(R.id.menu_voice_add);
voice.setVisible(device.voiceInputAvailable()); voice.setVisible(device.voiceInputAvailable());
MenuItem sort = menu.findItem(R.id.menu_sort); MenuItem search =
MenuItem clearCompleted = menu.findItem(R.id.menu_clear_completed); menu.findItem(R.id.menu_search)
.setOnActionExpandListener(
final MenuItem item = menu.findItem(R.id.menu_search); new MenuItem.OnActionExpandListener() {
item.setOnActionExpandListener( @Override
new MenuItem.OnActionExpandListener() { public boolean onMenuItemActionExpand(MenuItem item) {
@Override searchDisposable =
public boolean onMenuItemActionExpand(MenuItem item) { searchSubject
searchDisposable = .debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
searchSubject .subscribe(q -> searchByQuery(q));
.debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS) searchByQuery("");
.subscribe(q -> searchByQuery(q)); for (int i = 0; i < menu.size(); i++) {
searchByQuery(""); menu.getItem(i).setVisible(false);
sort.setVisible(false); }
clearCompleted.setVisible(false); return true;
completed.setVisible(false); }
hidden.setVisible(false);
voice.setVisible(false); @Override
return true; public boolean onMenuItemActionCollapse(MenuItem item) {
} taskListViewModel.searchByFilter(filter);
searchDisposable.dispose();
@Override for (int i = 0; i < menu.size(); i++) {
public boolean onMenuItemActionCollapse(MenuItem item) { menu.getItem(i).setVisible(true);
taskListViewModel.searchByFilter(filter); }
searchDisposable.dispose(); voice.setVisible(device.voiceInputAvailable());
sort.setVisible(true); return true;
clearCompleted.setVisible(true); }
completed.setVisible(true); });
hidden.setVisible(true); ((SearchView) search.getActionView())
voice.setVisible(device.voiceInputAvailable()); .setOnQueryTextListener(
return true; new SearchView.OnQueryTextListener() {
} @Override
}); public boolean onQueryTextSubmit(String query) {
searchSubject = PublishSubject.create(); ((MainActivity) getActivity())
SearchView actionView = (SearchView) MenuItemCompat.getActionView(item); .onFilterItemClicked(createSearchFilter(query.trim()));
actionView.setOnQueryTextListener( MenuItemCompat.collapseActionView(search);
new SearchView.OnQueryTextListener() { return true;
@Override }
public boolean onQueryTextSubmit(String query) {
((MainActivity) getActivity()).onFilterItemClicked(createSearchFilter(query.trim())); @Override
MenuItemCompat.collapseActionView(item); public boolean onQueryTextChange(String query) {
return true; searchSubject.onNext(query);
} return true;
}
@Override });
public boolean onQueryTextChange(String query) {
searchSubject.onNext(query);
return true;
}
});
} }
private void searchByQuery(String query) { private void searchByQuery(String query) {

Loading…
Cancel
Save