1 package com.android.settings.fuelgauge.batterysaver; 2 3 import android.content.Context; 4 import android.icu.text.NumberFormat; 5 import android.provider.Settings; 6 import android.provider.Settings.Global; 7 import android.text.TextUtils; 8 9 import androidx.preference.Preference; 10 import androidx.preference.SwitchPreference; 11 import com.android.settings.R; 12 import com.android.settings.core.PreferenceControllerMixin; 13 import com.android.settings.core.TogglePreferenceController; 14 15 public class BatterySaverStickyPreferenceController extends TogglePreferenceController implements 16 PreferenceControllerMixin, Preference.OnPreferenceChangeListener { 17 18 private Context mContext; 19 BatterySaverStickyPreferenceController(Context context, String preferenceKey)20 public BatterySaverStickyPreferenceController(Context context, String preferenceKey) { 21 super(context, preferenceKey); 22 mContext = context; 23 } 24 25 @Override isChecked()26 public boolean isChecked() { 27 return Settings.Global.getInt(mContext.getContentResolver(), 28 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1; 29 } 30 31 @Override setChecked(boolean isChecked)32 public boolean setChecked(boolean isChecked) { 33 Settings.Global.putInt(mContext.getContentResolver(), 34 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 35 isChecked ? 1 : 0); 36 return true; 37 } 38 39 @Override refreshSummary(Preference preference)40 protected void refreshSummary(Preference preference) { 41 super.refreshSummary(preference); 42 final int stickyShutoffLevel = Settings.Global.getInt( 43 mContext.getContentResolver(), Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, 90); 44 preference.setSummary(TextUtils.expandTemplate( 45 mContext.getString(R.string.battery_saver_sticky_description_new), 46 NumberFormat.getIntegerInstance().format(stickyShutoffLevel))); 47 } 48 49 @Override updateState(Preference preference)50 public void updateState(Preference preference) { 51 int setting = Settings.Global.getInt(mContext.getContentResolver(), 52 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1); 53 54 ((SwitchPreference) preference).setChecked(setting == 1); 55 refreshSummary(preference); 56 } 57 58 @Override getAvailabilityStatus()59 public int getAvailabilityStatus() { 60 return AVAILABLE; 61 } 62 } 63