From 3e498ad30d537608acf0024f333bbe22a7a10159 Mon Sep 17 00:00:00 2001 From: Peter Zhang Date: Mon, 8 May 2023 12:13:11 +0200 Subject: [PATCH] Render an additional icon to the tappable tiles with pending intents Test: robotest, manual Bug: 281517110 Change-Id: Ia5fbae63d56a6f1e6ee8fb3ee58ae912d14b6c75 --- .../preference_external_action_icon.xml | 22 +++++++++++++++++++ .../settings/dashboard/DashboardFragment.java | 4 ++++ .../dashboard/DashboardFragmentTest.java | 15 ++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 res/layout/preference_external_action_icon.xml diff --git a/res/layout/preference_external_action_icon.xml b/res/layout/preference_external_action_icon.xml new file mode 100644 index 00000000000..fcec43080dd --- /dev/null +++ b/res/layout/preference_external_action_icon.xml @@ -0,0 +1,22 @@ + + + + \ No newline at end of file diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index 20836145cf7..f928d863858 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -573,6 +573,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment return (tile instanceof ActivityTile || tile.hasPendingIntent()) ? new PrimarySwitchPreference(getPrefContext()) : new SwitchPreference(getPrefContext()); + } else if (tile.hasPendingIntent()) { + Preference preference = new Preference(getPrefContext()); + preference.setWidgetLayoutResource(R.layout.preference_external_action_icon); + return preference; } else { return new Preference(getPrefContext()); } diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index 22bf6b3f5a3..d7da7fe7a03 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -49,6 +49,7 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.slices.BlockingSlicePrefController; import com.android.settings.testutils.FakeFeatureFactory; @@ -351,6 +352,16 @@ public class DashboardFragmentTest { assertThat(pref).isInstanceOf(SwitchPreference.class); } + @Test + public void createPreference_isActivityTile_returnPreference() { + final Preference pref = mTestFragment.createPreference(mActivityTile); + + assertThat(pref).isInstanceOf(Preference.class); + assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class); + assertThat(pref).isNotInstanceOf(SwitchPreference.class); + assertThat(pref.getWidgetLayoutResource()).isEqualTo(0); + } + @Test public void createPreference_isActivityTileAndHasSwitch_returnPrimarySwitchPreference() { mActivityTile.getMetaData().putString(META_DATA_PREFERENCE_SWITCH_URI, "uri"); @@ -361,7 +372,7 @@ public class DashboardFragmentTest { } @Test - public void createPreference_isProviderTileWithPendingIntent_returnPreference() { + public void createPreference_isProviderTileWithPendingIntent_returnPreferenceWithIcon() { final ProviderInfo providerInfo = new ProviderInfo(); providerInfo.packageName = "pkg"; providerInfo.name = "provider"; @@ -378,6 +389,8 @@ public class DashboardFragmentTest { assertThat(pref).isInstanceOf(Preference.class); assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class); assertThat(pref).isNotInstanceOf(SwitchPreference.class); + assertThat(pref.getWidgetLayoutResource()) + .isEqualTo(R.layout.preference_external_action_icon); } @Test