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

Commit 833e47d8 authored by Zaiyue Xue's avatar Zaiyue Xue
Browse files

[Battery usage U] [UI] Show total "Screen On Time" in the battery usage page

parent c1f72222
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
<!--
  ~ Copyright (C) 2023 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginStart="24dp"
          android:layout_marginTop="8dp"
          android:textAlignment="viewStart"
          android:textAppearance="?android:attr/textAppearanceSmall"
          android:textColor="?android:attr/textColorPrimary" />
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -5196,6 +5196,10 @@
    <string name="battery_usage_breakdown_title_since_last_full_charge">Battery usage since last full charge</string>
    <!-- [CHAR_LIMIT=NONE] Battery usage breakdown title for a selected slot -->
    <string name="battery_usage_breakdown_title_for_slot">Battery usage for <xliff:g id="slot">%s</xliff:g></string>
    <!-- [CHAR_LIMIT=NONE] Device screen on time category since last full charge -->
    <string name="screen_time_category_last_full_charge">Screen time since last full charge</string>
    <!-- [CHAR_LIMIT=NONE] Device screen on time category for a selected slot -->
    <string name="screen_time_category_for_slot">Screen time for <xliff:g id="slot">%s</xliff:g></string>
    <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. -->
    <string name="battery_usage_spinner_breakdown_by_apps">Breakdown by apps</string>
    <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. -->
+12 −0
Original line number Diff line number Diff line
@@ -26,6 +26,18 @@
        settings:controller=
            "com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController" />

    <PreferenceCategory
        android:key="screen_on_time_category"
        settings:controller=
            "com.android.settings.fuelgauge.batteryusage.ScreenOnTimeController"
        settings:isPreferenceVisible="false">

        <com.android.settings.fuelgauge.batteryusage.TextViewPreference
            android:key="screen_on_time_text"
            settings:isPreferenceVisible="false" />

    </PreferenceCategory>

    <PreferenceCategory
        android:key="battery_usage_breakdown"
        settings:controller=
+27 −1
Original line number Diff line number Diff line
@@ -88,6 +88,19 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
                BatteryDiffData slotUsageData, String slotTimestamp, boolean isAllUsageDataEmpty);
    }

    /**
     * A callback listener for the device screen on time is updated.
     * This happens when screen on time data is ready or the selected index is changed.
     */
    public interface OnScreenOnTimeUpdatedListener {
        /**
         * The callback function for the device screen on time is updated.
         * @param screenOnTime The selected slot device screen on time.
         * @param slotTimestamp The selected slot timestamp information.
         */
        void onScreenOnTimeUpdated(Long screenOnTime, String slotTimestamp);
    }

    @VisibleForTesting
    Context mPrefContext;
    @VisibleForTesting
@@ -100,6 +113,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    int mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
    @VisibleForTesting
    Map<Integer, Map<Integer, BatteryDiffData>> mBatteryUsageMap;
    @VisibleForTesting
    Map<Integer, Map<Integer, Long>> mScreenOnTimeMap;

    private boolean mIs24HourFormat;
    private boolean mHourlyChartVisible = true;
@@ -108,6 +123,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
    private BatteryChartViewModel mDailyViewModel;
    private List<BatteryChartViewModel> mHourlyViewModels;
    private OnBatteryUsageUpdatedListener mOnBatteryUsageUpdatedListener;
    private OnScreenOnTimeUpdatedListener mOnScreenOnTimeUpdatedListener;

    private final SettingsActivity mActivity;
    private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -202,6 +218,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
        mOnBatteryUsageUpdatedListener = listener;
    }

    void setOnScreenOnTimeUpdatedListener(OnScreenOnTimeUpdatedListener listener) {
        mOnScreenOnTimeUpdatedListener = listener;
    }

    void setBatteryHistoryMap(
            final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
        Log.d(TAG, "setBatteryHistoryMap() " + (batteryHistoryMap == null ? "null"
@@ -212,6 +232,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
                DataProcessManager.getBatteryLevelData(mContext, mHandler, batteryHistoryMap,
                        batteryCallbackData -> {
                            mBatteryUsageMap = batteryCallbackData.getBatteryUsageMap();
                            mScreenOnTimeMap = batteryCallbackData.getDeviceScreenOnTime();
                            refreshUi();
                        });
        Log.d(TAG, "getBatteryLevelData: " + batteryLevelData);
@@ -318,7 +339,12 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
            return false;
        }


        if (mOnScreenOnTimeUpdatedListener != null && mScreenOnTimeMap != null
                && mScreenOnTimeMap.get(mDailyChartIndex) != null) {
            mOnScreenOnTimeUpdatedListener.onScreenOnTimeUpdated(
                    mScreenOnTimeMap.get(mDailyChartIndex).get(mHourlyChartIndex),
                    getSlotInformation());
        }
        if (mOnBatteryUsageUpdatedListener != null && mBatteryUsageMap != null
                && mBatteryUsageMap.get(mDailyChartIndex) != null) {
            final BatteryDiffData slotUsageData =
+5 −0
Original line number Diff line number Diff line
@@ -129,14 +129,18 @@ public class PowerUsageAdvanced extends PowerUsageBase {
        mBatteryChartPreferenceController =
                new BatteryChartPreferenceController(
                        context, getSettingsLifecycle(), (SettingsActivity) getActivity());
        ScreenOnTimeController screenOnTimeController = new ScreenOnTimeController(context);
        BatteryUsageBreakdownController batteryUsageBreakdownController =
                new BatteryUsageBreakdownController(
                        context, getSettingsLifecycle(), (SettingsActivity) getActivity(), this);

        mBatteryChartPreferenceController.setOnScreenOnTimeUpdatedListener(
                screenOnTimeController::handleSceenOnTimeUpdated);
        mBatteryChartPreferenceController.setOnBatteryUsageUpdatedListener(
                batteryUsageBreakdownController::handleBatteryUsageUpdated);

        controllers.add(mBatteryChartPreferenceController);
        controllers.add(screenOnTimeController);
        controllers.add(batteryUsageBreakdownController);
        setBatteryChartPreferenceController();
        return controllers;
@@ -192,6 +196,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {
                    final List<AbstractPreferenceController> controllers = new ArrayList<>();
                    controllers.add(new BatteryChartPreferenceController(
                            context, null /* lifecycle */, null /* activity */));
                    controllers.add((new ScreenOnTimeController(context)));
                    controllers.add(new BatteryUsageBreakdownController(
                            context, null /* lifecycle */, null /* activity */,
                            null /* fragment */));
Loading