diff options
author | Winson Chung <winsonc@google.com> | 2019-03-11 16:23:45 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2019-03-26 14:52:10 -0700 |
commit | f25461c337c9883d180479557ba5592115a5384e (patch) | |
tree | c9a32753b47fe3234c9d3d79870c92f327de46e1 /quickstep/src | |
parent | 4397d8d5ea53e4b31d6e445ec048bc21ad87a560 (diff) | |
download | android_packages_apps_Trebuchet-f25461c337c9883d180479557ba5592115a5384e.tar.gz android_packages_apps_Trebuchet-f25461c337c9883d180479557ba5592115a5384e.tar.bz2 android_packages_apps_Trebuchet-f25461c337c9883d180479557ba5592115a5384e.zip |
Updating to nav bar mode
Bug: 127366543
Test: Manual
Change-Id: I602539e5d6161c5bf6056bb60679b7ef1f168e3e
(cherry picked from commit 18841823ed24af6ab879382901f4b4dd1cd61ddc)
Diffstat (limited to 'quickstep/src')
3 files changed, 104 insertions, 32 deletions
diff --git a/quickstep/src/com/android/quickstep/NavBarModeOverlayResourceObserver.java b/quickstep/src/com/android/quickstep/NavBarModeOverlayResourceObserver.java new file mode 100644 index 000000000..058b46ffc --- /dev/null +++ b/quickstep/src/com/android/quickstep/NavBarModeOverlayResourceObserver.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.quickstep; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.res.Resources; +import android.util.Log; + +import com.android.systemui.shared.system.QuickStepContract; + +/** + * Observer for the resource config that specifies the navigation bar mode. + */ +public class NavBarModeOverlayResourceObserver extends BroadcastReceiver { + + private static final String TAG = "NavBarModeOverlayResourceObserver"; + + private final String ACTION_OVERLAY_CHANGED = "android.intent.action.OVERLAY_CHANGED"; + private static final String NAV_BAR_INTERACTION_MODE_RES_NAME = + "config_navBarInteractionMode"; + + private final Context mContext; + private final OnChangeListener mOnChangeListener; + + public NavBarModeOverlayResourceObserver(Context context, OnChangeListener listener) { + mContext = context; + mOnChangeListener = listener; + } + + public void register() { + IntentFilter filter = new IntentFilter(ACTION_OVERLAY_CHANGED); + filter.addDataScheme("package"); + mContext.registerReceiver(this, filter); + } + + @Override + public void onReceive(Context context, Intent intent) { + mOnChangeListener.onNavBarModeChanged(getSystemIntegerRes(context, + NAV_BAR_INTERACTION_MODE_RES_NAME)); + } + + public interface OnChangeListener { + void onNavBarModeChanged(int mode); + } + + public static boolean isSwipeUpModeEnabled(Context context) { + return QuickStepContract.isSwipeUpMode(getSystemIntegerRes(context, + NAV_BAR_INTERACTION_MODE_RES_NAME)); + } + + public static boolean isEdgeToEdgeModeEnabled(Context context) { + return QuickStepContract.isGesturalMode(getSystemIntegerRes(context, + NAV_BAR_INTERACTION_MODE_RES_NAME)); + } + + private static int getSystemIntegerRes(Context context, String resName) { + Resources res = context.getResources(); + int resId = res.getIdentifier(resName, "integer", "android"); + + if (resId != 0) { + return res.getInteger(resId); + } else { + Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?"); + return -1; + } + } +} diff --git a/quickstep/src/com/android/quickstep/OverviewInteractionState.java b/quickstep/src/com/android/quickstep/OverviewInteractionState.java index a0ab30141..903701de3 100644 --- a/quickstep/src/com/android/quickstep/OverviewInteractionState.java +++ b/quickstep/src/com/android/quickstep/OverviewInteractionState.java @@ -15,7 +15,6 @@ */ package com.android.quickstep; -import static com.android.quickstep.SwipeUpSetting.newSwipeUpSettingsObserver; import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_DISABLE_QUICK_SCRUB; import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_DISABLE_SWIPE_UP; import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_SHOW_OVERVIEW_BUTTON; @@ -28,10 +27,11 @@ import android.util.Log; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.DiscoveryBounce; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.MainThreadInitializedObject; -import com.android.launcher3.util.SecureSettingsObserver; import com.android.launcher3.util.UiThreadHelper; import com.android.systemui.shared.recents.ISystemUiProxy; +import com.android.systemui.shared.system.QuickStepContract; import androidx.annotation.WorkerThread; @@ -58,7 +58,8 @@ public class OverviewInteractionState { private static final int MSG_SET_BACK_BUTTON_ALPHA = 201; private static final int MSG_SET_SWIPE_UP_ENABLED = 202; - private final SecureSettingsObserver mSwipeUpSettingObserver; + // TODO: Discriminate between swipe up and edge to edge + private final NavBarModeOverlayResourceObserver mSwipeUpSettingObserver; private final Context mContext; private final Handler mUiHandler; @@ -66,7 +67,7 @@ public class OverviewInteractionState { // These are updated on the background thread private ISystemUiProxy mISystemUiProxy; - private boolean mSwipeUpEnabled = true; + private boolean mSwipeUpEnabled; private float mBackButtonAlpha = 1; private Runnable mOnSwipeUpSettingChangedListener; @@ -80,15 +81,15 @@ public class OverviewInteractionState { mUiHandler = new Handler(this::handleUiMessage); mBgHandler = new Handler(UiThreadHelper.getBackgroundLooper(), this::handleBgMessage); - if (SwipeUpSetting.isSwipeUpSettingAvailable()) { - mSwipeUpSettingObserver = - newSwipeUpSettingsObserver(context, this::notifySwipeUpSettingChanged); + mSwipeUpEnabled = NavBarModeOverlayResourceObserver.isSwipeUpModeEnabled(mContext) + || NavBarModeOverlayResourceObserver.isEdgeToEdgeModeEnabled(mContext); + if (SwipeUpSetting.isSystemNavigationSettingAvailable()) { + mSwipeUpSettingObserver = new NavBarModeOverlayResourceObserver(context, + this::notifySwipeUpSettingChanged); mSwipeUpSettingObserver.register(); - mSwipeUpEnabled = mSwipeUpSettingObserver.getValue(); resetHomeBounceSeenOnQuickstepEnabledFirstTime(); } else { mSwipeUpSettingObserver = null; - mSwipeUpEnabled = SwipeUpSetting.isSwipeUpEnabledDefaultValue(); } } @@ -175,7 +176,13 @@ public class OverviewInteractionState { } } - private void notifySwipeUpSettingChanged(boolean swipeUpEnabled) { + private void notifySwipeUpSettingChanged(int mode) { + boolean swipeUpEnabled = !QuickStepContract.isLegacyMode(mode); + boolean gesturalEnabled = QuickStepContract.isGesturalMode(mode); + + FeatureFlags.SWIPE_HOME.updateStorage(mContext, gesturalEnabled); + FeatureFlags.ENABLE_ASSISTANT_GESTURE.updateStorage(mContext, gesturalEnabled); + mUiHandler.removeMessages(MSG_SET_SWIPE_UP_ENABLED); mUiHandler.obtainMessage(MSG_SET_SWIPE_UP_ENABLED, swipeUpEnabled ? 1 : 0, 0). sendToTarget(); diff --git a/quickstep/src/com/android/quickstep/SwipeUpSetting.java b/quickstep/src/com/android/quickstep/SwipeUpSetting.java index 381ab9ffd..7f830f93e 100644 --- a/quickstep/src/com/android/quickstep/SwipeUpSetting.java +++ b/quickstep/src/com/android/quickstep/SwipeUpSetting.java @@ -16,23 +16,18 @@ package com.android.quickstep; -import static com.android.systemui.shared.system.SettingsCompat.SWIPE_UP_SETTING_NAME; - -import android.content.Context; import android.content.res.Resources; import android.util.Log; -import com.android.launcher3.util.SecureSettingsObserver; -import com.android.launcher3.util.SecureSettingsObserver.OnChangeListener; - public final class SwipeUpSetting { private static final String TAG = "SwipeUpSetting"; private static final String SWIPE_UP_SETTING_AVAILABLE_RES_NAME = "config_swipe_up_gesture_setting_available"; - private static final String SWIPE_UP_ENABLED_DEFAULT_RES_NAME = - "config_swipe_up_gesture_default"; + public static boolean isSystemNavigationSettingAvailable() { + return getSystemBooleanRes(SWIPE_UP_SETTING_AVAILABLE_RES_NAME); + } private static boolean getSystemBooleanRes(String resName) { Resources res = Resources.getSystem(); @@ -45,18 +40,4 @@ public final class SwipeUpSetting { return false; } } - - public static boolean isSwipeUpSettingAvailable() { - return getSystemBooleanRes(SWIPE_UP_SETTING_AVAILABLE_RES_NAME); - } - - public static boolean isSwipeUpEnabledDefaultValue() { - return getSystemBooleanRes(SWIPE_UP_ENABLED_DEFAULT_RES_NAME); - } - - public static SecureSettingsObserver newSwipeUpSettingsObserver(Context context, - OnChangeListener listener) { - return new SecureSettingsObserver(context.getContentResolver(), listener, - SWIPE_UP_SETTING_NAME, isSwipeUpEnabledDefaultValue() ? 1 : 0); - } } |