Update search behavior

* Show all tasks for empty query
* Revert filter when closing search
pull/795/head
Alex Baker 7 years ago
parent 31fb7e4397
commit 734d51bdfe

@ -259,48 +259,64 @@ public class TaskListFragment extends InjectingFragment
private void setupSearchView(Menu menu) { 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(
new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
searchByQuery("");
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
taskListViewModel.searchByFilter(filter);
return true;
}
});
final SearchView actionView = (SearchView) MenuItemCompat.getActionView(item); final SearchView actionView = (SearchView) MenuItemCompat.getActionView(item);
searchSubject = PublishSubject.create(); searchSubject = PublishSubject.create();
searchDisposable = searchSubject searchDisposable =
searchSubject
.debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS) .debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
.subscribe(this::searchByQuery); .subscribe(this::searchByQuery);
actionView.setOnQueryTextListener( actionView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() { new SearchView.OnQueryTextListener() {
@Override @Override
public boolean onQueryTextSubmit(String query) { public boolean onQueryTextSubmit(String query) {
return false; ((MainActivity) getActivity()).onFilterItemClicked(createSearchFilter(query.trim()));
} MenuItemCompat.collapseActionView(item);
return true;
@Override }
public boolean onQueryTextChange(String query) {
searchSubject.onNext(query); @Override
return true; public boolean onQueryTextChange(String query) {
} searchSubject.onNext(query);
}); return true;
} }
});
}
private void searchByQuery(String query) { private void searchByQuery(String query) {
query = query.trim(); query = query.trim();
if (!query.isEmpty()) { if (!query.isEmpty()) {
Filter savedFilter = createSearchFilter(query); Filter savedFilter = createSearchFilter(query);
taskListViewModel.searchByFilter(savedFilter); taskListViewModel.searchByFilter(savedFilter);
} else { } else {
MainActivity activity = (MainActivity) getActivity(); taskListViewModel.searchByFilter(
taskListViewModel.searchByFilter(activity.defaultFilterProvider.getDefaultFilter()); BuiltInFilterExposer.getMyTasksFilter(context.getResources()));
} }
} }
private Filter createSearchFilter(String query){ private Filter createSearchFilter(String query) {
String title = getString(R.string.FLA_search_filter, query); String title = getString(R.string.FLA_search_filter, query);
return new Filter( return new Filter(
title, new QueryTemplate() title,
new QueryTemplate()
.where( .where(
Criterion.and( Criterion.and(
Task.DELETION_DATE.eq(0), Task.DELETION_DATE.eq(0),
Criterion.or( Criterion.or(
Task.NOTES.like("%" + query + "%"), Task.NOTES.like("%" + query + "%"), Task.TITLE.like("%" + query + "%")))));
Task.TITLE.like("%" + query + "%")))));
} }
@Override @Override

Loading…
Cancel
Save