OSDN Git Service

In Data Usage screen, add over-limit state.
authorSundeep Ghuman <sghuman@google.com>
Thu, 15 Mar 2018 06:00:54 +0000 (23:00 -0700)
committerSundeep Ghuman <sghuman@google.com>
Thu, 15 Mar 2018 06:22:30 +0000 (23:22 -0700)
Bug: 70950124
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=DataUsageSummaryPreferenceTest

Change-Id: Ieec0c486c6a5451cd5983f02e202ddac3413a602

res/values/strings.xml
src/com/android/settings/datausage/DataUsageSummaryPreference.java
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java

index 1c2bbf2..45d8816 100644 (file)
     <!-- Data usage title text [CHAR LIMIT=30] -->
     <string name="data_usage_title">Primary data</string>
 
-    <!-- Data usage string [CHAR LIMIT=30] -->
+    <!-- Data usage remaining string [CHAR LIMIT=30] -->
     <string name="data_used"><xliff:g name="bytes" example="2 GB">^1</xliff:g> used</string>
 
+    <!-- Data usage over limit string [CHAR LIMIT=30] -->
+    <string name="data_overusage"><xliff:g name="bytes" example="2 GB">^1</xliff:g> over</string>
+
     <!-- Optional part of data usage showing the remaining amount [CHAR LIMIT=30] -->
     <string name="data_remaining"><xliff:g name="bytes" example="2 GB">^1</xliff:g> left</string>
 
index 94e7000..e7f4a9d 100644 (file)
@@ -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);
index f17e8b5..2a64e90 100644 (file)
@@ -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());
@@ -218,6 +219,17 @@ public class DataUsageSummaryPreferenceTest {
     }
 
     @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 */,
                 new Intent());