diff --git a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml index f45105dc3311b..31b3fe56b76a2 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml +++ b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml @@ -70,4 +70,13 @@ android:scaleY="2" android:layout_marginTop="4dp" android:max="100"/> + + diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java index 21859501c0578..a2b1de25bd211 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java +++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java @@ -44,6 +44,7 @@ public class UsageProgressBarPreference extends Preference { private CharSequence mUsageSummary; private CharSequence mTotalSummary; + private CharSequence mBottomSummary; private ImageView mCustomImageView; private int mPercent = -1; @@ -101,6 +102,15 @@ public class UsageProgressBarPreference extends Preference { notifyChanged(); } + /** Set bottom summary. */ + public void setBottomSummary(CharSequence bottomSummary) { + if (TextUtils.equals(mBottomSummary, bottomSummary)) { + return; + } + mBottomSummary = bottomSummary; + notifyChanged(); + } + /** Set percentage of the progress bar. */ public void setPercent(long usage, long total) { if (total == 0L || usage > total) { @@ -147,6 +157,14 @@ public class UsageProgressBarPreference extends Preference { totalSummary.setText(mTotalSummary); } + final TextView bottomSummary = (TextView) holder.findViewById(R.id.bottom_summary); + if (TextUtils.isEmpty(mBottomSummary)) { + bottomSummary.setVisibility(View.GONE); + } else { + bottomSummary.setVisibility(View.VISIBLE); + bottomSummary.setText(mBottomSummary); + } + final ProgressBar progressBar = (ProgressBar) holder.findViewById(android.R.id.progress); if (mPercent < 0) { progressBar.setIndeterminate(true); diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java index fe76b06a9b617..cd78addf254fb 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java @@ -91,6 +91,28 @@ public class UsageProgressBarPreferenceTest { .isEqualTo(1); } + @Test + public void setBottomSummary_getCorrectSummary() { + final String expectedText = "Should last until about 7:45 PM"; + mUsageProgressBarPreference.setBottomSummary(expectedText); + + mUsageProgressBarPreference.onBindViewHolder(mViewHolder); + + final TextView bottomSummary = (TextView) mViewHolder.findViewById(R.id.bottom_summary); + assertThat(bottomSummary.getText()).isEqualTo(expectedText); + assertThat(bottomSummary.getVisibility()).isEqualTo(View.VISIBLE); + } + + @Test + public void setBottomSummary_emptyText_isGone() { + mUsageProgressBarPreference.setBottomSummary(null); + + mUsageProgressBarPreference.onBindViewHolder(mViewHolder); + + final TextView bottomSummary = (TextView) mViewHolder.findViewById(R.id.bottom_summary); + assertThat(bottomSummary.getVisibility()).isEqualTo(View.GONE); + } + @Test public void setPercent_getCorrectProgress() { mUsageProgressBarPreference.setPercent(31, 80);