Set color of update line to red if update is older than six hours.
In Data Usage screen, out-of-date state Bug: 70950124 Test: manual Test: make RunSettingsRoboTests Change-Id: Icf6fafe9ab61a2c1ac3fba2bebf3bd4407c0ecfe
This commit is contained in:
committed by
Sundeep Ghuman
parent
a6f6e9c41c
commit
9a65e5fec7
@@ -29,6 +29,7 @@ import android.widget.ProgressBar;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.Utils;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -39,6 +40,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
*/
|
*/
|
||||||
public class DataUsageSummaryPreference extends Preference {
|
public class DataUsageSummaryPreference extends Preference {
|
||||||
private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
|
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 boolean mChartEnabled = true;
|
||||||
private String mStartLabel;
|
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 LARGER_FONT_RATIO = 2.25f;
|
||||||
private static final float SMALLER_FONT_RATIO = 1.0f;
|
private static final float SMALLER_FONT_RATIO = 1.0f;
|
||||||
|
|
||||||
|
private boolean mDefaultTextColorSet;
|
||||||
|
private int mDefaultTextColor;
|
||||||
private int mNumPlans;
|
private int mNumPlans;
|
||||||
/** The ending time of the billing cycle in milliseconds since epoch. */
|
/** The ending time of the billing cycle in milliseconds since epoch. */
|
||||||
private long mCycleEndTimeMs;
|
private long mCycleEndTimeMs;
|
||||||
@@ -140,8 +144,8 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
|
|
||||||
updateCycleTimeText(holder);
|
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);
|
Button launchButton = (Button) holder.findViewById(R.id.launch_mdp_app_button);
|
||||||
launchButton.setOnClickListener((view) -> {
|
launchButton.setOnClickListener((view) -> {
|
||||||
@@ -159,6 +163,7 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
limitInfo.setText(mLimitInfoText);
|
limitInfo.setText(mLimitInfoText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void updateDataUsageLabels(PreferenceViewHolder holder) {
|
private void updateDataUsageLabels(PreferenceViewHolder holder) {
|
||||||
TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
|
TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
|
||||||
usageNumberField.setText(TextUtils.expandTemplate(
|
usageNumberField.setText(TextUtils.expandTemplate(
|
||||||
@@ -194,18 +199,25 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
|
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);
|
carrierInfo.setVisibility(View.VISIBLE);
|
||||||
if (carrierName != null) {
|
if (mCarrierName != null) {
|
||||||
carrierInfo.setText(getContext().getString(R.string.carrier_and_update_text,
|
carrierInfo.setText(getContext().getString(R.string.carrier_and_update_text,
|
||||||
carrierName, StringUtil.formatRelativeTime(
|
mCarrierName, StringUtil.formatRelativeTime(
|
||||||
getContext(), updateAge, false /* withSeconds */)));
|
getContext(), updateAge, false /* withSeconds */)));
|
||||||
} else {
|
} else {
|
||||||
carrierInfo.setText(getContext().getString(R.string.no_carrier_update_text,
|
carrierInfo.setText(getContext().getString(R.string.no_carrier_update_text,
|
||||||
StringUtil.formatRelativeTime(
|
StringUtil.formatRelativeTime(
|
||||||
getContext(), updateAge, false /* withSeconds */)));
|
getContext(), updateAge, false /* withSeconds */)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
carrierInfo.setTextColor(
|
||||||
|
updateAge <= WARNING_AGE
|
||||||
|
? Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)
|
||||||
|
: Utils.getColorAttr(getContext(), android.R.attr.colorError));
|
||||||
} else {
|
} else {
|
||||||
carrierInfo.setVisibility(View.GONE);
|
carrierInfo.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
@@ -219,7 +219,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
|
|||||||
mCycleStart = rule.start.toEpochSecond() * 1000L;
|
mCycleStart = rule.start.toEpochSecond() * 1000L;
|
||||||
mCycleEnd = rule.end.toEpochSecond() * 1000L;
|
mCycleEnd = rule.end.toEpochSecond() * 1000L;
|
||||||
}
|
}
|
||||||
mSnapshotTime = System.currentTimeMillis() - primaryPlan.getDataUsageTime();
|
mSnapshotTime = primaryPlan.getDataUsageTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mManageSubscriptionIntent =
|
mManageSubscriptionIntent =
|
||||||
|
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.support.v7.preference.PreferenceViewHolder;
|
import android.support.v7.preference.PreferenceViewHolder;
|
||||||
@@ -31,6 +29,7 @@ import android.widget.TextView;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
|
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
|
||||||
|
import com.android.settingslib.Utils;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@@ -41,6 +40,10 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(shadows = SettingsShadowResourcesImpl.class)
|
@Config(shadows = SettingsShadowResourcesImpl.class)
|
||||||
public class DataUsageSummaryPreferenceTest {
|
public class DataUsageSummaryPreferenceTest {
|
||||||
@@ -119,6 +122,31 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
|
public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
||||||
@@ -140,7 +168,7 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
|
public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
|
||||||
// just under one day
|
// 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 */,
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user