Merge "Fix footer preference may flash one time when entering" into sc-dev
This commit is contained in:
@@ -6497,8 +6497,10 @@
|
|||||||
<string name="battery_usage_for_total_time">Total: <xliff:g id="time">%s</xliff:g></string>
|
<string name="battery_usage_for_total_time">Total: <xliff:g id="time">%s</xliff:g></string>
|
||||||
<!-- [CHAR_LIMIT=NONE] Battery usage item for background usage time -->
|
<!-- [CHAR_LIMIT=NONE] Battery usage item for background usage time -->
|
||||||
<string name="battery_usage_for_background_time">Background: <xliff:g id="time">%s</xliff:g></string>
|
<string name="battery_usage_for_background_time">Background: <xliff:g id="time">%s</xliff:g></string>
|
||||||
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer contentt -->
|
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer content -->
|
||||||
<string name="battery_usage_screen_footer">Battery usage data is approximate and doesn\'t measure usage when phone is charging</string>
|
<string name="battery_usage_screen_footer">Battery usage data is approximate and doesn\'t measure usage when phone is charging</string>
|
||||||
|
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer for empty content -->
|
||||||
|
<string name="battery_usage_screen_footer_empty">Battery usage data will be available after you use your phone for a few hours</string>
|
||||||
<!-- [CHAR_LIMIT=NONE] Accessibility content description for battery chart view. -->
|
<!-- [CHAR_LIMIT=NONE] Accessibility content description for battery chart view. -->
|
||||||
<string name="battery_usage_chart">Battery usage chart</string>
|
<string name="battery_usage_chart">Battery usage chart</string>
|
||||||
<!-- Process Stats strings -->
|
<!-- Process Stats strings -->
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
android:key="app_list"/>
|
android:key="app_list"/>
|
||||||
|
|
||||||
<com.android.settingslib.widget.FooterPreference
|
<com.android.settingslib.widget.FooterPreference
|
||||||
|
android:key="battery_graph_footer"
|
||||||
android:title="@string/battery_usage_screen_footer"
|
android:title="@string/battery_usage_screen_footer"
|
||||||
android:selectable="false"
|
android:selectable="false"
|
||||||
settings:searchable="false"/>
|
settings:searchable="false"/>
|
||||||
|
@@ -48,6 +48,7 @@ import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
|||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -62,6 +63,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
|
OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
|
||||||
ExpandDividerPreference.OnExpandListener {
|
ExpandDividerPreference.OnExpandListener {
|
||||||
private static final String TAG = "BatteryChartPreferenceController";
|
private static final String TAG = "BatteryChartPreferenceController";
|
||||||
|
private static final String KEY_FOOTER_PREF = "battery_graph_footer";
|
||||||
|
private static final int ADD_FOOTER_DELAYED_MS = 250;
|
||||||
|
|
||||||
/** Desired battery history size for timestamp slots. */
|
/** Desired battery history size for timestamp slots. */
|
||||||
public static final int DESIRED_HISTORY_SIZE = 25;
|
public static final int DESIRED_HISTORY_SIZE = 25;
|
||||||
private static final int CHART_LEVEL_ARRAY_SIZE = 13;
|
private static final int CHART_LEVEL_ARRAY_SIZE = 13;
|
||||||
@@ -90,6 +94,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
@VisibleForTesting int mTrapezoidIndex = BatteryChartView.SELECTED_INDEX_INVALID;
|
@VisibleForTesting int mTrapezoidIndex = BatteryChartView.SELECTED_INDEX_INVALID;
|
||||||
|
|
||||||
private boolean mIs24HourFormat = false;
|
private boolean mIs24HourFormat = false;
|
||||||
|
private boolean mIsFooterPrefAdded = false;
|
||||||
|
private PreferenceScreen mPreferenceScreen;
|
||||||
|
private FooterPreference mFooterPreference;
|
||||||
|
|
||||||
private final String mPreferenceKey;
|
private final String mPreferenceKey;
|
||||||
private final SettingsActivity mActivity;
|
private final SettingsActivity mActivity;
|
||||||
@@ -178,9 +185,15 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
|
mPreferenceScreen = screen;
|
||||||
mPrefContext = screen.getContext();
|
mPrefContext = screen.getContext();
|
||||||
mAppListPrefGroup = screen.findPreference(mPreferenceKey);
|
mAppListPrefGroup = screen.findPreference(mPreferenceKey);
|
||||||
mAppListPrefGroup.setOrderingAsAdded(false);
|
mAppListPrefGroup.setOrderingAsAdded(false);
|
||||||
|
mFooterPreference = screen.findPreference(KEY_FOOTER_PREF);
|
||||||
|
// Removes footer first until usage data is loaded to avoid flashing.
|
||||||
|
if (mFooterPreference != null) {
|
||||||
|
screen.removePreference(mFooterPreference);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -264,6 +277,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
mBatteryIndexedMap = null;
|
mBatteryIndexedMap = null;
|
||||||
mBatteryHistoryKeys = null;
|
mBatteryHistoryKeys = null;
|
||||||
mBatteryHistoryLevels = null;
|
mBatteryHistoryLevels = null;
|
||||||
|
addFooterPreferenceIfNeeded(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mBatteryHistoryKeys = getBatteryHistoryKeys(batteryHistoryMap);
|
mBatteryHistoryKeys = getBatteryHistoryKeys(batteryHistoryMap);
|
||||||
@@ -347,6 +361,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
private void addAllPreferences() {
|
private void addAllPreferences() {
|
||||||
final List<BatteryDiffEntry> entries =
|
final List<BatteryDiffEntry> entries =
|
||||||
mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
|
mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
|
||||||
|
addFooterPreferenceIfNeeded(!entries.isEmpty());
|
||||||
if (entries == null) {
|
if (entries == null) {
|
||||||
Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
|
Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
|
||||||
return;
|
return;
|
||||||
@@ -575,6 +590,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
|||||||
mBatteryChartView.setLatestTimestamp(latestTimestamp);
|
mBatteryChartView.setLatestTimestamp(latestTimestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addFooterPreferenceIfNeeded(boolean containAppItems) {
|
||||||
|
if (mIsFooterPrefAdded || mFooterPreference == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mIsFooterPrefAdded = true;
|
||||||
|
mFooterPreference.setTitle(mPrefContext.getString(
|
||||||
|
containAppItems
|
||||||
|
? R.string.battery_usage_screen_footer
|
||||||
|
: R.string.battery_usage_screen_footer_empty));
|
||||||
|
mHandler.postDelayed(
|
||||||
|
() -> mPreferenceScreen.addPreference(mFooterPreference),
|
||||||
|
ADD_FOOTER_DELAYED_MS);
|
||||||
|
}
|
||||||
|
|
||||||
private static String utcToLocalTime(long[] timestamps) {
|
private static String utcToLocalTime(long[] timestamps) {
|
||||||
final StringBuilder builder = new StringBuilder();
|
final StringBuilder builder = new StringBuilder();
|
||||||
for (int index = 0; index < timestamps.length; index++) {
|
for (int index = 0; index < timestamps.length; index++) {
|
||||||
|
Reference in New Issue
Block a user