From 467776a81b698ce5ea2c2214da3d51b1c0c1860a Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Thu, 28 Jan 2021 14:11:11 -0500 Subject: [PATCH] Implement design on privacy dialog * Implement margins and styles * Change tappable region to whole row * Implement a11y for whole row Also, fix a bug with background window that would show black on some devices instead of transparent. Bug: 178093014 Fixes: 178616173 Test: manual Test: atest PrivacyDialogTest Change-Id: If03fcd75970a724f8209596b75640c5618b3b9c2 --- .../drawable/privacy_item_circle_camera.xml | 8 ++-- .../drawable/privacy_item_circle_location.xml | 8 ++-- .../privacy_item_circle_microphone.xml | 8 ++-- .../SystemUI/res/layout/privacy_dialog.xml | 10 ++++- .../res/layout/privacy_dialog_item.xml | 41 +++++++++---------- packages/SystemUI/res/values/dimens.xml | 6 +++ packages/SystemUI/res/values/styles.xml | 5 +++ .../android/systemui/privacy/PrivacyDialog.kt | 10 ++--- .../systemui/privacy/PrivacyDialogTest.kt | 2 +- 9 files changed, 55 insertions(+), 43 deletions(-) diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml b/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml index cf6413642c632..5cb6f4626b36f 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml @@ -21,16 +21,16 @@ > \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_location.xml b/packages/SystemUI/res/drawable/privacy_item_circle_location.xml index 0a6a4a31d0a54..28466c8a29b3c 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_location.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_location.xml @@ -21,16 +21,16 @@ > \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml b/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml index 0a6a4a31d0a54..28466c8a29b3c 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml @@ -21,16 +21,16 @@ > \ No newline at end of file diff --git a/packages/SystemUI/res/layout/privacy_dialog.xml b/packages/SystemUI/res/layout/privacy_dialog.xml index 5db247e25d503..4d77a0d75689c 100644 --- a/packages/SystemUI/res/layout/privacy_dialog.xml +++ b/packages/SystemUI/res/layout/privacy_dialog.xml @@ -22,7 +22,13 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/ongoing_appops_dialog_side_margins" android:layout_marginEnd="@dimen/ongoing_appops_dialog_side_margins" + android:layout_marginTop="8dp" android:orientation="vertical" - android:padding = "8dp" + android:paddingLeft="@dimen/ongoing_appops_dialog_side_padding" + android:paddingRight="@dimen/ongoing_appops_dialog_side_padding" + android:paddingBottom="12dp" + android:paddingTop="8dp" android:background="@drawable/privacy_dialog_bg" -/> \ No newline at end of file +/> + + \ No newline at end of file diff --git a/packages/SystemUI/res/layout/privacy_dialog_item.xml b/packages/SystemUI/res/layout/privacy_dialog_item.xml index 882e9680407ee..91ffe225fac6f 100644 --- a/packages/SystemUI/res/layout/privacy_dialog_item.xml +++ b/packages/SystemUI/res/layout/privacy_dialog_item.xml @@ -16,19 +16,22 @@ --> + - - - - + android:src="@*android:drawable/ic_chevron_end" + android:tint="?android:attr/textColorPrimary" + /> \ No newline at end of file diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index e5109307c4f4c..1fac96bb181dd 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1181,6 +1181,12 @@ @dimen/notification_shade_content_margin_horizontal + 32dp + + 20dp + + 16dp + 10sp diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index db260ce1b7b47..ad4e78e8e507c 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -745,4 +745,9 @@ * Title: headline, medium 20sp * Message: body, 16 sp --> diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt index 66c535f869f03..c3d6a848202f2 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt @@ -24,7 +24,6 @@ import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.WindowInsets import android.widget.ImageView @@ -66,9 +65,8 @@ class PrivacyDialog( super.onCreate(savedInstanceState) window?.apply { attributes.fitInsetsTypes = attributes.fitInsetsTypes or WindowInsets.Type.statusBars() - setLayout(MATCH_PARENT, WRAP_CONTENT) + setLayout(context.resources.getDimensionPixelSize(R.dimen.qs_panel_width), WRAP_CONTENT) setGravity(Gravity.TOP or Gravity.CENTER_HORIZONTAL) - setBackgroundDrawable(null) } setContentView(R.layout.privacy_dialog) @@ -130,7 +128,7 @@ class PrivacyDialog( ) } ?: firstLine newView.requireViewById(R.id.text).text = finalText - newView.requireViewById(R.id.link).apply { + newView.apply { tag = element.type.permGroupName setOnClickListener(clickListener) } @@ -154,9 +152,7 @@ class PrivacyDialog( } private val clickListener = View.OnClickListener { v -> - if (v.id == R.id.link) { - v.tag?.let { activityStarter(it as String) } - } + v.tag?.let { activityStarter(it as String) } } /** */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt index 9762ffffb02e3..eb5dd4e6fef6d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogTest.kt @@ -72,7 +72,7 @@ class PrivacyDialogTest : SysuiTestCase() { ) dialog = PrivacyDialog(context, list, starter) dialog.show() - dialog.requireViewById(R.id.link).callOnClick() + dialog.requireViewById(R.id.privacy_item).callOnClick() verify(starter).invoke(PrivacyType.TYPE_MICROPHONE.permGroupName) }