Merge "Add flag_navigation_bar_overlay" into sc-dev

This commit is contained in:
Peiyong Lin
2021-02-24 04:47:01 +00:00
committed by Android (Google) Code Review
5 changed files with 37 additions and 12 deletions

View File

@@ -42,4 +42,6 @@
<bool name="flag_lockscreen_animations">false</bool> <bool name="flag_lockscreen_animations">false</bool>
<bool name="flag_toast_style">false</bool> <bool name="flag_toast_style">false</bool>
<bool name="flag_navigation_bar_overlay">false</bool>
</resources> </resources>

View File

@@ -21,6 +21,7 @@ import android.content.Context;
import android.view.View; import android.view.View;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.FeatureFlags;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -31,16 +32,22 @@ import javax.inject.Inject;
public class NavigationBarOverlayController { public class NavigationBarOverlayController {
protected final Context mContext; protected final Context mContext;
protected final FeatureFlags mFeatureFlags;
@Inject @Inject
public NavigationBarOverlayController(Context context) { public NavigationBarOverlayController(Context context, FeatureFlags featureFlags) {
mContext = context; mContext = context;
mFeatureFlags = featureFlags;
} }
public Context getContext() { public Context getContext() {
return mContext; return mContext;
} }
public boolean isNavigationBarOverlayEnabled() {
return mFeatureFlags.isNavigationBarOverlayEnabled();
}
/** /**
* Initialize the controller with visibility change callback and light/dark icon color. * Initialize the controller with visibility change callback and light/dark icon color.
*/ */

View File

@@ -192,6 +192,7 @@ public final class NavigationBarTransitions extends BarTransitions implements
buttonDispatchers.valueAt(i).setDarkIntensity(darkIntensity); buttonDispatchers.valueAt(i).setDarkIntensity(darkIntensity);
} }
mView.getRotationButtonController().setDarkIntensity(darkIntensity); mView.getRotationButtonController().setDarkIntensity(darkIntensity);
Dependency.get(NavigationBarOverlayController.class).setDarkIntensity(darkIntensity); Dependency.get(NavigationBarOverlayController.class).setDarkIntensity(darkIntensity);
for (DarkIntensityListener listener : mDarkIntensityListeners) { for (DarkIntensityListener listener : mDarkIntensityListeners) {
listener.onDarkIntensity(darkIntensity); listener.onDarkIntensity(darkIntensity);

View File

@@ -171,6 +171,7 @@ public class NavigationBarView extends FrameLayout implements
private NotificationPanelViewController mPanelView; private NotificationPanelViewController mPanelView;
private FloatingRotationButton mFloatingRotationButton; private FloatingRotationButton mFloatingRotationButton;
private RotationButtonController mRotationButtonController; private RotationButtonController mRotationButtonController;
private NavigationBarOverlayController mNavBarOverlayController;
/** /**
* Helper that is responsible for showing the right toast when a disallowed activity operation * Helper that is responsible for showing the right toast when a disallowed activity operation
@@ -339,8 +340,11 @@ public class NavigationBarView extends FrameLayout implements
isGesturalMode ? mFloatingRotationButton : rotateSuggestionButton, isGesturalMode ? mFloatingRotationButton : rotateSuggestionButton,
mRotationButtonListener); mRotationButtonListener);
Dependency.get(NavigationBarOverlayController.class).init( mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class);
mNavbarOverlayVisibilityChangeCallback, mLightIconColor, mDarkIconColor); if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
mNavBarOverlayController.init(
mNavbarOverlayVisibilityChangeCallback, mLightIconColor, mDarkIconColor);
}
mConfiguration = new Configuration(); mConfiguration = new Configuration();
mTmpLastConfiguration = new Configuration(); mTmpLastConfiguration = new Configuration();
@@ -431,8 +435,9 @@ public class NavigationBarView extends FrameLayout implements
// The visibility of the navigation bar buttons is dependent on the transient state of // The visibility of the navigation bar buttons is dependent on the transient state of
// the navigation bar. // the navigation bar.
Dependency.get(NavigationBarOverlayController.class).setButtonState( if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
isTransient, /* force */ false); mNavBarOverlayController.setButtonState(isTransient, /* force */ false);
}
} }
void onBarTransition(int newMode) { void onBarTransition(int newMode) {
@@ -666,7 +671,9 @@ public class NavigationBarView extends FrameLayout implements
} }
mImeVisible = visible; mImeVisible = visible;
mRotationButtonController.getRotationButton().setCanShowRotationButton(!mImeVisible); mRotationButtonController.getRotationButton().setCanShowRotationButton(!mImeVisible);
Dependency.get(NavigationBarOverlayController.class).setCanShow(!mImeVisible); if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
mNavBarOverlayController.setCanShow(!mImeVisible);
}
} }
public void setDisabledFlags(int disabledFlags) { public void setDisabledFlags(int disabledFlags) {
@@ -999,10 +1006,9 @@ public class NavigationBarView extends FrameLayout implements
} else { } else {
updateButtonLocation(getRotateSuggestionButton(), inScreenSpace); updateButtonLocation(getRotateSuggestionButton(), inScreenSpace);
} }
final NavigationBarOverlayController navBarButtonsController = if (mNavBarOverlayController.isNavigationBarOverlayEnabled()
Dependency.get(NavigationBarOverlayController.class); && mNavBarOverlayController.isVisible()) {
if (navBarButtonsController.isVisible()) { updateButtonLocation(mNavBarOverlayController.getCurrentView(), inScreenSpace);
updateButtonLocation(navBarButtonsController.getCurrentView(), inScreenSpace);
} }
return mTmpRegion; return mTmpRegion;
} }
@@ -1230,7 +1236,9 @@ public class NavigationBarView extends FrameLayout implements
if (mRotationButtonController != null) { if (mRotationButtonController != null) {
mRotationButtonController.registerListeners(); mRotationButtonController.registerListeners();
} }
Dependency.get(NavigationBarOverlayController.class).registerListeners(); if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
mNavBarOverlayController.registerListeners();
}
getViewTreeObserver().addOnComputeInternalInsetsListener(mOnComputeInternalInsetsListener); getViewTreeObserver().addOnComputeInternalInsetsListener(mOnComputeInternalInsetsListener);
updateNavButtonIcons(); updateNavButtonIcons();
@@ -1247,7 +1255,10 @@ public class NavigationBarView extends FrameLayout implements
if (mRotationButtonController != null) { if (mRotationButtonController != null) {
mRotationButtonController.unregisterListeners(); mRotationButtonController.unregisterListeners();
} }
Dependency.get(NavigationBarOverlayController.class).unregisterListeners();
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
mNavBarOverlayController.unregisterListeners();
}
mEdgeBackGestureHandler.onNavBarDetached(); mEdgeBackGestureHandler.onNavBarDetached();
getViewTreeObserver().removeOnComputeInternalInsetsListener( getViewTreeObserver().removeOnComputeInternalInsetsListener(

View File

@@ -82,4 +82,8 @@ public class FeatureFlags {
public boolean isMonetEnabled() { public boolean isMonetEnabled() {
return mFlagReader.isEnabled(R.bool.flag_monet); return mFlagReader.isEnabled(R.bool.flag_monet);
} }
public boolean isNavigationBarOverlayEnabled() {
return mFlagReader.isEnabled(R.bool.flag_navigation_bar_overlay);
}
} }