diff --git a/res/values/strings.xml b/res/values/strings.xml index 1c2bbf2f2b2..45d88162038 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8745,9 +8745,12 @@ Primary data - + ^1 used + + ^1 over + ^1 left diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java index 94e70002376..e7f4a9dec7a 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java @@ -131,16 +131,7 @@ public class DataUsageSummaryPreference extends Preference { holder.findViewById(R.id.label_bar).setVisibility(View.GONE); } - TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view); - usageNumberField.setText(TextUtils.expandTemplate( - getContext().getString(R.string.data_used), - Formatter.formatFileSize(getContext(), mDataplanUse))); - if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) { - TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view); - usageRemainingField.setText( - TextUtils.expandTemplate(getContext().getText(R.string.data_remaining), - Formatter.formatFileSize(getContext(), mDataplanSize - mDataplanUse))); - } + updateDataUsageLabels(holder); TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title); usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE); @@ -169,6 +160,26 @@ public class DataUsageSummaryPreference extends Preference { limitInfo.setText(mLimitInfoText); } + private void updateDataUsageLabels(PreferenceViewHolder holder) { + TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view); + usageNumberField.setText(TextUtils.expandTemplate( + getContext().getString(R.string.data_used), + Formatter.formatFileSize(getContext(), mDataplanUse))); + if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) { + TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view); + long dataRemaining = mDataplanSize - mDataplanUse; + if (dataRemaining >= 0) { + usageRemainingField.setText( + TextUtils.expandTemplate(getContext().getText(R.string.data_remaining), + Formatter.formatFileSize(getContext(), dataRemaining))); + } else { + usageRemainingField.setText( + TextUtils.expandTemplate(getContext().getText(R.string.data_overusage), + Formatter.formatFileSize(getContext(), -dataRemaining))); + } + } + } + private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) { if (mNumPlans > 0 && updateAge >= 0L) { carrierInfo.setVisibility(View.VISIBLE); diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java index f17e8b5e781..2a64e90c2f7 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java @@ -207,6 +207,7 @@ public class DataUsageSummaryPreferenceTest { mSummaryPreference.setLabels("0.0 GB", "5.0 GB"); } + @Test public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() { mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 1 /* numPlans */, new Intent()); @@ -217,6 +218,17 @@ public class DataUsageSummaryPreferenceTest { assertThat(mDataRemaining.getText().toString()).isEqualTo("9.00 MB left"); } + @Test + public void testSetUsageInfo_withDataOverusage() { + mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 1 /* numPlans */, + new Intent()); + mSummaryPreference.setUsageNumbers(11_000_000L, 10_000_000L, true); + + bindViewHolder(); + assertThat(mDataUsed.getText().toString()).isEqualTo("11.00 MB used"); + assertThat(mDataRemaining.getText().toString()).isEqualTo("1.00 MB over"); + } + @Test public void testSetUsageInfo_withUsageInfo_dataUsageShown() { mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,