Merge "Treat SysUI as top application when GlobalActions is shown" into qt-r1-dev
am: bac4851b43
Change-Id: I81974ab9861b95281297468273507f1a49de64bc
This commit is contained in:
@@ -95,6 +95,7 @@ import com.android.systemui.plugins.ActivityStarter;
|
|||||||
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
|
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
|
||||||
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
|
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
|
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
||||||
import com.android.systemui.statusbar.phone.UnlockMethodCache;
|
import com.android.systemui.statusbar.phone.UnlockMethodCache;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.util.EmergencyDialerConstants;
|
import com.android.systemui.util.EmergencyDialerConstants;
|
||||||
@@ -1515,6 +1516,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
private boolean mShowing;
|
private boolean mShowing;
|
||||||
private float mScrimAlpha;
|
private float mScrimAlpha;
|
||||||
private ResetOrientationData mResetOrientationData;
|
private ResetOrientationData mResetOrientationData;
|
||||||
|
private boolean mHadTopUi;
|
||||||
|
private final StatusBarWindowController mStatusBarWindowController;
|
||||||
|
|
||||||
ActionsDialog(Context context, MyAdapter adapter,
|
ActionsDialog(Context context, MyAdapter adapter,
|
||||||
GlobalActionsPanelPlugin.PanelViewController plugin) {
|
GlobalActionsPanelPlugin.PanelViewController plugin) {
|
||||||
@@ -1523,6 +1526,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
mAdapter = adapter;
|
mAdapter = adapter;
|
||||||
mColorExtractor = Dependency.get(SysuiColorExtractor.class);
|
mColorExtractor = Dependency.get(SysuiColorExtractor.class);
|
||||||
mStatusBarService = Dependency.get(IStatusBarService.class);
|
mStatusBarService = Dependency.get(IStatusBarService.class);
|
||||||
|
mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
|
||||||
|
|
||||||
// Window initialization
|
// Window initialization
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
@@ -1698,6 +1702,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
public void show() {
|
public void show() {
|
||||||
super.show();
|
super.show();
|
||||||
mShowing = true;
|
mShowing = true;
|
||||||
|
mHadTopUi = mStatusBarWindowController.getForceHasTopUi();
|
||||||
|
mStatusBarWindowController.setForceHasTopUi(true);
|
||||||
mBackgroundDrawable.setAlpha(0);
|
mBackgroundDrawable.setAlpha(0);
|
||||||
mGlobalActionsLayout.setTranslationX(mGlobalActionsLayout.getAnimationOffsetX());
|
mGlobalActionsLayout.setTranslationX(mGlobalActionsLayout.getAnimationOffsetX());
|
||||||
mGlobalActionsLayout.setTranslationY(mGlobalActionsLayout.getAnimationOffsetY());
|
mGlobalActionsLayout.setTranslationY(mGlobalActionsLayout.getAnimationOffsetY());
|
||||||
@@ -1730,7 +1736,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
.translationX(mGlobalActionsLayout.getAnimationOffsetX())
|
.translationX(mGlobalActionsLayout.getAnimationOffsetX())
|
||||||
.translationY(mGlobalActionsLayout.getAnimationOffsetY())
|
.translationY(mGlobalActionsLayout.getAnimationOffsetY())
|
||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
.withEndAction(super::dismiss)
|
.withEndAction(this::completeDismiss)
|
||||||
.setInterpolator(new LogAccelerateInterpolator())
|
.setInterpolator(new LogAccelerateInterpolator())
|
||||||
.setUpdateListener(animation -> {
|
.setUpdateListener(animation -> {
|
||||||
int alpha = (int) ((1f - (Float) animation.getAnimatedValue())
|
int alpha = (int) ((1f - (Float) animation.getAnimatedValue())
|
||||||
@@ -1743,10 +1749,15 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void dismissImmediately() {
|
void dismissImmediately() {
|
||||||
super.dismiss();
|
|
||||||
mShowing = false;
|
mShowing = false;
|
||||||
dismissPanel();
|
dismissPanel();
|
||||||
resetOrientation();
|
resetOrientation();
|
||||||
|
completeDismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void completeDismiss() {
|
||||||
|
mStatusBarWindowController.setForceHasTopUi(mHadTopUi);
|
||||||
|
super.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dismissPanel() {
|
private void dismissPanel() {
|
||||||
|
|||||||
@@ -76,13 +76,13 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
private final WindowManager mWindowManager;
|
private final WindowManager mWindowManager;
|
||||||
private final IActivityManager mActivityManager;
|
private final IActivityManager mActivityManager;
|
||||||
private final DozeParameters mDozeParameters;
|
private final DozeParameters mDozeParameters;
|
||||||
private final WindowManager.LayoutParams mLpChanged;
|
private final LayoutParams mLpChanged;
|
||||||
private final boolean mKeyguardScreenRotation;
|
private final boolean mKeyguardScreenRotation;
|
||||||
private final long mLockScreenDisplayTimeout;
|
private final long mLockScreenDisplayTimeout;
|
||||||
private final Display.Mode mKeyguardDisplayMode;
|
private final Display.Mode mKeyguardDisplayMode;
|
||||||
private final KeyguardBypassController mKeyguardBypassController;
|
private final KeyguardBypassController mKeyguardBypassController;
|
||||||
private ViewGroup mStatusBarView;
|
private ViewGroup mStatusBarView;
|
||||||
private WindowManager.LayoutParams mLp;
|
private LayoutParams mLp;
|
||||||
private boolean mHasTopUi;
|
private boolean mHasTopUi;
|
||||||
private boolean mHasTopUiChanged;
|
private boolean mHasTopUiChanged;
|
||||||
private int mBarHeight;
|
private int mBarHeight;
|
||||||
@@ -117,7 +117,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation();
|
mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation();
|
||||||
mDozeParameters = dozeParameters;
|
mDozeParameters = dozeParameters;
|
||||||
mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze();
|
mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze();
|
||||||
mLpChanged = new WindowManager.LayoutParams();
|
mLpChanged = new LayoutParams();
|
||||||
mKeyguardBypassController = keyguardBypassController;
|
mKeyguardBypassController = keyguardBypassController;
|
||||||
mLockScreenDisplayTimeout = context.getResources()
|
mLockScreenDisplayTimeout = context.getResources()
|
||||||
.getInteger(R.integer.config_lockScreenDisplayTimeout);
|
.getInteger(R.integer.config_lockScreenDisplayTimeout);
|
||||||
@@ -171,19 +171,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
// Now that the status bar window encompasses the sliding panel and its
|
// Now that the status bar window encompasses the sliding panel and its
|
||||||
// translucent backdrop, the entire thing is made TRANSLUCENT and is
|
// translucent backdrop, the entire thing is made TRANSLUCENT and is
|
||||||
// hardware-accelerated.
|
// hardware-accelerated.
|
||||||
mLp = new WindowManager.LayoutParams(
|
mLp = new LayoutParams(
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
barHeight,
|
barHeight,
|
||||||
WindowManager.LayoutParams.TYPE_STATUS_BAR,
|
LayoutParams.TYPE_STATUS_BAR,
|
||||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
LayoutParams.FLAG_NOT_FOCUSABLE
|
||||||
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
|
| LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
|
||||||
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
|
| LayoutParams.FLAG_SPLIT_TOUCH
|
||||||
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|
| LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|
||||||
| WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
|
| LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
|
||||||
PixelFormat.TRANSLUCENT);
|
PixelFormat.TRANSLUCENT);
|
||||||
mLp.token = new Binder();
|
mLp.token = new Binder();
|
||||||
mLp.gravity = Gravity.TOP;
|
mLp.gravity = Gravity.TOP;
|
||||||
mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
|
mLp.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
|
||||||
mLp.setTitle("StatusBar");
|
mLp.setTitle("StatusBar");
|
||||||
mLp.packageName = mContext.getPackageName();
|
mLp.packageName = mContext.getPackageName();
|
||||||
mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
@@ -216,9 +216,9 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
|
|
||||||
private void applyKeyguardFlags(State state) {
|
private void applyKeyguardFlags(State state) {
|
||||||
if (state.keyguardShowing) {
|
if (state.keyguardShowing) {
|
||||||
mLpChanged.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
|
mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_KEYGUARD;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
|
mLpChanged.privateFlags &= ~LayoutParams.PRIVATE_FLAG_KEYGUARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean scrimsOccludingWallpaper =
|
final boolean scrimsOccludingWallpaper =
|
||||||
@@ -226,9 +226,9 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
final boolean keyguardOrAod = state.keyguardShowing
|
final boolean keyguardOrAod = state.keyguardShowing
|
||||||
|| (state.dozing && mDozeParameters.getAlwaysOn());
|
|| (state.dozing && mDozeParameters.getAlwaysOn());
|
||||||
if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) {
|
if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) {
|
||||||
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
|
mLpChanged.flags |= LayoutParams.FLAG_SHOW_WALLPAPER;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
|
mLpChanged.flags &= ~LayoutParams.FLAG_SHOW_WALLPAPER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.dozing) {
|
if (state.dozing) {
|
||||||
@@ -267,17 +267,17 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
if (state.bouncerShowing && (state.keyguardOccluded || state.keyguardNeedsInput)
|
if (state.bouncerShowing && (state.keyguardOccluded || state.keyguardNeedsInput)
|
||||||
|| ENABLE_REMOTE_INPUT && state.remoteInputActive
|
|| ENABLE_REMOTE_INPUT && state.remoteInputActive
|
||||||
|| state.bubbleExpanded) {
|
|| state.bubbleExpanded) {
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
mLpChanged.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
mLpChanged.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
} else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) {
|
} else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) {
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
mLpChanged.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
mLpChanged.flags |= LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
mLpChanged.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
mLpChanged.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
}
|
}
|
||||||
|
|
||||||
mLpChanged.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
|
mLpChanged.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyForceShowNavigationFlag(State state) {
|
private void applyForceShowNavigationFlag(State state) {
|
||||||
@@ -335,19 +335,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
&& state.statusBarState == StatusBarState.KEYGUARD
|
&& state.statusBarState == StatusBarState.KEYGUARD
|
||||||
&& !state.qsExpanded && !state.forceUserActivity) {
|
&& !state.qsExpanded && !state.forceUserActivity) {
|
||||||
mLpChanged.inputFeatures |=
|
mLpChanged.inputFeatures |=
|
||||||
WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
|
LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.inputFeatures &=
|
mLpChanged.inputFeatures &=
|
||||||
~WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
|
~LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyStatusBarColorSpaceAgnosticFlag(State state) {
|
private void applyStatusBarColorSpaceAgnosticFlag(State state) {
|
||||||
if (!isExpanded(state)) {
|
if (!isExpanded(state)) {
|
||||||
mLpChanged.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.privateFlags &=
|
mLpChanged.privateFlags &=
|
||||||
~WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
~LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,16 +396,16 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
mLpChanged.privateFlags |= WindowManager
|
mLpChanged.privateFlags |= WindowManager
|
||||||
.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
|
.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.privateFlags &= ~WindowManager
|
mLpChanged.privateFlags
|
||||||
.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
|
&= ~LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyModalFlag(State state) {
|
private void applyModalFlag(State state) {
|
||||||
if (state.headsUpShowing) {
|
if (state.headsUpShowing) {
|
||||||
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
mLpChanged.flags |= LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
mLpChanged.flags &= ~LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,12 +413,12 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
if (state.forceDozeBrightness) {
|
if (state.forceDozeBrightness) {
|
||||||
mLpChanged.screenBrightness = mScreenBrightnessDoze;
|
mLpChanged.screenBrightness = mScreenBrightnessDoze;
|
||||||
} else {
|
} else {
|
||||||
mLpChanged.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
|
mLpChanged.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyHasTopUi(State state) {
|
private void applyHasTopUi(State state) {
|
||||||
mHasTopUiChanged = isExpanded(state);
|
mHasTopUiChanged = state.forceHasTopUi || isExpanded(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyNotTouchable(State state) {
|
private void applyNotTouchable(State state) {
|
||||||
@@ -642,6 +642,15 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
apply(mCurrentState);
|
apply(mCurrentState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getForceHasTopUi() {
|
||||||
|
return mCurrentState.forceHasTopUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setForceHasTopUi(boolean forceHasTopUi) {
|
||||||
|
mCurrentState.forceHasTopUi = forceHasTopUi;
|
||||||
|
apply(mCurrentState);
|
||||||
|
}
|
||||||
|
|
||||||
private static class State {
|
private static class State {
|
||||||
boolean keyguardShowing;
|
boolean keyguardShowing;
|
||||||
boolean keyguardOccluded;
|
boolean keyguardOccluded;
|
||||||
@@ -663,6 +672,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
boolean notTouchable;
|
boolean notTouchable;
|
||||||
boolean bubblesShowing;
|
boolean bubblesShowing;
|
||||||
boolean bubbleExpanded;
|
boolean bubbleExpanded;
|
||||||
|
boolean forceHasTopUi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link StatusBar} state from the status bar.
|
* The {@link StatusBar} state from the status bar.
|
||||||
|
|||||||
Reference in New Issue
Block a user