diff --git a/quickstep/res/layout/taskbar_all_apps.xml b/quickstep/res/layout/taskbar_all_apps.xml index 34d4b231b1..d402469833 100644 --- a/quickstep/res/layout/taskbar_all_apps.xml +++ b/quickstep/res/layout/taskbar_all_apps.xml @@ -33,10 +33,6 @@ layout="@layout/all_apps_bottom_sheet_background" android:visibility="gone" /> - - diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java index 51fa4d9f3a..0ea2aa0647 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java @@ -44,10 +44,9 @@ public class TaskbarAllAppsContainerView extends } @Override - protected BaseAllAppsAdapter createAdapter( - AlphabeticalAppsList appsList, + protected BaseAllAppsAdapter getAdapter(AlphabeticalAppsList mAppsList, BaseAdapterProvider[] adapterProviders) { - return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), appsList, + return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), mAppsList, adapterProviders); } } diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml index d0d82d48bd..2ac7e63a15 100644 --- a/res/layout/all_apps.xml +++ b/res/layout/all_apps.xml @@ -29,10 +29,6 @@ layout="@layout/all_apps_bottom_sheet_background" android:visibility="gone" /> - - diff --git a/res/layout/search_results_rv_layout.xml b/res/layout/search_results_rv_layout.xml deleted file mode 100644 index 567cb5f4fc..0000000000 --- a/res/layout/search_results_rv_layout.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/res/layout/secondary_launcher.xml b/res/layout/secondary_launcher.xml index 635db141dd..0fe05ee721 100644 --- a/res/layout/secondary_launcher.xml +++ b/res/layout/secondary_launcher.xml @@ -59,10 +59,6 @@ layout="@layout/all_apps_bottom_sheet_background" android:visibility="gone" /> - - diff --git a/src/com/android/launcher3/FastScrollRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java similarity index 95% rename from src/com/android/launcher3/FastScrollRecyclerView.java rename to src/com/android/launcher3/BaseRecyclerView.java index a60d143c6e..9369bdc2fd 100644 --- a/src/com/android/launcher3/FastScrollRecyclerView.java +++ b/src/com/android/launcher3/BaseRecyclerView.java @@ -37,19 +37,19 @@ import com.android.launcher3.views.RecyclerViewFastScroller; *
  • Enable fast scroller. * */ -public abstract class FastScrollRecyclerView extends RecyclerView { +public abstract class BaseRecyclerView extends RecyclerView { protected RecyclerViewFastScroller mScrollbar; - public FastScrollRecyclerView(Context context) { + public BaseRecyclerView(Context context) { this(context, null); } - public FastScrollRecyclerView(Context context, AttributeSet attrs) { + public BaseRecyclerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public FastScrollRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { + public BaseRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @@ -206,4 +206,4 @@ public abstract class FastScrollRecyclerView extends RecyclerView { } scrollToPosition(0); } -} +} \ No newline at end of file diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 463280b958..4b42ecbae0 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2750,7 +2750,7 @@ public class Launcher extends StatefulActivity packageName); if (supportsAllAppsState && isInState(LauncherState.ALL_APPS)) { - return getFirstMatch(Collections.singletonList(mAppsView.getActiveAppsRecyclerView()), + return getFirstMatch(Collections.singletonList(mAppsView.getActiveRecyclerView()), preferredItem, packageAndUserAndApp); } else { List containers = new ArrayList<>(mWorkspace.getPanelCount() + 1); diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java index 16a2823c4e..e279f59aaf 100644 --- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java @@ -80,7 +80,7 @@ public class ActivityAllAppsContainerView mActivityContext.startActivitySafely(v, marketSearchIntent, null); for (int i = 0; i < mAH.size(); i++) { - mAH.get(i).mAdapter.setLastSearchQuery(query, marketSearchClickListener); + mAH.get(i).adapter.setLastSearchQuery(query, marketSearchClickListener); } mIsSearching = true; rebindAdapters(); @@ -142,7 +142,7 @@ public class ActivityAllAppsContainerView mHeaderThreshold) { bgVisible = false; @@ -251,7 +242,7 @@ public class ActivityAllAppsContainerView createAdapter(AlphabeticalAppsList appsList, + protected BaseAllAppsAdapter getAdapter(AlphabeticalAppsList mAppsList, BaseAdapterProvider[] adapterProviders) { - return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), appsList, + return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), mAppsList, adapterProviders); } } diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index 18c6788397..7dbe711716 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -37,8 +37,8 @@ import android.view.View; import androidx.recyclerview.widget.RecyclerView; +import com.android.launcher3.BaseRecyclerView; import com.android.launcher3.DeviceProfile; -import com.android.launcher3.FastScrollRecyclerView; import com.android.launcher3.LauncherAppState; import com.android.launcher3.R; import com.android.launcher3.Utilities; @@ -53,13 +53,13 @@ import java.util.List; /** * A RecyclerView with custom fast scroll support for the all apps view. */ -public class AllAppsRecyclerView extends FastScrollRecyclerView { - protected static final String TAG = "AllAppsRecyclerView"; +public class AllAppsRecyclerView extends BaseRecyclerView { + private static final String TAG = "AllAppsContainerView"; private static final boolean DEBUG = false; private static final boolean DEBUG_LATENCY = Utilities.isPropertyEnabled(SEARCH_LOGGING); - protected AlphabeticalAppsList mApps; - protected final int mNumAppsPerRow; + private AlphabeticalAppsList mApps; + private final int mNumAppsPerRow; // The specific view heights that we use to calculate scroll private final SparseIntArray mViewHeights = new SparseIntArray(); @@ -74,8 +74,8 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { }; // The empty-search result background - protected AllAppsBackgroundDrawable mEmptySearchBackground; - protected int mEmptySearchBackgroundTopOffset; + private AllAppsBackgroundDrawable mEmptySearchBackground; + private int mEmptySearchBackgroundTopOffset; private ArrayList mAutoSizedOverlays = new ArrayList<>(); @@ -112,7 +112,7 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { return mApps; } - protected void updatePoolSize() { + private void updatePoolSize() { DeviceProfile grid = ActivityContext.lookupContext(getContext()).getDeviceProfile(); RecyclerView.RecycledViewPool pool = getRecycledViewPool(); int approxRows = (int) Math.ceil(grid.availableHeightPx / grid.allAppsIconSizePx); @@ -137,8 +137,8 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { Log.d(TAG, "onDraw at = " + System.currentTimeMillis()); } if (DEBUG_LATENCY) { - Log.d(SEARCH_LOGGING, getClass().getSimpleName() + " onDraw; time stamp = " - + System.currentTimeMillis()); + Log.d(SEARCH_LOGGING, + "-- Recycle view onDraw, time stamp = " + System.currentTimeMillis()); } super.onDraw(c); } @@ -223,7 +223,8 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { && mEmptySearchBackground != null && mEmptySearchBackground.getAlpha() > 0) { mEmptySearchBackground.setHotspot(e.getX(), e.getY()); } - hideKeyboardAsync(ActivityContext.lookupContext(getContext()), getApplicationWindowToken()); + hideKeyboardAsync(ActivityContext.lookupContext(getContext()), + getApplicationWindowToken()); return result; } @@ -358,6 +359,13 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { } } + @Override + public boolean supportsFastScrolling() { + // Only allow fast scrolling when the user is not searching, since the results are not + // grouped in a meaningful order + return !mApps.hasFilter(); + } + @Override public int getCurrentScrollY() { // Return early if there are no items or we haven't been measured @@ -368,7 +376,7 @@ public class AllAppsRecyclerView extends FastScrollRecyclerView { // Calculate the y and offset for the item View child = getChildAt(0); - int position = getChildAdapterPosition(child); + int position = getChildPosition(child); if (position == NO_POSITION) { return -1; } diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index 723bc65978..637a4189b8 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -84,8 +84,7 @@ public class AllAppsTransitionController @Override public Float get(AllAppsTransitionController controller) { if (controller.mIsTablet) { - return controller.mAppsView.getAppsRecyclerViewContainer() - .getTranslationY(); + return controller.mAppsView.getRecyclerViewContainer().getTranslationY(); } else { return controller.getAppsViewPullbackTranslationY().get( controller.mAppsView); @@ -95,7 +94,7 @@ public class AllAppsTransitionController @Override public void setValue(AllAppsTransitionController controller, float translation) { if (controller.mIsTablet) { - controller.mAppsView.getAppsRecyclerViewContainer().setTranslationY( + controller.mAppsView.getRecyclerViewContainer().setTranslationY( translation); } else { controller.getAppsViewPullbackTranslationY().set(controller.mAppsView, @@ -110,7 +109,7 @@ public class AllAppsTransitionController @Override public Float get(AllAppsTransitionController controller) { if (controller.mIsTablet) { - return controller.mAppsView.getAppsRecyclerViewContainer().getAlpha(); + return controller.mAppsView.getRecyclerViewContainer().getAlpha(); } else { return controller.getAppsViewPullbackAlpha().getValue(); } @@ -119,7 +118,7 @@ public class AllAppsTransitionController @Override public void setValue(AllAppsTransitionController controller, float alpha) { if (controller.mIsTablet) { - controller.mAppsView.getAppsRecyclerViewContainer().setAlpha(alpha); + controller.mAppsView.getRecyclerViewContainer().setAlpha(alpha); } else { controller.getAppsViewPullbackAlpha().setValue(alpha); } diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java index 42374b894f..7687fea85d 100644 --- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java +++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java @@ -18,8 +18,6 @@ package com.android.launcher3.allapps; import android.content.Context; -import androidx.annotation.Nullable; - import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.model.data.AppInfo; @@ -73,7 +71,6 @@ public class AlphabeticalAppsList implement // The set of apps from the system private final List mApps = new ArrayList<>(); - @Nullable private final AllAppsStore mAllAppsStore; // The number of results in current adapter @@ -91,16 +88,14 @@ public class AlphabeticalAppsList implement private int mNumAppRowsInAdapter; private ItemInfoMatcher mItemFilter; - public AlphabeticalAppsList(Context context, @Nullable AllAppsStore appsStore, + public AlphabeticalAppsList(Context context, AllAppsStore appsStore, WorkAdapterProvider adapterProvider) { mAllAppsStore = appsStore; mActivityContext = ActivityContext.lookupContext(context); mAppNameComparator = new AppInfoComparator(context); mWorkAdapterProvider = adapterProvider; mNumAppsPerRowAllApps = mActivityContext.getDeviceProfile().inv.numAllAppsColumns; - if (mAllAppsStore != null) { - mAllAppsStore.addUpdateListener(this); - } + mAllAppsStore.addUpdateListener(this); } public void updateItemFilter(ItemInfoMatcher itemFilter) { @@ -173,9 +168,9 @@ public class AlphabeticalAppsList implement } /** - * Returns whether there are search results which will hide the A-Z list. + * Returns whether there are is a filter set. */ - public boolean hasSearchResults() { + public boolean hasFilter() { return !mSearchResults.isEmpty(); } @@ -183,7 +178,7 @@ public class AlphabeticalAppsList implement * Returns whether there are no filtered results. */ public boolean hasNoFilteredResults() { - return hasSearchResults() && mAccessibilityResultsCount == 0; + return hasFilter() && mAccessibilityResultsCount == 0; } /** @@ -201,13 +196,13 @@ public class AlphabeticalAppsList implement return true; } - /** Appends results to search. */ - public void appendSearchResults(ArrayList results) { - if (hasSearchResults() && results != null && results.size() > 0) { + public boolean appendSearchResults(ArrayList results) { + if (hasFilter() && results != null && results.size() > 0) { updateSearchAdapterItems(results, mSearchResults.size()); - mSearchResults.addAll(results); refreshRecyclerView(); + return true; } + return false; } void updateSearchAdapterItems(ArrayList list, int offset) { @@ -227,14 +222,11 @@ public class AlphabeticalAppsList implement */ @Override public void onAppsUpdated() { - if (mAllAppsStore == null) { - return; - } // Sort the list of apps mApps.clear(); for (AppInfo app : mAllAppsStore.getApps()) { - if (mItemFilter == null || mItemFilter.matches(app, null) || hasSearchResults()) { + if (mItemFilter == null || mItemFilter.matches(app, null) || hasFilter()) { mApps.add(app); } } @@ -304,18 +296,7 @@ public class AlphabeticalAppsList implement // Recreate the filtered and sectioned apps (for convenience for the grid layout) from the // ordered set of sections - if (hasSearchResults()) { - if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()) { - // Append the search market item - if (hasNoFilteredResults()) { - mSearchResults.add(AdapterItem.asEmptySearch(position++)); - } else { - mSearchResults.add(AdapterItem.asAllAppsDivider(position++)); - } - mSearchResults.add(AdapterItem.asMarketSearch(position++)); - } - updateSearchAdapterItems(mSearchResults, 0); - } else { + if (!hasFilter()) { mAccessibilityResultsCount = mApps.size(); if (mWorkAdapterProvider != null) { position += mWorkAdapterProvider.addWorkItems(mAdapterItems); @@ -342,6 +323,18 @@ public class AlphabeticalAppsList implement mAdapterItems.add(appItem); } + } else { + updateSearchAdapterItems(mSearchResults, 0); + if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()) { + // Append the search market item + if (hasNoFilteredResults()) { + mAdapterItems.add(AdapterItem.asEmptySearch(position++)); + } else { + mAdapterItems.add(AdapterItem.asAllAppsDivider(position++)); + } + mAdapterItems.add(AdapterItem.asMarketSearch(position++)); + + } } if (mNumAppsPerRowAllApps != 0) { // Update the number of rows in the adapter after we do all the merging (otherwise, we diff --git a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java index 6a4498917e..f913aa9093 100644 --- a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java @@ -80,7 +80,7 @@ public abstract class BaseAllAppsContainerView