Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8033a6ff authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

Merge "Fix footer preference may flash one time when entering" into sc-dev

parents 5b6cb52c e030d861
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -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 -->
+1 −0
Original line number Original line Diff line number Diff line
@@ -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"/>
+29 −0
Original line number Original line Diff line number Diff line
@@ -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++) {