1 package com.android.settings.fuelgauge.batterysaver; 2 3 import android.content.Context; 4 import android.provider.Settings; 5 import android.provider.Settings.Global; 6 7 import androidx.preference.Preference; 8 import androidx.preference.SwitchPreference; 9 10 import com.android.settings.R; 11 import com.android.settings.Utils; 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 private static final int DEFAULT_STICKY_SHUTOFF_LEVEL = 90; 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(mContext.getContentResolver(), 44 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, DEFAULT_STICKY_SHUTOFF_LEVEL); 45 final String formatPercentage = Utils.formatPercentage(stickyShutoffLevel); 46 preference.setTitle(mContext.getString(R.string.battery_saver_sticky_title_percentage, 47 formatPercentage)); 48 preference.setSummary(mContext.getString(R.string.battery_saver_sticky_description_new, 49 formatPercentage)); 50 } 51 52 @Override updateState(Preference preference)53 public void updateState(Preference preference) { 54 int setting = Settings.Global.getInt(mContext.getContentResolver(), 55 Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1); 56 57 ((SwitchPreference) preference).setChecked(setting == 1); 58 refreshSummary(preference); 59 } 60 61 @Override getAvailabilityStatus()62 public int getAvailabilityStatus() { 63 return AVAILABLE; 64 } 65 66 @Override getSliceHighlightMenuRes()67 public int getSliceHighlightMenuRes() { 68 return R.string.menu_key_battery; 69 } 70 } 71