Support battery usage chart start index label is the detailed last full charge time
https://screenshot.googleplex.com/5dYp7kJpNPMU6Jx.png https://screenshot.googleplex.com/7ZSbWyCGRFSym6A.png https://screenshot.googleplex.com/9GsPTa9zd2XttDX.png Bug: 271214926 Fix: 271214926 Test: manual Change-Id: Ic869653f66866964f34e111dd2ee8c052313e119
This commit is contained in:
@@ -251,8 +251,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
hourlyBatteryLevelsPerDay.getLevels(),
|
||||
hourlyBatteryLevelsPerDay.getTimestamps(),
|
||||
BatteryChartViewModel.AxisLabelPosition.BETWEEN_TRAPEZOIDS,
|
||||
mHourlyChartLabelTextGenerator.setLatestTimestamp(getLast(getLast(
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay()).getTimestamps()))));
|
||||
mHourlyChartLabelTextGenerator.updateSpecialCaseContext(batteryLevelData)));
|
||||
}
|
||||
refreshUi();
|
||||
}
|
||||
@@ -640,7 +639,11 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
|
||||
private final class HourlyChartLabelTextGenerator implements
|
||||
BatteryChartViewModel.LabelTextGenerator {
|
||||
private Long mLatestTimestamp;
|
||||
private static final int FULL_CHARGE_BATTERY_LEVEL = 100;
|
||||
|
||||
private boolean mIsFromFullCharge;
|
||||
private long mFistTimestamp;
|
||||
private long mLatestTimestamp;
|
||||
|
||||
@Override
|
||||
public String generateText(List<Long> timestamps, int index) {
|
||||
@@ -648,24 +651,37 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
// Replaces the latest timestamp text to "now".
|
||||
return mContext.getString(R.string.battery_usage_chart_label_now);
|
||||
}
|
||||
return ConvertUtils.utcToLocalTimeHour(mContext, timestamps.get(index),
|
||||
mIs24HourFormat);
|
||||
long timestamp = timestamps.get(index);
|
||||
boolean showMinute = false;
|
||||
if (Objects.equal(timestamp, mFistTimestamp)) {
|
||||
if (mIsFromFullCharge) {
|
||||
showMinute = true;
|
||||
} else {
|
||||
// starts from 7 days ago
|
||||
timestamp = TimestampUtils.getLastEvenHourTimestamp(timestamp);
|
||||
}
|
||||
}
|
||||
return ConvertUtils.utcToLocalTimeHour(
|
||||
mContext, timestamp, mIs24HourFormat, showMinute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateFullText(List<Long> timestamps, int index) {
|
||||
if (Objects.equal(timestamps.get(index), mLatestTimestamp)) {
|
||||
// Replaces the latest timestamp text to "now".
|
||||
return mContext.getString(R.string.battery_usage_chart_label_now);
|
||||
}
|
||||
return index == timestamps.size() - 1
|
||||
? generateText(timestamps, index)
|
||||
: mContext.getString(R.string.battery_usage_timestamps_hyphen,
|
||||
generateText(timestamps, index), generateText(timestamps, index + 1));
|
||||
}
|
||||
|
||||
public HourlyChartLabelTextGenerator setLatestTimestamp(Long latestTimestamp) {
|
||||
this.mLatestTimestamp = latestTimestamp;
|
||||
HourlyChartLabelTextGenerator updateSpecialCaseContext(
|
||||
@NonNull final BatteryLevelData batteryLevelData) {
|
||||
BatteryLevelData.PeriodBatteryLevelData firstDayLevelData =
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay().get(0);
|
||||
this.mIsFromFullCharge =
|
||||
firstDayLevelData.getLevels().get(0) == FULL_CHARGE_BATTERY_LEVEL;
|
||||
this.mFistTimestamp = firstDayLevelData.getTimestamps().get(0);
|
||||
this.mLatestTimestamp = getLast(getLast(
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay()).getTimestamps());
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user