From 734d51bdfe23d6dc745d34976d653bb6044f1605 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 5 Jan 2019 07:00:23 +0000 Subject: [PATCH] Update search behavior * Show all tasks for empty query * Revert filter when closing search --- .../astrid/activity/TaskListFragment.java | 68 ++++++++++++------- 1 file changed, 42 insertions(+), 26 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 1b7f1610c..de646f7e7 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -259,48 +259,64 @@ public class TaskListFragment extends InjectingFragment private void setupSearchView(Menu menu) { 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); searchSubject = PublishSubject.create(); - searchDisposable = searchSubject + searchDisposable = + searchSubject .debounce(SEARCH_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS) .subscribe(this::searchByQuery); - actionView.setOnQueryTextListener( - new SearchView.OnQueryTextListener() { - @Override - public boolean onQueryTextSubmit(String query) { - return false; - } - - @Override - public boolean onQueryTextChange(String query) { - searchSubject.onNext(query); - return true; - } - }); - } + 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; + } + }); + } private void searchByQuery(String query) { query = query.trim(); if (!query.isEmpty()) { - Filter savedFilter = createSearchFilter(query); - taskListViewModel.searchByFilter(savedFilter); + Filter savedFilter = createSearchFilter(query); + taskListViewModel.searchByFilter(savedFilter); } else { - MainActivity activity = (MainActivity) getActivity(); - taskListViewModel.searchByFilter(activity.defaultFilterProvider.getDefaultFilter()); + taskListViewModel.searchByFilter( + BuiltInFilterExposer.getMyTasksFilter(context.getResources())); } } - private Filter createSearchFilter(String query){ + private Filter createSearchFilter(String query) { String title = getString(R.string.FLA_search_filter, query); return new Filter( - title, new QueryTemplate() + title, + new QueryTemplate() .where( - Criterion.and( - Task.DELETION_DATE.eq(0), - Criterion.or( - Task.NOTES.like("%" + query + "%"), - Task.TITLE.like("%" + query + "%"))))); + Criterion.and( + Task.DELETION_DATE.eq(0), + Criterion.or( + Task.NOTES.like("%" + query + "%"), Task.TITLE.like("%" + query + "%"))))); } @Override