Loading src/com/android/launcher3/allapps/AlphabeticalAppsList.java +35 −26 Original line number Diff line number Diff line Loading @@ -178,16 +178,46 @@ public class AlphabeticalAppsList implements AllAppsStore.OnUpdateListener { /** * Sets results list for search */ public boolean setSearchResults(ArrayList<AdapterItem> f) { if (f == null || mSearchResults != f) { boolean same = mSearchResults != null && mSearchResults.equals(f); mSearchResults = f; public boolean setSearchResults(ArrayList<AdapterItem> results) { if (results == null || mSearchResults != results) { boolean same = mSearchResults != null && mSearchResults.equals(results); mSearchResults = results; onAppsUpdated(); return !same; } return false; } public boolean appendSearchResults(ArrayList<AdapterItem> results) { if (mSearchResults != null && results != null && results.size() > 0) { updateSearchAdapterItems(results, mSearchResults.size()); refreshRecyclerView(); return true; } return false; } void updateSearchAdapterItems(ArrayList<AdapterItem> list, int offset) { SearchSectionInfo lastSection = null; for (int i = 0; i < list.size(); i++) { AdapterItem adapterItem = list.get(i); adapterItem.position = offset + i; mAdapterItems.add(adapterItem); if (adapterItem.searchSectionInfo != lastSection) { if (adapterItem.searchSectionInfo != null) { adapterItem.searchSectionInfo.setPosStart(adapterItem.position); } if (lastSection != null) { lastSection.setPosEnd(adapterItem.position - 1); } lastSection = adapterItem.searchSectionInfo; } if (adapterItem.isCountedForAccessibility()) { mAccessibilityResultsCount++; } } } /** * Updates internals when the set of apps are updated. */ Loading Loading @@ -294,28 +324,7 @@ public class AlphabeticalAppsList implements AllAppsStore.OnUpdateListener { } appSection.setPosEnd(mApps.isEmpty() ? appSection.getPosStart() : position - 1); } else { List<AppInfo> appInfos = new ArrayList<>(); SearchSectionInfo lastSection = null; for (int i = 0; i < mSearchResults.size(); i++) { AdapterItem adapterItem = mSearchResults.get(i); adapterItem.position = i; mAdapterItems.add(adapterItem); if (adapterItem.searchSectionInfo != lastSection) { if (adapterItem.searchSectionInfo != null) { adapterItem.searchSectionInfo.setPosStart(i); } if (lastSection != null) { lastSection.setPosEnd(i - 1); } lastSection = adapterItem.searchSectionInfo; } if (AllAppsGridAdapter.isIconViewType(adapterItem.viewType)) { appInfos.add(adapterItem.appInfo); } if (adapterItem.isCountedForAccessibility()) { mAccessibilityResultsCount++; } } updateSearchAdapterItems(mSearchResults, 0); if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()) { // Append the search market item if (hasNoFilteredResults()) { Loading src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java +10 −3 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.ExtendedEditText; import com.android.launcher3.Launcher; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AllAppsGridAdapter; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.PackageManagerHelper; import com.android.systemui.plugins.AllAppsSearchPlugin; Loading Loading @@ -194,9 +194,16 @@ public class AllAppsSearchBarController /** * Called when the search from primary source is complete. * * @param items sorted list of search result adapter items. * @param items sorted list of search result adapter items */ void onSearchResult(String query, ArrayList<AllAppsGridAdapter.AdapterItem> items); void onSearchResult(String query, ArrayList<AdapterItem> items); /** * Called when the search from secondary source is complete. * * @param items sorted list of search result adapter items */ void onAppendSearchResult(String query, ArrayList<AdapterItem> items); /** * Called when the search results should be cleared. Loading src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java +10 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import com.android.launcher3.Insettable; import com.android.launcher3.LauncherAppState; import com.android.launcher3.R; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.allapps.AllAppsGridAdapter; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; import com.android.launcher3.allapps.AllAppsStore; import com.android.launcher3.allapps.AlphabeticalAppsList; import com.android.launcher3.allapps.SearchUiManager; Loading Loading @@ -173,7 +173,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText } @Override public void onSearchResult(String query, ArrayList<AllAppsGridAdapter.AdapterItem> items) { public void onSearchResult(String query, ArrayList<AdapterItem> items) { if (items != null) { mApps.setSearchResults(items); notifyResultChanged(); Loading @@ -181,6 +181,14 @@ public class AppsSearchContainerLayout extends ExtendedEditText } } @Override public void onAppendSearchResult(String query, ArrayList<AdapterItem> items) { if (items != null) { mApps.appendSearchResults(items); notifyResultChanged(); } } @Override public void clearSearchResult() { if (mApps.setSearchResults(null)) { Loading src/com/android/launcher3/allapps/search/AppsSearchPipeline.java +4 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3.allapps.search; import android.content.Context; import android.os.CancellationSignal; import com.android.launcher3.LauncherAppState; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; Loading Loading @@ -47,11 +48,12 @@ public class AppsSearchPipeline implements SearchPipeline { } @Override public void performSearch(String query, Consumer<ArrayList<AdapterItem>> callback) { public void query(String input, Consumer<ArrayList<AdapterItem>> callback, CancellationSignal cancellationSignal) { mLauncherAppState.getModel().enqueueModelUpdateTask(new BaseModelUpdateTask() { @Override public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) { List<AppInfo> matchingResults = getTitleMatchResult(apps.data, query); List<AppInfo> matchingResults = getTitleMatchResult(apps.data, input); callback.accept(getAdapterItems(matchingResults)); } }); Loading src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java +4 −2 Original line number Diff line number Diff line Loading @@ -46,8 +46,10 @@ public class DefaultAppSearchAlgorithm implements SearchAlgorithm { @Override public void doSearch(final String query, final AllAppsSearchBarController.Callbacks callback) { mAppsSearchPipeline.performSearch(query, results -> mResultHandler.post(() -> callback.onSearchResult(query, results))); mAppsSearchPipeline.query(query, results -> mResultHandler.post( () -> callback.onSearchResult(query, results)), null); } public static boolean matches(AppInfo info, String query, StringMatcher matcher) { Loading Loading
src/com/android/launcher3/allapps/AlphabeticalAppsList.java +35 −26 Original line number Diff line number Diff line Loading @@ -178,16 +178,46 @@ public class AlphabeticalAppsList implements AllAppsStore.OnUpdateListener { /** * Sets results list for search */ public boolean setSearchResults(ArrayList<AdapterItem> f) { if (f == null || mSearchResults != f) { boolean same = mSearchResults != null && mSearchResults.equals(f); mSearchResults = f; public boolean setSearchResults(ArrayList<AdapterItem> results) { if (results == null || mSearchResults != results) { boolean same = mSearchResults != null && mSearchResults.equals(results); mSearchResults = results; onAppsUpdated(); return !same; } return false; } public boolean appendSearchResults(ArrayList<AdapterItem> results) { if (mSearchResults != null && results != null && results.size() > 0) { updateSearchAdapterItems(results, mSearchResults.size()); refreshRecyclerView(); return true; } return false; } void updateSearchAdapterItems(ArrayList<AdapterItem> list, int offset) { SearchSectionInfo lastSection = null; for (int i = 0; i < list.size(); i++) { AdapterItem adapterItem = list.get(i); adapterItem.position = offset + i; mAdapterItems.add(adapterItem); if (adapterItem.searchSectionInfo != lastSection) { if (adapterItem.searchSectionInfo != null) { adapterItem.searchSectionInfo.setPosStart(adapterItem.position); } if (lastSection != null) { lastSection.setPosEnd(adapterItem.position - 1); } lastSection = adapterItem.searchSectionInfo; } if (adapterItem.isCountedForAccessibility()) { mAccessibilityResultsCount++; } } } /** * Updates internals when the set of apps are updated. */ Loading Loading @@ -294,28 +324,7 @@ public class AlphabeticalAppsList implements AllAppsStore.OnUpdateListener { } appSection.setPosEnd(mApps.isEmpty() ? appSection.getPosStart() : position - 1); } else { List<AppInfo> appInfos = new ArrayList<>(); SearchSectionInfo lastSection = null; for (int i = 0; i < mSearchResults.size(); i++) { AdapterItem adapterItem = mSearchResults.get(i); adapterItem.position = i; mAdapterItems.add(adapterItem); if (adapterItem.searchSectionInfo != lastSection) { if (adapterItem.searchSectionInfo != null) { adapterItem.searchSectionInfo.setPosStart(i); } if (lastSection != null) { lastSection.setPosEnd(i - 1); } lastSection = adapterItem.searchSectionInfo; } if (AllAppsGridAdapter.isIconViewType(adapterItem.viewType)) { appInfos.add(adapterItem.appInfo); } if (adapterItem.isCountedForAccessibility()) { mAccessibilityResultsCount++; } } updateSearchAdapterItems(mSearchResults, 0); if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()) { // Append the search market item if (hasNoFilteredResults()) { Loading
src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java +10 −3 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.ExtendedEditText; import com.android.launcher3.Launcher; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AllAppsGridAdapter; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.PackageManagerHelper; import com.android.systemui.plugins.AllAppsSearchPlugin; Loading Loading @@ -194,9 +194,16 @@ public class AllAppsSearchBarController /** * Called when the search from primary source is complete. * * @param items sorted list of search result adapter items. * @param items sorted list of search result adapter items */ void onSearchResult(String query, ArrayList<AllAppsGridAdapter.AdapterItem> items); void onSearchResult(String query, ArrayList<AdapterItem> items); /** * Called when the search from secondary source is complete. * * @param items sorted list of search result adapter items */ void onAppendSearchResult(String query, ArrayList<AdapterItem> items); /** * Called when the search results should be cleared. Loading
src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java +10 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import com.android.launcher3.Insettable; import com.android.launcher3.LauncherAppState; import com.android.launcher3.R; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.allapps.AllAppsGridAdapter; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; import com.android.launcher3.allapps.AllAppsStore; import com.android.launcher3.allapps.AlphabeticalAppsList; import com.android.launcher3.allapps.SearchUiManager; Loading Loading @@ -173,7 +173,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText } @Override public void onSearchResult(String query, ArrayList<AllAppsGridAdapter.AdapterItem> items) { public void onSearchResult(String query, ArrayList<AdapterItem> items) { if (items != null) { mApps.setSearchResults(items); notifyResultChanged(); Loading @@ -181,6 +181,14 @@ public class AppsSearchContainerLayout extends ExtendedEditText } } @Override public void onAppendSearchResult(String query, ArrayList<AdapterItem> items) { if (items != null) { mApps.appendSearchResults(items); notifyResultChanged(); } } @Override public void clearSearchResult() { if (mApps.setSearchResults(null)) { Loading
src/com/android/launcher3/allapps/search/AppsSearchPipeline.java +4 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.launcher3.allapps.search; import android.content.Context; import android.os.CancellationSignal; import com.android.launcher3.LauncherAppState; import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItem; Loading Loading @@ -47,11 +48,12 @@ public class AppsSearchPipeline implements SearchPipeline { } @Override public void performSearch(String query, Consumer<ArrayList<AdapterItem>> callback) { public void query(String input, Consumer<ArrayList<AdapterItem>> callback, CancellationSignal cancellationSignal) { mLauncherAppState.getModel().enqueueModelUpdateTask(new BaseModelUpdateTask() { @Override public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) { List<AppInfo> matchingResults = getTitleMatchResult(apps.data, query); List<AppInfo> matchingResults = getTitleMatchResult(apps.data, input); callback.accept(getAdapterItems(matchingResults)); } }); Loading
src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java +4 −2 Original line number Diff line number Diff line Loading @@ -46,8 +46,10 @@ public class DefaultAppSearchAlgorithm implements SearchAlgorithm { @Override public void doSearch(final String query, final AllAppsSearchBarController.Callbacks callback) { mAppsSearchPipeline.performSearch(query, results -> mResultHandler.post(() -> callback.onSearchResult(query, results))); mAppsSearchPipeline.query(query, results -> mResultHandler.post( () -> callback.onSearchResult(query, results)), null); } public static boolean matches(AppInfo info, String query, StringMatcher matcher) { Loading