From 4403d078a6a4e071066577e414b1bf33fdc2d74e Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 4 Mar 2022 10:49:01 -0800 Subject: [PATCH] Moving NavigationMode to display controller Navigation mode affects display properties like bounds and most listeners already had a similar display listener. This will remove race conditions when managing the two events. Bug: 221961069 Test: Presubmit Change-Id: If7a22e006e6b969ecddf075001066809aa72995c --- .../launcher3/BaseQuickstepLauncher.java | 41 ++-- .../statehandlers/BackButtonAlphaHandler.java | 6 +- .../taskbar/TaskbarActivityContext.java | 21 +- .../launcher3/taskbar/TaskbarManager.java | 20 +- .../launcher3/uioverrides/ApiWrapper.java | 6 +- .../uioverrides/QuickstepLauncher.java | 6 +- .../uioverrides/states/OverviewState.java | 4 +- .../QuickstepAtomicAnimationFactory.java | 6 +- .../QuickSwitchTouchController.java | 6 +- .../TaskViewTouchController.java | 4 +- .../quickstep/BaseActivityInterface.java | 11 +- .../quickstep/FallbackActivityInterface.java | 6 +- .../quickstep/FallbackSwipeHandler.java | 3 +- .../quickstep/LauncherActivityInterface.java | 6 +- .../OrientationTouchTransformer.java | 15 +- .../RecentsAnimationDeviceState.java | 72 +++---- .../quickstep/RotationTouchHelper.java | 106 +++++----- .../quickstep/SysUINavigationMode.java | 195 ------------------ .../com/android/quickstep/SystemUiProxy.java | 16 +- .../quickstep/TouchInteractionService.java | 9 +- .../FallbackNavBarTouchController.java | 6 +- .../interaction/NavBarGestureHandler.java | 4 +- .../logging/SettingsChangeLogger.java | 24 ++- .../android/quickstep/util/LayoutUtils.java | 5 +- .../quickstep/util/NavBarPosition.java | 10 +- .../util/QuickstepOnboardingPrefs.java | 10 +- .../quickstep/views/OverviewActionsView.java | 28 ++- .../quickstep/NavigationModeSwitchRule.java | 17 +- .../OrientationTouchTransformerTest.java | 2 +- .../quickstep/util/TaskViewSimulatorTest.java | 2 - .../launcher3/util/DisplayController.java | 112 ++++++++-- 31 files changed, 317 insertions(+), 462 deletions(-) delete mode 100644 quickstep/src/com/android/quickstep/SysUINavigationMode.java diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 7083180250..8fb085dd16 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -25,10 +25,11 @@ import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSP import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID; import static com.android.launcher3.popup.QuickstepSystemShortcut.getSplitSelectShortcutByPosition; import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN; +import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE; +import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON; +import static com.android.launcher3.util.DisplayController.NavigationMode.TWO_BUTTONS; import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; -import static com.android.quickstep.SysUINavigationMode.Mode.NO_BUTTON; -import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import android.animation.AnimatorSet; @@ -65,6 +66,7 @@ import com.android.launcher3.taskbar.TaskbarManager; import com.android.launcher3.uioverrides.RecentsViewStateController; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.ObjectWrapper; import com.android.launcher3.util.RunnableList; @@ -72,9 +74,6 @@ import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption; import com.android.launcher3.util.UiThreadHelper; import com.android.quickstep.OverviewCommandHelper; import com.android.quickstep.RecentsModel; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; -import com.android.quickstep.SysUINavigationMode.NavigationModeChangeListener; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; import com.android.quickstep.TouchInteractionService.TISBinder; @@ -102,8 +101,7 @@ import java.util.stream.Stream; /** * Extension of Launcher activity to provide quickstep specific functionality */ -public abstract class BaseQuickstepLauncher extends Launcher - implements NavigationModeChangeListener { +public abstract class BaseQuickstepLauncher extends Launcher { private DepthController mDepthController = new DepthController(this); private QuickstepTransitionManager mAppTransitionManager; @@ -131,7 +129,6 @@ public abstract class BaseQuickstepLauncher extends Launcher @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - SysUINavigationMode.INSTANCE.get(this).addModeChangeListener(this); addMultiWindowModeChangedListener(mDepthController); initUnfoldTransitionProgressProvider(); } @@ -161,8 +158,6 @@ public abstract class BaseQuickstepLauncher extends Launcher mUnfoldTransitionProgressProvider.destroy(); } - SysUINavigationMode.INSTANCE.get(this).removeModeChangeListener(this); - mTISBindHelper.onDestroy(); if (mTaskbarManager != null) { mTaskbarManager.clearActivity(this); @@ -188,14 +183,6 @@ public abstract class BaseQuickstepLauncher extends Launcher return mAppTransitionManager; } - @Override - public void onNavigationModeChanged(Mode newMode) { - getDragLayer().recreateControllers(); - if (mActionsView != null) { - mActionsView.updateVerticalMargin(newMode); - } - } - @Override public void onEnterAnimationComplete() { super.onEnterAnimationComplete(); @@ -305,7 +292,6 @@ public abstract class BaseQuickstepLauncher extends Launcher protected void setupViews() { super.setupViews(); - SysUINavigationMode.INSTANCE.get(this).updateMode(); mActionsView = findViewById(R.id.overview_actions_view); RecentsView overviewPanel = (RecentsView) getOverviewPanel(); SplitSelectStateController controller = @@ -313,7 +299,7 @@ public abstract class BaseQuickstepLauncher extends Launcher getStateManager(), getDepthController()); overviewPanel.init(mActionsView, controller); mActionsView.setDp(getDeviceProfile()); - mActionsView.updateVerticalMargin(SysUINavigationMode.getMode(this)); + mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this)); mAppTransitionManager = new QuickstepTransitionManager(this); mAppTransitionManager.registerRemoteAnimations(); @@ -434,7 +420,7 @@ public abstract class BaseQuickstepLauncher extends Launcher @Override public float[] getNormalOverviewScaleAndOffset() { - return SysUINavigationMode.getMode(this).hasGestures + return DisplayController.getNavigationMode(this).hasGestures ? new float[] {1, 1} : new float[] {1.1f, NO_OFFSET}; } @@ -464,7 +450,7 @@ public abstract class BaseQuickstepLauncher extends Launcher } public boolean shouldBackButtonBeHidden(LauncherState toState) { - Mode mode = SysUINavigationMode.getMode(this); + NavigationMode mode = DisplayController.getNavigationMode(this); boolean shouldBackButtonBeHidden = mode.hasGestures && toState.hasFlag(FLAG_HIDE_BACK_BUTTON) && hasWindowFocus() @@ -482,7 +468,7 @@ public abstract class BaseQuickstepLauncher extends Launcher */ private void onLauncherStateOrFocusChanged() { boolean shouldBackButtonBeHidden = shouldBackButtonBeHidden(getStateManager().getState()); - if (SysUINavigationMode.getMode(this) == TWO_BUTTONS) { + if (DisplayController.getNavigationMode(this) == TWO_BUTTONS) { UiThreadHelper.setBackButtonAlphaAsync(this, SET_BACK_BUTTON_ALPHA, shouldBackButtonBeHidden ? 0f : 1f, true /* animate */); } @@ -612,6 +598,13 @@ public abstract class BaseQuickstepLauncher extends Launcher if ((flags & CHANGE_ACTIVE_SCREEN) != 0) { getStateManager().moveToRestState(); } + + if ((flags & CHANGE_NAVIGATION_MODE) != 0) { + getDragLayer().recreateControllers(); + if (mActionsView != null) { + mActionsView.updateVerticalMargin(info.navigationMode); + } + } } @Override @@ -627,7 +620,7 @@ public abstract class BaseQuickstepLauncher extends Launcher WindowInsets oldInsets) { // Override the tappable insets to be 0 on the bottom for gesture nav (otherwise taskbar // would count towards it). This is used for the bottom protection in All Apps for example. - if (SysUINavigationMode.getMode(this) == NO_BUTTON) { + if (DisplayController.getNavigationMode(this) == NO_BUTTON) { Insets oldTappableInsets = oldInsets.getInsets(WindowInsets.Type.tappableElement()); Insets newTappableInsets = Insets.of(oldTappableInsets.left, oldTappableInsets.top, oldTappableInsets.right, 0); diff --git a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java b/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java index 1f268cc9d9..07d3a51603 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java +++ b/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java @@ -17,17 +17,17 @@ package com.android.launcher3.statehandlers; import static com.android.launcher3.anim.Interpolators.LINEAR; +import static com.android.launcher3.util.DisplayController.NavigationMode.TWO_BUTTONS; import static com.android.quickstep.AnimatedFloat.VALUE; -import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.LauncherState; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.statemanager.StateManager.StateHandler; import com.android.launcher3.states.StateAnimationConfig; +import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.UiThreadHelper; import com.android.quickstep.AnimatedFloat; -import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SystemUiProxy; /** @@ -48,7 +48,7 @@ public class BackButtonAlphaHandler implements StateHandler { @Override public void setStateWithAnimation(LauncherState toState, StateAnimationConfig config, PendingAnimation animation) { - if (SysUINavigationMode.getMode(mLauncher) != TWO_BUTTONS) { + if (DisplayController.getNavigationMode(mLauncher) != TWO_BUTTONS) { return; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index fa0a60684f..e949b23b57 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -22,6 +22,7 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static com.android.launcher3.AbstractFloatingView.TYPE_ALL; +import static com.android.launcher3.ResourceUtils.getBoolByName; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; @@ -70,13 +71,13 @@ import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.popup.PopupDataProvider; import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController; import com.android.launcher3.touch.ItemClickHandler; +import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.TraceHelper; import com.android.launcher3.util.ViewCache; import com.android.launcher3.views.ActivityContext; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.rotation.RotationButtonController; import com.android.systemui.shared.system.ActivityManagerWrapper; @@ -92,6 +93,8 @@ import java.io.PrintWriter; */ public class TaskbarActivityContext extends BaseTaskbarContext { + private static final String IME_DRAWS_IME_NAV_BAR_RES_NAME = "config_imeDrawsImeNavBar"; + private static final boolean ENABLE_THREE_BUTTON_TASKBAR = SystemProperties.getBoolean("persist.debug.taskbar_three_button", false); private static final String TAG = "TaskbarActivityContext"; @@ -109,7 +112,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { // The size we should return to when we call setTaskbarWindowFullscreen(false) private int mLastRequestedNonFullscreenHeight; - private final SysUINavigationMode.Mode mNavMode; + private final NavigationMode mNavMode; private final boolean mImeDrawsImeNavBar; private final ViewCache mViewCache = new ViewCache(); @@ -130,8 +133,10 @@ public class TaskbarActivityContext extends BaseTaskbarContext { super(windowContext); mDeviceProfile = dp; - mNavMode = SysUINavigationMode.getMode(windowContext); - mImeDrawsImeNavBar = SysUINavigationMode.getImeDrawsImeNavBar(windowContext); + final Resources resources = getResources(); + + mNavMode = DisplayController.getNavigationMode(windowContext); + mImeDrawsImeNavBar = getBoolByName(IME_DRAWS_IME_NAV_BAR_RES_NAME, resources, false); mIsSafeModeEnabled = TraceHelper.allowIpcs("isSafeMode", () -> getPackageManager().isSafeMode()); mIsUserSetupComplete = SettingsCache.INSTANCE.get(this).getValue( @@ -141,9 +146,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mIsNavBarKidsMode = SettingsCache.INSTANCE.get(this).getValue( Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE), 0); - final Resources resources = getResources(); updateIconSize(resources); - mTaskbarHeightForIme = resources.getDimensionPixelSize(R.dimen.taskbar_ime_size); // Inflate views. @@ -258,11 +261,11 @@ public class TaskbarActivityContext extends BaseTaskbarContext { } public boolean isThreeButtonNav() { - return mNavMode == Mode.THREE_BUTTONS; + return mNavMode == NavigationMode.THREE_BUTTONS; } public boolean isGestureNav() { - return mNavMode == Mode.NO_BUTTON; + return mNavMode == NavigationMode.NO_BUTTON; } public boolean imeDrawsImeNavBar() { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 0f7abda714..cc462c1bf1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN; import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY; +import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE; import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS; import android.content.ComponentCallbacks; @@ -40,15 +41,12 @@ import androidx.annotation.Nullable; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherAppState; -import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.statemanager.StatefulActivity; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.Info; import com.android.launcher3.util.SettingsCache; import com.android.launcher3.util.SimpleBroadcastReceiver; import com.android.quickstep.RecentsActivity; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TouchInteractionService; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; @@ -59,8 +57,7 @@ import java.io.PrintWriter; /** * Class to manage taskbar lifecycle */ -public class TaskbarManager implements DisplayController.DisplayInfoChangeListener, - SysUINavigationMode.NavigationModeChangeListener { +public class TaskbarManager implements DisplayController.DisplayInfoChangeListener { private static final Uri USER_SETUP_COMPLETE_URI = Settings.Secure.getUriFor( Settings.Secure.USER_SETUP_COMPLETE); @@ -70,7 +67,6 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen private final Context mContext; private final DisplayController mDisplayController; - private final SysUINavigationMode mSysUINavigationMode; private final TaskbarNavButtonController mNavButtonController; private final SettingsCache.OnChangeListener mUserSetupCompleteListener; private final SettingsCache.OnChangeListener mNavBarKidsModeListener; @@ -89,14 +85,13 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen */ private final TaskbarSharedState mSharedState = new TaskbarSharedState(); - private static final int CHANGE_FLAGS = - CHANGE_ACTIVE_SCREEN | CHANGE_DENSITY | CHANGE_SUPPORTED_BOUNDS; + private static final int CHANGE_FLAGS = CHANGE_ACTIVE_SCREEN | CHANGE_DENSITY + | CHANGE_SUPPORTED_BOUNDS | CHANGE_NAVIGATION_MODE; private boolean mUserUnlocked = false; public TaskbarManager(TouchInteractionService service) { mDisplayController = DisplayController.INSTANCE.get(service); - mSysUINavigationMode = SysUINavigationMode.INSTANCE.get(service); Display display = service.getSystemService(DisplayManager.class).getDisplay(DEFAULT_DISPLAY); mContext = service.createWindowContext(display, TYPE_NAVIGATION_BAR_PANEL, null); @@ -137,7 +132,6 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen mShutdownReceiver = new SimpleBroadcastReceiver(i -> destroyExistingTaskbar()); mDisplayController.addChangeListener(this); - mSysUINavigationMode.addModeChangeListener(this); SettingsCache.INSTANCE.get(mContext).register(USER_SETUP_COMPLETE_URI, mUserSetupCompleteListener); SettingsCache.INSTANCE.get(mContext).register(NAV_BAR_KIDS_MODE, @@ -148,11 +142,6 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen recreateTaskbar(); } - @Override - public void onNavigationModeChanged(Mode newMode) { - recreateTaskbar(); - } - @Override public void onDisplayInfoChanged(Context context, Info info, int flags) { if ((flags & CHANGE_FLAGS) != 0) { @@ -301,7 +290,6 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen public void destroy() { destroyExistingTaskbar(); mDisplayController.removeChangeListener(this); - mSysUINavigationMode.removeModeChangeListener(this); SettingsCache.INSTANCE.get(mContext).unregister(USER_SETUP_COMPLETE_URI, mUserSetupCompleteListener); SettingsCache.INSTANCE.get(mContext).unregister(NAV_BAR_KIDS_MODE, diff --git a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java index aa26645eb9..9240fb86a7 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java +++ b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java @@ -24,8 +24,8 @@ import android.view.Display; import com.android.launcher3.R; import com.android.launcher3.Utilities; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; +import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; public class ApiWrapper { @@ -54,7 +54,7 @@ public class ApiWrapper { * Returns the minimum space that should be left empty at the end of hotseat */ public static int getHotseatEndOffset(Context context) { - if (SysUINavigationMode.INSTANCE.get(context).getMode() == Mode.THREE_BUTTONS) { + if (DisplayController.getNavigationMode(context) == NavigationMode.THREE_BUTTONS) { Resources res = context.getResources(); /* * 3 nav buttons + diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 1073d766f1..829accc55b 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -68,14 +68,14 @@ import com.android.launcher3.uioverrides.touchcontrollers.StatusBarTouchControll import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController; import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController; import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController; +import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; import com.android.launcher3.util.ItemInfoMatcher; import com.android.launcher3.util.PendingRequestArgs; import com.android.launcher3.util.TouchController; import com.android.launcher3.util.UiThreadHelper; import com.android.launcher3.util.UiThreadHelper.AsyncCommand; import com.android.launcher3.widget.LauncherAppWidgetHost; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; import com.android.quickstep.util.QuickstepOnboardingPrefs; @@ -303,7 +303,7 @@ public class QuickstepLauncher extends BaseQuickstepLauncher { @Override public TouchController[] createTouchControllers() { - Mode mode = SysUINavigationMode.getMode(this); + NavigationMode mode = DisplayController.getNavigationMode(this); ArrayList list = new ArrayList<>(); list.add(getDragController()); diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java index bb133293dd..236454e161 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java @@ -26,8 +26,8 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.R; +import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Themes; -import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.util.LayoutUtils; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; @@ -58,7 +58,7 @@ public class OverviewState extends LauncherState { @Override public int getTransitionDuration(Context context) { // In gesture modes, overview comes in all the way from the side, so give it more time. - return SysUINavigationMode.INSTANCE.get(context).getMode().hasGestures ? 380 : 250; + return DisplayController.getNavigationMode(context).hasGestures ? 380 : 250; } @Override diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index bd7e5de866..4d053494af 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -60,7 +60,7 @@ import com.android.launcher3.Workspace; import com.android.launcher3.anim.Interpolators; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.uioverrides.QuickstepLauncher; -import com.android.quickstep.SysUINavigationMode; +import com.android.launcher3.util.DisplayController; import com.android.quickstep.util.RecentsAtomicAnimationFactory; import com.android.quickstep.views.RecentsView; @@ -97,7 +97,7 @@ public class QuickstepAtomicAnimationFactory extends config.setInterpolator(ANIM_WORKSPACE_SCALE, DEACCEL); config.setInterpolator(ANIM_WORKSPACE_FADE, ACCEL); - if (SysUINavigationMode.getMode(mActivity).hasGestures + if (DisplayController.getNavigationMode(mActivity).hasGestures && overview.getTaskViewCount() > 0) { // Overview is going offscreen, so keep it at its current scale and opacity. config.setInterpolator(ANIM_OVERVIEW_SCALE, FINAL_FRAME); @@ -139,7 +139,7 @@ public class QuickstepAtomicAnimationFactory extends } } else if ((fromState == NORMAL || fromState == HINT_STATE || fromState == HINT_STATE_TWO_BUTTON) && toState == OVERVIEW) { - if (SysUINavigationMode.getMode(mActivity).hasGestures) { + if (DisplayController.getNavigationMode(mActivity).hasGestures) { config.setInterpolator(ANIM_WORKSPACE_SCALE, fromState == NORMAL ? ACCEL : OVERSHOOT_1_2); config.setInterpolator(ANIM_WORKSPACE_TRANSLATE, ACCEL); diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java index f0ef9cc2d7..e5cd53abf5 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java @@ -44,8 +44,8 @@ import com.android.launcher3.Utilities; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.touch.AbstractStateChangeTouchController; import com.android.launcher3.touch.SingleAxisSwipeDetector; -import com.android.quickstep.SysUINavigationMode; -import com.android.quickstep.SysUINavigationMode.Mode; +import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; import com.android.quickstep.views.RecentsView; @@ -125,7 +125,7 @@ public class QuickSwitchTouchController extends AbstractStateChangeTouchControll private void setupInterpolators(StateAnimationConfig stateAnimationConfig) { stateAnimationConfig.setInterpolator(ANIM_WORKSPACE_FADE, DEACCEL_2); stateAnimationConfig.setInterpolator(ANIM_ALL_APPS_FADE, DEACCEL_2); - if (SysUINavigationMode.getMode(mLauncher) == Mode.NO_BUTTON) { + if (DisplayController.getNavigationMode(mLauncher) == NavigationMode.NO_BUTTON) { // Overview lives to the left of workspace, so translate down later than over stateAnimationConfig.setInterpolator(ANIM_WORKSPACE_TRANSLATE, ACCEL_2); stateAnimationConfig.setInterpolator(ANIM_VERTICAL_PROGRESS, ACCEL_2); diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java index 308bca62e4..ca7f633bbc 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java @@ -38,10 +38,10 @@ import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.touch.BaseSwipeDetector; import com.android.launcher3.touch.PagedOrientationHandler; import com.android.launcher3.touch.SingleAxisSwipeDetector; +import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.FlingBlockCheck; import com.android.launcher3.util.TouchController; import com.android.launcher3.views.BaseDragLayer; -import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.util.VibratorWrapper; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; @@ -177,7 +177,7 @@ public abstract class TaskViewTouchController // - It's the focused task if in grid view // - The task is snapped mAllowGoingDown = i == mRecentsView.getCurrentPage() - && SysUINavigationMode.getMode(mActivity).hasGestures + && DisplayController.getNavigationMode(mActivity).hasGestures && (!mRecentsView.showAsGrid() || mTaskBeingDragged.isFocusedTask()) && mRecentsView.isTaskInExpectedScrollPosition(i); diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 0f707c0223..d69fb05d27 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -19,9 +19,9 @@ import static com.android.launcher3.LauncherAnimUtils.VIEW_BACKGROUND_COLOR; import static com.android.launcher3.anim.Interpolators.ACCEL_2; import static com.android.launcher3.anim.Interpolators.INSTANT; import static com.android.launcher3.anim.Interpolators.LINEAR; +import static com.android.launcher3.util.DisplayController.getNavigationMode; import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION; import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; -import static com.android.quickstep.SysUINavigationMode.getMode; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM; import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; @@ -55,9 +55,10 @@ import com.android.launcher3.statemanager.BaseState; import com.android.launcher3.statemanager.StatefulActivity; import com.android.launcher3.taskbar.TaskbarUIController; import com.android.launcher3.touch.PagedOrientationHandler; +import com.android.launcher3.util.DisplayController; +import com.android.launcher3.util.DisplayController.NavigationMode; import com.android.launcher3.util.WindowBounds; import com.android.launcher3.views.ScrimView; -import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.util.ActivityInitListener; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.SplitScreenBounds; @@ -356,8 +357,8 @@ public abstract class BaseActivityInterface