OSDN Git Service

Set color of update line to red if update is older than six hours.
authorJan Nordqvist <jannq@google.com>
Mon, 12 Mar 2018 22:19:29 +0000 (15:19 -0700)
committerSundeep Ghuman <sghuman@google.com>
Thu, 15 Mar 2018 07:20:39 +0000 (00:20 -0700)
In Data Usage screen, out-of-date state

Bug: 70950124

Test: manual
Test: make RunSettingsRoboTests
Change-Id: Icf6fafe9ab61a2c1ac3fba2bebf3bd4407c0ecfe

src/com/android/settings/datausage/DataUsageSummaryPreference.java
src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java

index f1f3283..e8715aa 100644 (file)
@@ -29,6 +29,7 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import com.android.settings.R;
+import com.android.settingslib.Utils;
 import com.android.settingslib.utils.StringUtil;
 
 import java.util.Objects;
@@ -39,6 +40,7 @@ import java.util.concurrent.TimeUnit;
  */
 public class DataUsageSummaryPreference extends Preference {
     private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
+    private static final long WARNING_AGE = TimeUnit.HOURS.toMillis(6L);
 
     private boolean mChartEnabled = true;
     private String mStartLabel;
@@ -48,6 +50,8 @@ public class DataUsageSummaryPreference extends Preference {
     private static final float LARGER_FONT_RATIO = 2.25f;
     private static final float SMALLER_FONT_RATIO = 1.0f;
 
+    private boolean mDefaultTextColorSet;
+    private int mDefaultTextColor;
     private int mNumPlans;
     /** The ending time of the billing cycle in milliseconds since epoch. */
     private long mCycleEndTimeMs;
@@ -140,8 +144,8 @@ public class DataUsageSummaryPreference extends Preference {
 
         updateCycleTimeText(holder);
 
-        TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
-        setCarrierInfo(carrierInfo, mCarrierName, mSnapshotTimeMs);
+
+        updateCarrierInfo((TextView) holder.findViewById(R.id.carrier_and_update));
 
         Button launchButton = (Button) holder.findViewById(R.id.launch_mdp_app_button);
         launchButton.setOnClickListener((view) -> {
@@ -159,6 +163,7 @@ 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(
@@ -194,18 +199,25 @@ public class DataUsageSummaryPreference extends Preference {
                         R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
     }
 
-    private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) {
-        if (mNumPlans > 0 && updateAge >= 0L) {
+
+    private void updateCarrierInfo(TextView carrierInfo) {
+        if (mNumPlans > 0 && mSnapshotTimeMs >= 0L) {
+            long updateAge = System.currentTimeMillis() - mSnapshotTimeMs;
             carrierInfo.setVisibility(View.VISIBLE);
-            if (carrierName != null) {
+            if (mCarrierName != null) {
                 carrierInfo.setText(getContext().getString(R.string.carrier_and_update_text,
-                        carrierName, StringUtil.formatRelativeTime(
+                        mCarrierName, StringUtil.formatRelativeTime(
                                 getContext(), updateAge, false /* withSeconds */)));
             } else {
                 carrierInfo.setText(getContext().getString(R.string.no_carrier_update_text,
                         StringUtil.formatRelativeTime(
                                 getContext(), updateAge, false /* withSeconds */)));
             }
+
+            carrierInfo.setTextColor(
+                    updateAge <= WARNING_AGE
+                    ? Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)
+                    : Utils.getColorAttr(getContext(), android.R.attr.colorError));
         } else {
             carrierInfo.setVisibility(View.GONE);
         }
index 5deca96..281c8b6 100644 (file)
@@ -219,7 +219,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
                     mCycleStart = rule.start.toEpochSecond() * 1000L;
                     mCycleEnd = rule.end.toEpochSecond() * 1000L;
                 }
-                mSnapshotTime = System.currentTimeMillis() - primaryPlan.getDataUsageTime();
+                mSnapshotTime = primaryPlan.getDataUsageTime();
             }
         }
         mManageSubscriptionIntent =
index 0dd2d89..638ee79 100644 (file)
@@ -16,8 +16,6 @@
 
 package com.android.settings.datausage;
 
-import static com.google.common.truth.Truth.assertThat;
-
 import android.content.Context;
 import android.content.Intent;
 import android.support.v7.preference.PreferenceViewHolder;
@@ -31,6 +29,7 @@ import android.widget.TextView;
 import com.android.settings.R;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
+import com.android.settingslib.Utils;
 import com.android.settingslib.utils.StringUtil;
 import java.util.concurrent.TimeUnit;
 
@@ -41,6 +40,10 @@ import org.mockito.MockitoAnnotations;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
+import java.util.concurrent.TimeUnit;
+
+import static com.google.common.truth.Truth.assertThat;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(shadows = SettingsShadowResourcesImpl.class)
 public class DataUsageSummaryPreferenceTest {
@@ -120,6 +123,31 @@ public class DataUsageSummaryPreferenceTest {
     }
 
     @Test
+    public void testSetUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColor() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
+        mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, DUMMY_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        bindViewHolder();
+        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
+                Utils.getColorAttr(mContext, android.R.attr.textColorPrimary));
+    }
+
+    @Test
+    public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColor() {
+        final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, DUMMY_CARRIER, 1 /* numPlans */,
+                new Intent());
+
+        bindViewHolder();
+        assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
+                Utils.getColorAttr(mContext, android.R.attr.colorError));
+    }
+
+    @Test
     public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
         mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
                 new Intent());
@@ -140,7 +168,7 @@ public class DataUsageSummaryPreferenceTest {
     @Test
     public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
         // just under one day
-        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1) - 1;
+        final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
         mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
                 new Intent());