From aa45b424235adb68788822f0df68e9ac4e44116d Mon Sep 17 00:00:00 2001 From: tmfang Date: Fri, 31 May 2019 18:33:23 +0800 Subject: [PATCH] FooterPreference directs summary to title of preference To compatible with preference controller design, we override implementation of setSummary() which directs summary to title of preference. So, footer preference can be simply created in xml and controlled by BasePreferenceController. Test: visual, robotest Bug: 124129485 Change-Id: I453ffc35761ecf24f2ac1415e0d674ac73c9c475 --- .../settingslib/widget/FooterPreference.java | 20 +++++++++++++++++- .../widget/FooterPreferenceTest.java | 21 ++++++++++--------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java index a31b71e2cd0b9..7100acc30646f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java @@ -17,6 +17,7 @@ package com.android.settingslib.widget; import android.content.Context; +import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.util.AttributeSet; import android.widget.TextView; @@ -55,9 +56,26 @@ public class FooterPreference extends Preference { title.setLongClickable(false); } + @Override + public void setSummary(CharSequence summary) { + setTitle(summary); + } + + @Override + public void setSummary(int summaryResId) { + setTitle(summaryResId); + } + + @Override + public CharSequence getSummary() { + return getTitle(); + } + private void init() { setIcon(R.drawable.ic_info_outline_24); - setKey(KEY_FOOTER); setOrder(ORDER_FOOTER); + if (TextUtils.isEmpty(getKey())) { + setKey(KEY_FOOTER); + } } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java index 0d2399e3dcab8..1a4f0efd3834a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java @@ -37,28 +37,29 @@ import org.robolectric.RuntimeEnvironment; public class FooterPreferenceTest { private Context mContext; + private FooterPreference mFooterPreference; @Before public void setUp() { mContext = RuntimeEnvironment.application; - } - - @Test - public void createNewPreference_shouldSetKeyAndOrder() { - final FooterPreference preference = new FooterPreference(mContext); - - assertThat(preference.getKey()).isEqualTo(FooterPreference.KEY_FOOTER); - assertThat(preference.getOrder()).isEqualTo(FooterPreference.ORDER_FOOTER); + mFooterPreference = new FooterPreference(mContext); } @Test public void bindPreference_shouldLinkifyContent() { - final FooterPreference preference = new FooterPreference(mContext); final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( LayoutInflater.from(mContext).inflate(R.layout.preference_footer, null)); - preference.onBindViewHolder(holder); + mFooterPreference.onBindViewHolder(holder); + assertThat(((TextView) holder.findViewById(android.R.id.title)).getMovementMethod()) .isInstanceOf(LinkMovementMethod.class); } + + @Test + public void setSummary_summarySet_shouldSetAsTitle() { + mFooterPreference.setSummary("summary"); + + assertThat(mFooterPreference.getTitle()).isEqualTo("summary"); + } }