Separating system and user-installed apps in PS container.

We add a horizontal line separator in PS container which demarcates
user-installed vs system installed apps in private space.
User-installed are shown above the separator, system ones below.

UX Mock: https://www.figma.com/file/K6bIIcG882EiJNjxvSWsFT/V%E2%80%A2-Private-Space?node-id=11546%3A310574&mode=dev
Mock Image: https://photos.app.goo.gl/Wj8sJkS7P7bRbovg8
Demo video: https://photos.app.goo.gl/MBw6HpDnf6PJqUfs8

Bug: 308054233
Flag: ACONFIG com.android.launcher3.Flags.private_space_sys_apps_separation DEVELOPMENT
Test: AlphabeticalAppsListTest
Change-Id: Iad8e289c49a05ac7ef1978bd8e4ebe7aa0add0ca
This commit is contained in:
Himanshu Gupta
2023-12-21 17:54:15 +00:00
parent 0e08d300e4
commit 0cc11dbcac
8 changed files with 226 additions and 26 deletions
@@ -17,6 +17,7 @@ package com.android.launcher3.allapps;
import static com.android.launcher3.allapps.SectionDecorationInfo.ROUND_BOTTOM_LEFT;
import static com.android.launcher3.allapps.SectionDecorationInfo.ROUND_BOTTOM_RIGHT;
import static com.android.launcher3.allapps.SectionDecorationInfo.ROUND_NOTHING;
import static com.android.launcher3.allapps.SectionDecorationInfo.ROUND_TOP_LEFT;
import static com.android.launcher3.allapps.SectionDecorationInfo.ROUND_TOP_RIGHT;
import static com.android.launcher3.allapps.UserProfileManager.STATE_DISABLED;
@@ -61,7 +62,8 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
public static final int VIEW_TYPE_WORK_EDU_CARD = 1 << 4;
public static final int VIEW_TYPE_WORK_DISABLED_CARD = 1 << 5;
public static final int VIEW_TYPE_PRIVATE_SPACE_HEADER = 1 << 6;
public static final int NEXT_ID = 7;
public static final int VIEW_TYPE_PRIVATE_SPACE_SYS_APPS_DIVIDER = 1 << 7;
public static final int NEXT_ID = 8;
// Common view type masks
public static final int VIEW_TYPE_MASK_DIVIDER = VIEW_TYPE_ALL_APPS_DIVIDER;
@@ -69,6 +71,8 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
public static final int VIEW_TYPE_MASK_PRIVATE_SPACE_HEADER =
VIEW_TYPE_PRIVATE_SPACE_HEADER;
public static final int VIEW_TYPE_MASK_PRIVATE_SPACE_SYS_APPS_DIVIDER =
VIEW_TYPE_PRIVATE_SPACE_SYS_APPS_DIVIDER;
protected final SearchAdapterProvider<?> mAdapterProvider;
@@ -199,6 +203,11 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
return isViewType(viewType, VIEW_TYPE_MASK_PRIVATE_SPACE_HEADER);
}
/** Checks if the passed viewType represents private space system apps divider. */
public static boolean isPrivateSpaceSysAppsDividerView(int viewType) {
return isViewType(viewType, VIEW_TYPE_MASK_PRIVATE_SPACE_SYS_APPS_DIVIDER);
}
public void setIconFocusListener(OnFocusChangeListener focusListener) {
mIconFocusListener = focusListener;
}
@@ -227,9 +236,9 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
case VIEW_TYPE_EMPTY_SEARCH:
return new ViewHolder(mLayoutInflater.inflate(R.layout.all_apps_empty_search,
parent, false));
case VIEW_TYPE_ALL_APPS_DIVIDER:
case VIEW_TYPE_ALL_APPS_DIVIDER, VIEW_TYPE_PRIVATE_SPACE_SYS_APPS_DIVIDER:
return new ViewHolder(mLayoutInflater.inflate(
R.layout.all_apps_divider, parent, false));
R.layout.private_space_divider, parent, false));
case VIEW_TYPE_WORK_EDU_CARD:
return new ViewHolder(mLayoutInflater.inflate(
R.layout.work_apps_edu, parent, false));
@@ -282,6 +291,11 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
new SectionDecorationInfo(mActivityContext, roundRegions,
false /* decorateTogether */);
break;
case VIEW_TYPE_PRIVATE_SPACE_SYS_APPS_DIVIDER:
adapterItem = mApps.getAdapterItems().get(position);
adapterItem.decorationInfo = new SectionDecorationInfo(mActivityContext,
ROUND_NOTHING, true /* decorateTogether */);
break;
case VIEW_TYPE_ALL_APPS_DIVIDER:
case VIEW_TYPE_WORK_DISABLED_CARD:
// nothing to do