From dcd3b3b714aef05c0186a58a684b1140a1a59026 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 18 Feb 2020 15:05:04 -0500 Subject: [PATCH] Add support for cutout in QSDetail The QS Detail already has padding, so we just need to add some in the case of corner cutout. Bug: 147708367 Test: manual Change-Id: I665c8c76a2a057e9a30bce7c28fdbe7a249bb5c2 --- .../src/com/android/systemui/qs/QSDetail.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index 019cb1459838d..17aaff1f7383c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -25,10 +25,13 @@ import android.content.Intent; import android.content.res.Configuration; import android.graphics.drawable.Animatable; import android.util.AttributeSet; +import android.util.Pair; import android.util.SparseArray; +import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; +import android.view.WindowInsets; import android.view.accessibility.AccessibilityEvent; import android.widget.ImageView; import android.widget.LinearLayout; @@ -42,6 +45,7 @@ import com.android.systemui.R; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.phone.StatusBarWindowView; public class QSDetail extends LinearLayout { @@ -274,6 +278,32 @@ public class QSDetail extends LinearLayout { } } + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + DisplayCutout cutout = insets.getDisplayCutout(); + + Pair padding = StatusBarWindowView.cornerCutoutMargins( + cutout, getDisplay()); + + if (padding == null) { + mQsDetailHeader.setPaddingRelative( + getResources().getDimensionPixelSize(R.dimen.qs_detail_header_padding), + getPaddingTop(), + getResources().getDimensionPixelSize(R.dimen.qs_detail_header_padding), + getPaddingBottom() + ); + } else { + mQsDetailHeader.setPadding( + padding.first, + getPaddingTop(), + padding.second, + getPaddingBottom() + ); + } + + return super.onApplyWindowInsets(insets); + } + private void handleToggleStateChanged(boolean state, boolean toggleEnabled) { mSwitchState = state; if (mAnimatingOpen) {