From 86fb652fc35ed08c9fdfb95db149b7818227a17c Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Thu, 10 Dec 2015 07:57:52 +1100 Subject: [PATCH] When searching "Available" tab, search all the things. Removed the option to search the currently selected category, as suggested by others on gitlab. --- F-Droid/res/layout/available_app_list.xml | 3 +- .../org/fdroid/fdroid/data/AppProvider.java | 50 ------------------- .../views/fragments/AppListFragment.java | 37 +++++++++++++- .../fragments/AvailableAppsFragment.java | 23 ++++++--- 4 files changed, 54 insertions(+), 59 deletions(-) diff --git a/F-Droid/res/layout/available_app_list.xml b/F-Droid/res/layout/available_app_list.xml index 1ff394163..da7cfe111 100644 --- a/F-Droid/res/layout/available_app_list.xml +++ b/F-Droid/res/layout/available_app_list.xml @@ -2,7 +2,8 @@ + android:layout_height="match_parent" + android:animateLayoutChanges="true"> multiple times, every time the user changes the + * search query. + */ + protected void onSearch() { + // Do nothing by default. + } + + /** + * Alerts the child class that the user is no longer performing a search. + * This is triggered every time the search query is blank. + * @see AppListFragment#onSearch() + */ + protected void onSearchStopped() { + // Do nothing by default. + } + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -150,11 +170,26 @@ public abstract class AppListFragment extends ListFragment implements @Override public Loader onCreateLoader(int id, Bundle args) { - Uri uri = TextUtils.isEmpty(searchQuery) ? getDataUri() : getDataUri(searchQuery); + Uri uri = updateSearchStatus() ? getDataUri(searchQuery) : getDataUri(); return new CursorLoader( getActivity(), uri, APP_PROJECTION, null, null, APP_SORT); } + /** + * Notifies the subclass via {@link AppListFragment#onSearch()} and {@link AppListFragment#onSearchStopped()} + * about whether or not a search is taking place. + * @return True if a user is searching. + */ + private boolean updateSearchStatus() { + if (TextUtils.isEmpty(searchQuery)) { + onSearchStopped(); + return false; + } else { + onSearch(); + return true; + } + } + public void updateSearchQuery(@Nullable String query) { searchQuery = query; if (isAdded()) { diff --git a/F-Droid/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java b/F-Droid/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java index 554fd6009..6fafeb431 100644 --- a/F-Droid/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java +++ b/F-Droid/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java @@ -164,14 +164,9 @@ public class AvailableAppsFragment extends AppListFragment implements return AppProvider.getCategoryUri(currentCategory); } + @Override protected Uri getDataUri(String query) { - if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity()))) - return AppProvider.getSearchUri(query); - if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) - return AppProvider.getSearchRecentlyUpdatedUri(query); - if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity()))) - return AppProvider.getSearchNewlyAddedUri(query); - return AppProvider.getSearchCategoryUri(currentCategory, query); + return AppProvider.getSearchUri(query); } private void setCurrentCategory(String category) { @@ -207,4 +202,18 @@ public class AvailableAppsFragment extends AppListFragment implements e.putString(CATEGORY_KEY, currentCategory); e.commit(); } + + @Override + protected void onSearch() { + if (categorySpinner != null) { + categorySpinner.setVisibility(View.GONE); + } + } + + @Override + protected void onSearchStopped() { + if (categorySpinner != null) { + categorySpinner.setVisibility(View.VISIBLE); + } + } }