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