diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index a12f179..c1a3884 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -109,4 +109,15 @@ Styles and Wallpapers Browse and select installed themes + + + Battery charging light + Enable + Battery light in Do Not Disturb mode + Blinking light on low battery + Battery light color when charging + Low battery + Medium battery + Almost full battery + Full (100) battery diff --git a/res/xml/battery_light_settings.xml b/res/xml/battery_light_settings.xml index 43c706c..69ef808 100644 --- a/res/xml/battery_light_settings.xml +++ b/res/xml/battery_light_settings.xml @@ -16,5 +16,51 @@ + + + + + + + + + + + + + + + + diff --git a/res/xml/cherish_settings_notifications.xml b/res/xml/cherish_settings_notifications.xml index a95f054..ee92475 100644 --- a/res/xml/cherish_settings_notifications.xml +++ b/res/xml/cherish_settings_notifications.xml @@ -18,4 +18,10 @@ android:title="@string/notifications_title" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> + + diff --git a/src/com/cherish/settings/fragments/BatteryLightSettings.java b/src/com/cherish/settings/fragments/BatteryLightSettings.java index 69d2166..8ffe678 100644 --- a/src/com/cherish/settings/fragments/BatteryLightSettings.java +++ b/src/com/cherish/settings/fragments/BatteryLightSettings.java @@ -36,12 +36,67 @@ import net.margaritov.preference.colorpicker.ColorPickerPreference; public class BatteryLightSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { + private ColorPickerPreference mLowColor; + private ColorPickerPreference mMediumColor; + private ColorPickerPreference mFullColor; + private ColorPickerPreference mReallyFullColor; + private SystemSettingSwitchPreference mLowBatteryBlinking; + + private PreferenceCategory mColorCategory; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.battery_light_settings); PreferenceScreen prefSet = getPreferenceScreen(); + mColorCategory = (PreferenceCategory) findPreference("battery_light_cat"); + + mLowBatteryBlinking = (SystemSettingSwitchPreference)prefSet.findPreference("battery_light_low_blinking"); + if (getResources().getBoolean( + com.android.internal.R.bool.config_ledCanPulse)) { + mLowBatteryBlinking.setChecked(Settings.System.getIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_LOW_BLINKING, 0, UserHandle.USER_CURRENT) == 1); + mLowBatteryBlinking.setOnPreferenceChangeListener(this); + } else { + prefSet.removePreference(mLowBatteryBlinking); + } + + if (getResources().getBoolean(com.android.internal.R.bool.config_multiColorBatteryLed)) { + int color = Settings.System.getIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_LOW_COLOR, 0xFFFF0000, + UserHandle.USER_CURRENT); + mLowColor = (ColorPickerPreference) findPreference("battery_light_low_color"); + mLowColor.setAlphaSliderEnabled(true); + mLowColor.setNewPreviewColor(color); + mLowColor.setOnPreferenceChangeListener(this); + + color = Settings.System.getIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_MEDIUM_COLOR, 0xFFFFFF00, + UserHandle.USER_CURRENT); + mMediumColor = (ColorPickerPreference) findPreference("battery_light_medium_color"); + mMediumColor.setAlphaSliderEnabled(true); + mMediumColor.setNewPreviewColor(color); + mMediumColor.setOnPreferenceChangeListener(this); + + color = Settings.System.getIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_FULL_COLOR, 0xFFFFFF00, + UserHandle.USER_CURRENT); + mFullColor = (ColorPickerPreference) findPreference("battery_light_full_color"); + mFullColor.setAlphaSliderEnabled(true); + mFullColor.setNewPreviewColor(color); + mFullColor.setOnPreferenceChangeListener(this); + + color = Settings.System.getIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_REALLYFULL_COLOR, 0xFF00FF00, + UserHandle.USER_CURRENT); + mReallyFullColor = (ColorPickerPreference) findPreference("battery_light_reallyfull_color"); + mReallyFullColor.setAlphaSliderEnabled(true); + mReallyFullColor.setNewPreviewColor(color); + mReallyFullColor.setOnPreferenceChangeListener(this); + } else { + prefSet.removePreference(mColorCategory); + } } @Override @@ -50,7 +105,38 @@ public class BatteryLightSettings extends SettingsPreferenceFragment implements } public boolean onPreferenceChange(Preference preference, Object newValue) { - + if (preference.equals(mLowColor)) { + int color = ((Integer) newValue).intValue(); + Settings.System.putIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_LOW_COLOR, color, + UserHandle.USER_CURRENT); + return true; + } else if (preference.equals(mMediumColor)) { + int color = ((Integer) newValue).intValue(); + Settings.System.putIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_MEDIUM_COLOR, color, + UserHandle.USER_CURRENT); + return true; + } else if (preference.equals(mFullColor)) { + int color = ((Integer) newValue).intValue(); + Settings.System.putIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_FULL_COLOR, color, + UserHandle.USER_CURRENT); + return true; + } else if (preference.equals(mReallyFullColor)) { + int color = ((Integer) newValue).intValue(); + Settings.System.putIntForUser(getContentResolver(), + Settings.System.BATTERY_LIGHT_REALLYFULL_COLOR, color, + UserHandle.USER_CURRENT); + return true; + } else if (preference == mLowBatteryBlinking) { + boolean value = (Boolean) newValue; + Settings.System.putIntForUser(getActivity().getContentResolver(), + Settings.System.BATTERY_LIGHT_LOW_BLINKING, value ? 1 : 0, + UserHandle.USER_CURRENT); + mLowBatteryBlinking.setChecked(value); + return true; + } return false; } } diff --git a/src/com/cherish/settings/fragments/NotificationSettings.java b/src/com/cherish/settings/fragments/NotificationSettings.java index cde1f7f..192c887 100644 --- a/src/com/cherish/settings/fragments/NotificationSettings.java +++ b/src/com/cherish/settings/fragments/NotificationSettings.java @@ -21,6 +21,8 @@ import net.margaritov.preference.colorpicker.ColorPickerPreference; public class NotificationSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{ + private Preference mChargingLeds; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -28,6 +30,13 @@ public class NotificationSettings extends SettingsPreferenceFragment implements addPreferencesFromResource(R.xml.cherish_settings_notifications); PreferenceScreen prefScreen = getPreferenceScreen(); ContentResolver resolver = getActivity().getContentResolver(); + + mChargingLeds = (Preference) findPreference("charging_light"); + if (mChargingLeds != null + && !getResources().getBoolean( + com.android.internal.R.bool.config_intrusiveBatteryLed)) { + prefScreen.removePreference(mChargingLeds); + } }