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

Commit f148baa3 authored by Yi-Ling Chuang's avatar Yi-Ling Chuang
Browse files

Remove redundant methods and refactor

Remove the summary method and write the code in AOSP directly instead to
force string consistency. Also refactor a bit after the modification.

Fixes: 276399056
Test: robotests
Change-Id: I76ad740b694363a3cdfb3748e41c840fb678b93d
parent 2856b252
Loading
Loading
Loading
Loading
+23 −4
Original line number Diff line number Diff line
@@ -17,32 +17,51 @@
package com.android.settings.deviceinfo.batteryinfo;

import android.content.Context;
import android.os.BatteryManager;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.overlay.FeatureFactory;

import java.util.concurrent.TimeUnit;

/**
 * A controller that manages the information about battery first use date.
 */
public class BatteryFirstUseDatePreferenceController extends BasePreferenceController {

    private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
    private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
    private final BatteryManager mBatteryManager;

    private long mFirstUseDateInMs;

    public BatteryFirstUseDatePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mBatterySettingsFeatureProvider = FeatureFactory.getFactory(
                context).getBatterySettingsFeatureProvider(context);
                context).getBatterySettingsFeatureProvider();
        mBatteryManager = mContext.getSystemService(BatteryManager.class);
    }

    @Override
    public int getAvailabilityStatus() {
        return mBatterySettingsFeatureProvider.isFirstUseDateAvailable()
        return mBatterySettingsFeatureProvider.isFirstUseDateAvailable(getFirstUseDate())
                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
    }

    @Override
    public CharSequence getSummary() {
        return mBatterySettingsFeatureProvider.getFirstUseDateSummary();
        return isAvailable()
                ? BatteryUtils.getBatteryInfoFormattedDate(mFirstUseDateInMs)
                : null;
    }

    private long getFirstUseDate() {
        if (mFirstUseDateInMs == 0L) {
            final long firstUseDateInSec = mBatteryManager.getLongProperty(
                    BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE);
            mFirstUseDateInMs = TimeUnit.MILLISECONDS.convert(firstUseDateInSec, TimeUnit.SECONDS);
        }
        return mFirstUseDateInMs;
    }
}
+24 −4
Original line number Diff line number Diff line
@@ -17,32 +17,52 @@
package com.android.settings.deviceinfo.batteryinfo;

import android.content.Context;
import android.os.BatteryManager;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.BatterySettingsFeatureProvider;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.overlay.FeatureFactory;

import java.util.concurrent.TimeUnit;

/**
 * A controller that manages the information about battery manufacture date.
 */
public class BatteryManufactureDatePreferenceController extends BasePreferenceController {

    private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
    private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
    private final BatteryManager mBatteryManager;

    private long mManufactureDateInMs;

    public BatteryManufactureDatePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mBatterySettingsFeatureProvider = FeatureFactory.getFactory(
                context).getBatterySettingsFeatureProvider(context);
                context).getBatterySettingsFeatureProvider();
        mBatteryManager = mContext.getSystemService(BatteryManager.class);
    }

    @Override
    public int getAvailabilityStatus() {
        return mBatterySettingsFeatureProvider.isManufactureDateAvailable()
        return mBatterySettingsFeatureProvider.isManufactureDateAvailable(getManufactureDate())
                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
    }

    @Override
    public CharSequence getSummary() {
        return mBatterySettingsFeatureProvider.getManufactureDateSummary();
        return isAvailable()
                ? BatteryUtils.getBatteryInfoFormattedDate(mManufactureDateInMs)
                : null;
    }

    private long getManufactureDate() {
        if (mManufactureDateInMs == 0L) {
            final long manufactureDateInSec = mBatteryManager.getLongProperty(
                    BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE);
            mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec,
                    TimeUnit.SECONDS);
        }
        return mManufactureDateInMs;
    }
}
+2 −9
Original line number Diff line number Diff line
@@ -20,15 +20,8 @@ package com.android.settings.fuelgauge;
public interface BatterySettingsFeatureProvider {

    /** Returns true if manufacture date should be shown */
    boolean isManufactureDateAvailable();
    boolean isManufactureDateAvailable(long manufactureDateMs);

    /** Returns true if first use date should be shown */
    boolean isFirstUseDateAvailable();

    /** Returns the summary of battery manufacture date */
    CharSequence getManufactureDateSummary();

    /** Returns the summary of battery first use date */
    CharSequence getFirstUseDateSummary();

    boolean isFirstUseDateAvailable(long firstUseDateMs);
}
+2 −63
Original line number Diff line number Diff line
@@ -16,77 +16,16 @@

package com.android.settings.fuelgauge;

import android.content.Context;
import android.os.BatteryManager;

import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.concurrent.TimeUnit;

/** Feature provider implementation for battery settings usage. */
public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatureProvider {

    protected Context mContext;

    private BatteryManager mBatteryManager;
    private long mManufactureDateInMs;
    private long mFirstUseDateInMs;

    public BatterySettingsFeatureProviderImpl(Context context) {
        mContext = context.getApplicationContext();
        mBatteryManager = mContext.getSystemService(BatteryManager.class);
    }

    @Override
    public boolean isManufactureDateAvailable() {
    public boolean isManufactureDateAvailable(long manufactureDateMs) {
        return false;
    }

    @Override
    public boolean isFirstUseDateAvailable() {
    public boolean isFirstUseDateAvailable(long firstUseDateMs) {
        return false;
    }

    @Override
    public CharSequence getManufactureDateSummary() {
        return isManufactureDateAvailable()
                ? getFormattedDate(getManufactureDate())
                : null;
    }

    @Override
    public CharSequence getFirstUseDateSummary() {
        return isFirstUseDateAvailable()
                ? getFormattedDate(getFirstUseDate())
                : null;
    }

    protected long getManufactureDate() {
        if (mManufactureDateInMs == 0L) {
            final long manufactureDateInSec = mBatteryManager.getLongProperty(
                    BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE);
            mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec,
                    TimeUnit.SECONDS);
        }
        return mManufactureDateInMs;
    }

    protected long getFirstUseDate() {
        if (mFirstUseDateInMs == 0L) {
            final long firstUseDateInSec = mBatteryManager.getLongProperty(
                    BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE);
            mFirstUseDateInMs = TimeUnit.MILLISECONDS.convert(firstUseDateInSec, TimeUnit.SECONDS);
        }
        return mFirstUseDateInMs;
    }

    private CharSequence getFormattedDate(long dateInMs) {
        final Instant instant = Instant.ofEpochMilli(dateInMs);
        final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format(
                DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));

        return localDate;
    }
}
+11 −1
Original line number Diff line number Diff line
@@ -64,8 +64,10 @@ import com.google.protobuf.MessageLite;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.List;

/**
@@ -671,6 +673,14 @@ public class BatteryUtils {
        }
        return summary.toString();
    }
    /** Format the date of battery related info */
    public static CharSequence getBatteryInfoFormattedDate(long dateInMs) {
        final Instant instant = Instant.ofEpochMilli(dateInMs);
        final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format(
                DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));

        return localDate;
    }

    /** Builds the battery usage time information for one timestamp. */
    private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs,
Loading