diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index d5e8351a23..bd71a9feb6 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -289,6 +289,7 @@ 72dp + 150dp 48dp 24dp 40dp diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java index 5e670d2946..e46e11b164 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java @@ -199,13 +199,6 @@ public class TaskbarModelCallbacks implements hotseatItemInfos = mControllers.taskbarRecentAppsController .updateHotseatItemInfos(hotseatItemInfos); mContainer.updateHotseatItems(hotseatItemInfos); - - final boolean finalIsHotseatEmpty = isHotseatEmpty; - mControllers.runAfterInit(() -> { - mControllers.taskbarStashController.updateStateForFlag( - TaskbarStashController.FLAG_STASHED_IN_APP_EMPTY, finalIsHotseatEmpty); - mControllers.taskbarStashController.applyState(); - }); } @Override diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index c95535ba4d..2f69b07456 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -72,21 +72,20 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba public static final int FLAG_IN_APP = 1 << 0; public static final int FLAG_STASHED_IN_APP_MANUAL = 1 << 1; // long press, persisted public static final int FLAG_STASHED_IN_SYSUI_STATE = 1 << 2; // app pinning, keyguard, etc. - public static final int FLAG_STASHED_IN_APP_EMPTY = 1 << 3; // no hotseat icons - public static final int FLAG_STASHED_IN_APP_SETUP = 1 << 4; // setup wizard and AllSetActivity - public static final int FLAG_STASHED_IN_APP_IME = 1 << 5; // IME is visible - public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 6; - public static final int FLAG_STASHED_IN_TASKBAR_ALL_APPS = 1 << 7; // All apps is visible. - public static final int FLAG_IN_SETUP = 1 << 8; // In the Setup Wizard - public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 9; // phone screen gesture nav, stashed - public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 10; // Autohide (transient taskbar). + public static final int FLAG_STASHED_IN_APP_SETUP = 1 << 3; // setup wizard and AllSetActivity + public static final int FLAG_STASHED_IN_APP_IME = 1 << 4; // IME is visible + public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 5; + public static final int FLAG_STASHED_IN_TASKBAR_ALL_APPS = 1 << 6; // All apps is visible. + public static final int FLAG_IN_SETUP = 1 << 7; // In the Setup Wizard + public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 8; // phone screen gesture nav, stashed + public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 9; // Autohide (transient taskbar). // If any of these flags are enabled, isInApp should return true. private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP; // If we're in an app and any of these flags are enabled, taskbar should be stashed. private static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL - | FLAG_STASHED_IN_SYSUI_STATE | FLAG_STASHED_IN_APP_EMPTY | FLAG_STASHED_IN_APP_SETUP + | FLAG_STASHED_IN_SYSUI_STATE | FLAG_STASHED_IN_APP_SETUP | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_TASKBAR_ALL_APPS | FLAG_STASHED_SMALL_SCREEN | FLAG_STASHED_IN_APP_AUTO; @@ -932,7 +931,6 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba appendFlag(sj, flags, FLAGS_IN_APP, "FLAG_IN_APP"); appendFlag(sj, flags, FLAG_STASHED_IN_APP_MANUAL, "FLAG_STASHED_IN_APP_MANUAL"); appendFlag(sj, flags, FLAG_STASHED_IN_SYSUI_STATE, "FLAG_STASHED_IN_SYSUI_STATE"); - appendFlag(sj, flags, FLAG_STASHED_IN_APP_EMPTY, "FLAG_STASHED_IN_APP_EMPTY"); appendFlag(sj, flags, FLAG_STASHED_IN_APP_SETUP, "FLAG_STASHED_IN_APP_SETUP"); appendFlag(sj, flags, FLAG_STASHED_IN_APP_IME, "FLAG_STASHED_IN_APP_IME"); appendFlag(sj, flags, FLAG_IN_STASHED_LAUNCHER_STATE, "FLAG_IN_STASHED_LAUNCHER_STATE"); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java index 38351a991d..eddc278ddd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java @@ -88,6 +88,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar private View mQsb; + private float mTransientTaskbarMinWidth; + public TaskbarView(@NonNull Context context) { this(context, null); } @@ -108,6 +110,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar mIconLayoutBounds = mActivityContext.getTransientTaskbarBounds(); Resources resources = getResources(); mIsRtl = Utilities.isRtl(resources); + mTransientTaskbarMinWidth = mContext.getResources().getDimension( + R.dimen.transient_taskbar_min_width); int actualMargin = resources.getDimensionPixelSize(R.dimen.taskbar_icon_spacing); int actualIconSize = mActivityContext.getDeviceProfile().iconSizePx; @@ -124,11 +128,9 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar mThemeIconsBackground = calculateThemeIconsBackground(); - if (FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get() - && !mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) { + if (!mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) { mAllAppsButton = (IconButtonView) LayoutInflater.from(context) .inflate(R.layout.taskbar_all_apps_button, this, false); - mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding); mAllAppsButton.setScaleX(mIsRtl ? -1 : 1); mAllAppsButton.setForegroundTint(mActivityContext.getColor( DisplayController.isTransientTaskbar(mActivityContext) @@ -277,7 +279,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar if (mAllAppsButton != null) { addView(mAllAppsButton, mIsRtl ? getChildCount() : 0); - if (mTaskbarDivider != null) { + // if only all apps button present, don't include divider view. + if (mTaskbarDivider != null && getChildCount() > 1) { addView(mTaskbarDivider, mIsRtl ? (getChildCount() - 1) : 1); } } @@ -319,6 +322,11 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar int count = getChildCount(); DeviceProfile deviceProfile = mActivityContext.getDeviceProfile(); int spaceNeeded = getIconLayoutWidth(); + // We are removing the margin from taskbar divider item in taskbar, + // so remove it from spacing also. + if (FeatureFlags.ENABLE_TASKBAR_PINNING.get() && count > 1) { + spaceNeeded -= mIconTouchSize; + } int navSpaceNeeded = deviceProfile.hotseatBarEndOffset; boolean layoutRtl = isLayoutRtl(); int iconEnd = right - (right - left - spaceNeeded) / 2; @@ -362,7 +370,15 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar iconEnd = iconStart - mItemMarginLeftRight; } } + mIconLayoutBounds.left = iconEnd; + + if (mIconLayoutBounds.right - mIconLayoutBounds.left < mTransientTaskbarMinWidth) { + int center = mIconLayoutBounds.centerX(); + int distanceFromCenter = (int) mTransientTaskbarMinWidth / 2; + mIconLayoutBounds.right = center + distanceFromCenter; + mIconLayoutBounds.left = center - distanceFromCenter; + } } @Override @@ -519,6 +535,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar /** * Finds the first icon to match one of the given matchers, from highest to lowest priority. + * * @return The first match, or All Apps button if no match was found. */ public View getFirstMatch(Predicate... matchers) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 9824fe0c65..6252e60dca 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -380,8 +380,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar for (int i = 0; i < mTaskbarView.getChildCount(); i++) { View child = mTaskbarView.getChildAt(i); int positionInHotseat; - boolean isAllAppsButton = FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get() - && child == mTaskbarView.getAllAppsButtonView(); + boolean isAllAppsButton = child == mTaskbarView.getAllAppsButtonView(); if (!mIsHotseatIconOnTopWhenAligned) { // When going to home, the EMPHASIZED interpolator in TaskbarLauncherStateController // plays iconAlignment to 1 really fast, therefore moving the fading towards the end @@ -630,7 +629,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar } public static final FloatProperty ICON_TRANSLATE_X = - new FloatProperty("taskbarAligmentTranslateX") { + new FloatProperty("taskbarAlignmentTranslateX") { @Override public void setValue(View view, float v) { diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java index 7a34869e2a..4a95a8f718 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java @@ -20,7 +20,6 @@ import androidx.annotation.VisibleForTesting; import com.android.launcher3.R; import com.android.launcher3.appprediction.PredictionRowView; -import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.taskbar.TaskbarControllers; @@ -54,9 +53,6 @@ public final class TaskbarAllAppsController { /** Initialize the controller. */ public void init(TaskbarControllers controllers, boolean allAppsVisible) { - if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) { - return; - } mControllers = controllers; /* @@ -70,10 +66,6 @@ public final class TaskbarAllAppsController { /** Updates the current {@link AppInfo} instances. */ public void setApps(AppInfo[] apps, int flags) { - if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) { - return; - } - mApps = apps; mAppsModelFlags = flags; if (mAppsView != null) { @@ -91,10 +83,6 @@ public final class TaskbarAllAppsController { /** Updates the current predictions. */ public void setPredictedApps(List predictedApps) { - if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) { - return; - } - mPredictedApps = predictedApps; if (mAppsView != null) { mAppsView.getFloatingHeaderView() diff --git a/res/drawable/ic_all_apps_button.xml b/res/drawable/ic_all_apps_button.xml index 4f0b6a8fbf..47f2a5d73a 100644 --- a/res/drawable/ic_all_apps_button.xml +++ b/res/drawable/ic_all_apps_button.xml @@ -1,5 +1,5 @@ - - - - - - - - - - - - - + android:width="52dp" + android:height="52dp" + android:viewportWidth="52" + android:viewportHeight="52"> + + + + + + + + + diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 7b0033d18f..c89a461824 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -230,10 +230,6 @@ public final class FeatureFlags { "ENABLE_ICON_LABEL_AUTO_SCALING", true, "Enables scaling/spacing for icon labels to make more characters visible"); - public static final BooleanFlag ENABLE_ALL_APPS_IN_TASKBAR = getDebugFlag( - "ENABLE_ALL_APPS_IN_TASKBAR", true, - "Enables accessing All Apps from the system Taskbar."); - public static final BooleanFlag ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT = getDebugFlag( "ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT", false, "Enables displaying the all apps button in the hotseat.");