diff --git a/res/drawable/ic_corp.xml b/res/drawable/ic_corp.xml new file mode 100644 index 0000000000..48f50076c9 --- /dev/null +++ b/res/drawable/ic_corp.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/res/layout/work_tab_footer.xml b/res/layout/work_tab_footer.xml new file mode 100644 index 0000000000..48578d799a --- /dev/null +++ b/res/layout/work_tab_footer.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index b44a31e40d..42fee80928 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -40,4 +40,6 @@ #E5E5E5 #9AA0A6 + + #FF6D00 diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 266e0b0ad1..e7f45c22f8 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -94,6 +94,8 @@ 2dp 36dp 17dp + 16dp + 20dp 3dp diff --git a/res/values/strings.xml b/res/values/strings.xml index fdd4d8d4d8..cbba9a2270 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -324,4 +324,7 @@ Work + + Work profile + diff --git a/res/values/styles.xml b/res/values/styles.xml index 8cc4743a32..c714841828 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -168,4 +168,8 @@ #DFE1E5 @color/all_apps_bg_hand_fill_dark + + diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 2bb95cb50f..72ad69bcc8 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -120,8 +120,8 @@ public class AllAppsContainerView extends RelativeLayout implements DragSource, addView(mTouchFeedbackView, size, size); mAH = new AdapterHolder[2]; - mAH[AdapterHolder.MAIN] = new AdapterHolder(); - mAH[AdapterHolder.WORK] = new AdapterHolder(); + mAH[AdapterHolder.MAIN] = new AdapterHolder(false /* isWork */); + mAH[AdapterHolder.WORK] = new AdapterHolder(true /* isWork */); } @Override @@ -627,8 +627,8 @@ public class AllAppsContainerView extends RelativeLayout implements DragSource, AllAppsRecyclerView recyclerView; boolean verticalFadingEdge; - AdapterHolder() { - appsList = new AlphabeticalAppsList(mLauncher, mComponentToAppMap); + AdapterHolder(boolean isWork) { + appsList = new AlphabeticalAppsList(mLauncher, mComponentToAppMap, isWork); adapter = new AllAppsGridAdapter(mLauncher, appsList, mLauncher, AllAppsContainerView.this, true); appsList.setAdapter(adapter); diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index ac8d367157..da4d9f0cc2 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -18,6 +18,7 @@ package com.android.launcher3.allapps; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.os.UserHandle; import android.support.animation.DynamicAnimation; import android.support.animation.SpringAnimation; import android.support.v4.view.accessibility.AccessibilityEventCompat; @@ -32,6 +33,7 @@ import android.view.View.OnFocusChangeListener; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; +import android.widget.Switch; import android.widget.TextView; import com.android.launcher3.AppInfo; @@ -41,6 +43,7 @@ import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AlphabeticalAppsList.AdapterItem; import com.android.launcher3.anim.SpringAnimationHandler; +import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.discovery.AppDiscoveryAppInfo; import com.android.launcher3.discovery.AppDiscoveryItemView; @@ -68,14 +71,15 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter userProfiles = userManager.getUserProfiles(); + for (UserHandle userProfile : userProfiles) { + if (userManager.isQuietModeEnabled(userProfile)) { + return true; + } + } + return false; + } } diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index 09357f786d..5789b67b3b 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -143,7 +143,7 @@ public class AllAppsRecyclerView extends BaseRecyclerView implements LogContaine RecyclerView.RecycledViewPool pool = getRecycledViewPool(); int approxRows = (int) Math.ceil(grid.availableHeightPx / grid.allAppsIconSizePx); pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_EMPTY_SEARCH, 1); - pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET_DIVIDER, 1); + pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_ALL_APPS_DIVIDER, 1); pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET, 1); pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_ICON, approxRows * mNumAppsPerRow); pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_PREDICTION_ICON, mNumAppsPerRow); @@ -167,7 +167,7 @@ public class AllAppsRecyclerView extends BaseRecyclerView implements LogContaine putSameHeightFor(adapter, widthMeasureSpec, heightMeasureSpec, AllAppsGridAdapter.VIEW_TYPE_PREDICTION_DIVIDER, - AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET_DIVIDER); + AllAppsGridAdapter.VIEW_TYPE_ALL_APPS_DIVIDER); putSameHeightFor(adapter, widthMeasureSpec, heightMeasureSpec, AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET); putSameHeightFor(adapter, widthMeasureSpec, heightMeasureSpec, diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java index 7cf2d9564d..12715cba2d 100644 --- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java +++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java @@ -140,9 +140,9 @@ public class AlphabeticalAppsList { return item; } - public static AdapterItem asMarketDivider(int pos) { + public static AdapterItem asAllAppsDivider(int pos) { AdapterItem item = new AdapterItem(); - item.viewType = AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET_DIVIDER; + item.viewType = AllAppsGridAdapter.VIEW_TYPE_ALL_APPS_DIVIDER; item.position = pos; return item; } @@ -160,6 +160,13 @@ public class AlphabeticalAppsList { item.position = pos; return item; } + + public static AdapterItem asWorkTabFooter(int pos) { + AdapterItem item = new AdapterItem(); + item.viewType = AllAppsGridAdapter.VIEW_TYPE_WORK_TAB_FOOTER; + item.position = pos; + return item; + } } private final Launcher mLauncher; @@ -179,6 +186,8 @@ public class AlphabeticalAppsList { // The set of predicted apps resolved from the component names and the current set of apps private final List mPredictedApps = new ArrayList<>(); private final List mDiscoveredApps = new ArrayList<>(); + // Is it the work profile app list. + private final boolean mIsWork; // The of ordered component names as a result of a search query private ArrayList mSearchResults; @@ -191,11 +200,16 @@ public class AlphabeticalAppsList { private int mNumAppRowsInAdapter; private ItemInfoMatcher mItemFilter; - public AlphabeticalAppsList(Context context, HashMap componentToAppMap) { + public AlphabeticalAppsList( + Context context, + HashMap componentToAppMap, + boolean isWork) { mComponentToAppMap = componentToAppMap; mLauncher = Launcher.getLauncher(context); mIndexer = new AlphabeticIndexCompat(context); mAppNameComparator = new AppInfoComparator(context); + mIsWork = isWork; } public void updateItemFilter(ItemInfoMatcher itemFilter) { @@ -545,7 +559,7 @@ public class AlphabeticalAppsList { if (hasNoFilteredResults()) { mAdapterItems.add(AdapterItem.asEmptySearch(position++)); } else { - mAdapterItems.add(AdapterItem.asMarketDivider(position++)); + mAdapterItems.add(AdapterItem.asAllAppsDivider(position++)); } mAdapterItems.add(AdapterItem.asMarketSearch(position++)); } @@ -604,6 +618,12 @@ public class AlphabeticalAppsList { break; } } + + // Add the work profile footer if required. + if (mIsWork) { + mAdapterItems.add(AdapterItem.asAllAppsDivider(position++)); + mAdapterItems.add(AdapterItem.asWorkTabFooter(position++)); + } } public boolean isAppDiscoveryRunning() {