In Data Usage screen, Below the data bar, Add “X days left” field.
Bug: 70950124 Test: manual Test: make RunSettingsRoboTests Change-Id: I35eb3f0c09c84d609ad54e87400913ec77e19ea0
This commit is contained in:
committed by
Sundeep Ghuman
parent
21ef6cb644
commit
a6f6e9c41c
@@ -8754,8 +8754,17 @@
|
|||||||
<!-- Optional part of data usage showing the remaining amount [CHAR LIMIT=30] -->
|
<!-- 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>
|
<string name="data_remaining"><xliff:g name="bytes" example="2 GB">^1</xliff:g> left</string>
|
||||||
|
|
||||||
<!-- Informational text about time left in billing cycle [CHAR LIMIT=30] -->
|
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
|
||||||
<string name="cycle_left_time_text"><xliff:g name="time" example="2d">%1$s</xliff:g> left in this cycle</string>
|
<string name="cycle_left_multiple_days"><xliff:g name="time" example="2d">%d</xliff:g> days left</string>
|
||||||
|
|
||||||
|
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
|
||||||
|
<plurals name="billing_cycle_days_left">
|
||||||
|
<item quantity="one">%d day left</item>
|
||||||
|
<item quantity="other">%d days left</item>
|
||||||
|
</plurals>
|
||||||
|
|
||||||
|
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
|
||||||
|
<string name="billing_cycle_less_than_one_day_left">Less than 1 day left</string>
|
||||||
|
|
||||||
<!-- Informational text about carrier and update time [CHAR LIMIT=30] -->
|
<!-- Informational text about carrier and update time [CHAR LIMIT=30] -->
|
||||||
<string name="carrier_and_update_text">Updated by <xliff:g name="carrier" example="T-mobile">%1$s</xliff:g> <xliff:g name="time" example="3m">%2$s</xliff:g></string>
|
<string name="carrier_and_update_text">Updated by <xliff:g name="carrier" example="T-mobile">%1$s</xliff:g> <xliff:g name="time" example="3m">%2$s</xliff:g></string>
|
||||||
|
@@ -32,11 +32,13 @@ import com.android.settings.R;
|
|||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a summary of data usage.
|
* Provides a summary of data usage.
|
||||||
*/
|
*/
|
||||||
public class DataUsageSummaryPreference extends Preference {
|
public class DataUsageSummaryPreference extends Preference {
|
||||||
|
private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
|
||||||
|
|
||||||
private boolean mChartEnabled = true;
|
private boolean mChartEnabled = true;
|
||||||
private String mStartLabel;
|
private String mStartLabel;
|
||||||
@@ -136,10 +138,7 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title);
|
TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title);
|
||||||
usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
|
usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
|
updateCycleTimeText(holder);
|
||||||
cycleTime.setText(getContext().getString(R.string.cycle_left_time_text,
|
|
||||||
StringUtil.formatElapsedTime(getContext(),
|
|
||||||
mCycleEndTimeMs - System.currentTimeMillis(),false /* withSeconds */)));
|
|
||||||
|
|
||||||
TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
|
TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
|
||||||
setCarrierInfo(carrierInfo, mCarrierName, mSnapshotTimeMs);
|
setCarrierInfo(carrierInfo, mCarrierName, mSnapshotTimeMs);
|
||||||
@@ -180,6 +179,21 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateCycleTimeText(PreferenceViewHolder holder) {
|
||||||
|
float daysLeft =
|
||||||
|
((float) mCycleEndTimeMs - System.currentTimeMillis()) / MILLIS_IN_A_DAY;
|
||||||
|
if (daysLeft < 0) {
|
||||||
|
daysLeft = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
|
||||||
|
cycleTime.setText(
|
||||||
|
(daysLeft > 0 && daysLeft < 1)
|
||||||
|
? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
|
||||||
|
: getContext().getResources().getQuantityString(
|
||||||
|
R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
|
||||||
|
}
|
||||||
|
|
||||||
private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) {
|
private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) {
|
||||||
if (mNumPlans > 0 && updateAge >= 0L) {
|
if (mNumPlans > 0 && updateAge >= 0L) {
|
||||||
carrierInfo.setVisibility(View.VISIBLE);
|
carrierInfo.setVisibility(View.VISIBLE);
|
||||||
|
@@ -32,6 +32,7 @@ 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.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -137,16 +138,41 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetUsageInfo_cycleRemainingTimeShown() {
|
public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
// just under one day
|
||||||
|
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1) - 1;
|
||||||
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
String cyclePrefix = StringUtil.formatElapsedTime(mContext, CYCLE_DURATION_MILLIS,
|
|
||||||
false /* withSeconds */).toString();
|
|
||||||
String text = mContext.getString(R.string.cycle_left_time_text, cyclePrefix);
|
|
||||||
|
|
||||||
bindViewHolder();
|
bindViewHolder();
|
||||||
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
assertThat(mCycleTime.getText()).isEqualTo(text);
|
assertThat(mCycleTime.getText()).isEqualTo(
|
||||||
|
mContext.getString(R.string.billing_cycle_less_than_one_day_left));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayZeroDays() {
|
||||||
|
final long cycleEnd = System.currentTimeMillis() - 1L;
|
||||||
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
||||||
|
new Intent());
|
||||||
|
|
||||||
|
bindViewHolder();
|
||||||
|
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mCycleTime.getText()).isEqualTo(
|
||||||
|
mContext.getResources().getQuantityString(R.plurals.billing_cycle_days_left, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetUsageInfo_cycleRemainingTimeDaysLeft_shouldUsePlurals() {
|
||||||
|
final int daysLeft = 3;
|
||||||
|
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
|
||||||
|
+ TimeUnit.HOURS.toMillis(1);
|
||||||
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
|
||||||
|
new Intent());
|
||||||
|
|
||||||
|
bindViewHolder();
|
||||||
|
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mCycleTime.getText()).isEqualTo(daysLeft + " days left");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user