Update search behavior

* Hide menu items during search
* Subscribe/dispose in action expand listener
pull/795/head
Alex Baker 6 years ago
parent 734d51bdfe
commit 59deff44d3

@ -253,32 +253,44 @@ public class TaskListFragment extends InjectingFragment
hidden.setEnabled(false); hidden.setEnabled(false);
} }
menu.findItem(R.id.menu_voice_add).setVisible(device.voiceInputAvailable()); MenuItem voice = menu.findItem(R.id.menu_voice_add);
setupSearchView(menu); voice.setVisible(device.voiceInputAvailable());
}
MenuItem sort = menu.findItem(R.id.menu_sort);
MenuItem clearCompleted = menu.findItem(R.id.menu_clear_completed);
private void setupSearchView(Menu menu) {
final MenuItem item = menu.findItem(R.id.menu_search); final MenuItem item = menu.findItem(R.id.menu_search);
item.setOnActionExpandListener( item.setOnActionExpandListener(
new MenuItem.OnActionExpandListener() { new MenuItem.OnActionExpandListener() {
@Override @Override
public boolean onMenuItemActionExpand(MenuItem item) { public boolean onMenuItemActionExpand(MenuItem item) {
searchDisposable =
searchSubject
.debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
.subscribe(q -> searchByQuery(q));
searchByQuery(""); searchByQuery("");
sort.setVisible(false);
clearCompleted.setVisible(false);
completed.setVisible(false);
hidden.setVisible(false);
voice.setVisible(false);
return true; return true;
} }
@Override @Override
public boolean onMenuItemActionCollapse(MenuItem item) { public boolean onMenuItemActionCollapse(MenuItem item) {
taskListViewModel.searchByFilter(filter); taskListViewModel.searchByFilter(filter);
searchDisposable.dispose();
sort.setVisible(true);
clearCompleted.setVisible(true);
completed.setVisible(true);
hidden.setVisible(true);
voice.setVisible(device.voiceInputAvailable());
return true; return true;
} }
}); });
final SearchView actionView = (SearchView) MenuItemCompat.getActionView(item);
searchSubject = PublishSubject.create(); searchSubject = PublishSubject.create();
searchDisposable = SearchView actionView = (SearchView) MenuItemCompat.getActionView(item);
searchSubject
.debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
.subscribe(this::searchByQuery);
actionView.setOnQueryTextListener( actionView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() { new SearchView.OnQueryTextListener() {
@Override @Override
@ -450,7 +462,9 @@ public class TaskListFragment extends InjectingFragment
@Override @Override
public void onDestroyView() { public void onDestroyView() {
super.onDestroyView(); super.onDestroyView();
searchDisposable.dispose(); if (searchDisposable != null && !searchDisposable.isDisposed()) {
searchDisposable.dispose();
}
} }
/** /**

Loading…
Cancel
Save