Fix bugs with QS customizer when split shade is active.

* When the QS customizer is active, closing the split shade does not
close the customizer.
* When three-button nav is enabled, pressing back when the QS customizer
is active on the split shade will close the shade, not close the
customizer.

This CL instead adds functions to QS.java so we can check whether the
customizer is active (and close it), so we can handle these cases
appropriately.

Test: Manually verified.
Bug: 201388768
Change-Id: I94208d1cd966975f39328529b9d866fbf27927ac
This commit is contained in:
Jamie Garside
2021-10-26 16:43:44 +01:00
parent b62fb90d71
commit eb7a55cc47
4 changed files with 27 additions and 2 deletions

View File

@@ -34,7 +34,7 @@ public interface QS extends FragmentBase {
String ACTION = "com.android.systemui.action.PLUGIN_QS";
int VERSION = 11;
int VERSION = 12;
String TAG = "QS";
@@ -46,6 +46,8 @@ public interface QS extends FragmentBase {
void setHeightOverride(int desiredHeight);
void setHeaderClickable(boolean qsExpansionEnabled);
boolean isCustomizing();
/** Close the QS customizer, if it is open. */
void closeCustomizer();
void setOverscrolling(boolean overscrolling);
void setExpanded(boolean qsExpanded);
void setListening(boolean listening);

View File

@@ -15,10 +15,10 @@
package com.android.systemui.qs;
import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS;
import static com.android.systemui.statusbar.DisableFlagsLogger.DisableState;
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL;
import static com.android.systemui.statusbar.DisableFlagsLogger.DisableState;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -696,6 +696,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mQSPanelController.closeDetail();
}
@Override
public void closeCustomizer() {
mQSCustomizerController.hide();
}
public void notifyCustomizeChanged() {
// The customize state changed, so our height changed.
mContainer.updateExpansion();

View File

@@ -2869,6 +2869,10 @@ public class NotificationPanelViewController extends PanelViewController {
mStatusBarTouchableRegionManager.setPanelExpanded(isExpanded);
mStatusBar.setPanelExpanded(isExpanded);
mPanelExpanded = isExpanded;
if (!isExpanded && mQs != null && mQs.isCustomizing()) {
mQs.closeCustomizer();
}
}
}
@@ -3167,10 +3171,20 @@ public class NotificationPanelViewController extends PanelViewController {
return mQs.isShowingDetail();
}
/** Returns whether the QS customizer is currently active. */
public boolean isQsCustomizing() {
return mQs.isCustomizing();
}
public void closeQsDetail() {
mQs.closeDetail();
}
/** Close the QS customizer if it is open. */
public void closeQsCustomizer() {
mQs.closeCustomizer();
}
public boolean isLaunchTransitionFinished() {
return mIsLaunchTransitionFinished;
}

View File

@@ -3283,6 +3283,10 @@ public class StatusBar extends SystemUI implements
}
return true;
}
if (mNotificationPanelViewController.isQsCustomizing()) {
mNotificationPanelViewController.closeQsCustomizer();
return true;
}
if (mNotificationPanelViewController.isQsExpanded()) {
if (mNotificationPanelViewController.isQsDetailShowing()) {
mNotificationPanelViewController.closeQsDetail();