diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml index c7cf873f017..21a836d6d9a 100644 --- a/res/xml/power_usage_summary.xml +++ b/res/xml/power_usage_summary.xml @@ -26,7 +26,6 @@ android:title="@string/summary_placeholder" android:selectable="false" android:paddingBottom="0px" - android:persistent="false" settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" /> , PreferenceMetadata, PreferenceBinding, - PreferenceLifecycleProvider { + PreferenceLifecycleProvider, + RangeValue { - @VisibleForTesting - var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null + @VisibleForTesting var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null override val key: String get() = KEY @@ -58,25 +64,50 @@ class BatteryHeaderPreference : override fun onCreate(context: PreferenceLifecycleContext) { super.onCreate(context) - batteryBroadcastReceiver = BatteryBroadcastReceiver(context).apply { - setBatteryChangedListener { - if (it != BATTERY_NOT_PRESENT) { - context.notifyPreferenceChange(KEY) + batteryBroadcastReceiver = + BatteryBroadcastReceiver(context).apply { + setBatteryChangedListener { + if (it != BATTERY_NOT_PRESENT) { + context.notifyPreferenceChange(KEY) + } } } - } } override fun onStart(context: PreferenceLifecycleContext) { super.onStart(context) - batteryBroadcastReceiver?.register(); + batteryBroadcastReceiver?.register() } override fun onStop(context: PreferenceLifecycleContext) { super.onStop(context) - batteryBroadcastReceiver?.unRegister(); + batteryBroadcastReceiver?.unRegister() } + override fun storage(context: Context): KeyValueStore = + object : NoOpKeyedObservable(), KeyValueStore { + override fun contains(key: String) = BatteryUtils.getBatteryIntent(context) != null + + @Suppress("UNCHECKED_CAST") + override fun getValue(key: String, valueType: Class): T? { + val batteryIntent = BatteryUtils.getBatteryIntent(context) ?: return null + return Utils.getBatteryLevel(batteryIntent) as T + } + + override fun setValue(key: String, valueType: Class, value: T?) = + throw UnsupportedOperationException() + } + + override fun getMinValue(context: Context): Int = 0 + + override fun getMaxValue(context: Context): Int = 100 + + override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) = + ReadWritePermit.ALLOW + + override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) = + ReadWritePermit.DISALLOW + companion object { private const val KEY = "battery_header" private const val BATTERY_MAX_LEVEL: Long = 100L