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 12 import com.android.settings.R; 13 import com.android.settings.core.PreferenceControllerMixin; 14 import com.android.settings.core.TogglePreferenceController; 15 16 public class BatterySaverStickyPreferenceController extends TogglePreferenceController implements 17 PreferenceControllerMixin, Preference.OnPreferenceChangeListener { 18 19 private Context mContext; 20 BatterySaverStickyPreferenceController(Context context, String preferenceKey)21 public BatterySaverStickyPreferenceController(Context context, String preferenceKey) { 22 super(context, preferenceKey); 23 mContext = context; 24 } 25 26 @Override isChecked()27 public boolean isChecked() { 28 return Settings.Global.getInt(mContext.getContentResolver(), 29 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1; 30 } 31 32 @Override setChecked(boolean isChecked)33 public boolean setChecked(boolean isChecked) { 34 Settings.Global.putInt(mContext.getContentResolver(), 35 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 36 isChecked ? 1 : 0); 37 return true; 38 } 39 40 @Override refreshSummary(Preference preference)41 protected void refreshSummary(Preference preference) { 42 super.refreshSummary(preference); 43 final int stickyShutoffLevel = Settings.Global.getInt( 44 mContext.getContentResolver(), Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, 90); 45 preference.setSummary(TextUtils.expandTemplate( 46 mContext.getString(R.string.battery_saver_sticky_description_new), 47 NumberFormat.getIntegerInstance().format(stickyShutoffLevel))); 48 } 49 50 @Override updateState(Preference preference)51 public void updateState(Preference preference) { 52 int setting = Settings.Global.getInt(mContext.getContentResolver(), 53 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1); 54 55 ((SwitchPreference) preference).setChecked(setting == 1); 56 refreshSummary(preference); 57 } 58 59 @Override getAvailabilityStatus()60 public int getAvailabilityStatus() { 61 return AVAILABLE; 62 } 63 64 @Override getSliceHighlightMenuRes()65 public int getSliceHighlightMenuRes() { 66 return R.string.menu_key_battery; 67 } 68 } 69