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 TaskListRecyclerAdapter recyclerAdapter;
private PublishSubject<String> searchSubject;
private PublishSubject<String> 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) {

Loading…
Cancel
Save