diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index a0d2521..ad95236 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -312,5 +312,16 @@ Simple3 Icon Vivo Icon Margaritov Icon + + + 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 new file mode 100644 index 0000000..a7222e4 --- /dev/null +++ b/res/xml/battery_light_settings.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/xml/cherish_settings_notifications.xml b/res/xml/cherish_settings_notifications.xml index 615fb7c..0a6fdd0 100644 --- a/res/xml/cherish_settings_notifications.xml +++ b/res/xml/cherish_settings_notifications.xml @@ -42,6 +42,11 @@ + + diff --git a/src/com/cherish/settings/fragments/BatteryLightSettings.java b/src/com/cherish/settings/fragments/BatteryLightSettings.java new file mode 100644 index 0000000..8ffe678 --- /dev/null +++ b/src/com/cherish/settings/fragments/BatteryLightSettings.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2017 The ABC rom + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.cherish.settings.fragments; + +import android.content.ContentResolver; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.UserHandle; +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceScreen; +import android.provider.Settings; + +import com.android.internal.logging.nano.MetricsProto; + +import com.cherish.settings.preferences.SystemSettingSwitchPreference; +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; + +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 + public int getMetricsCategory() { + return MetricsProto.MetricsEvent.CHERISH_SETTINGS; + } + + 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 9f6caab..a52688b 100644 --- a/src/com/cherish/settings/fragments/NotificationSettings.java +++ b/src/com/cherish/settings/fragments/NotificationSettings.java @@ -40,6 +40,7 @@ import java.util.List; public class NotificationSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{ private static final String INCALL_VIB_OPTIONS = "incall_vib_options"; + private Preference mChargingLeds; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -53,6 +54,13 @@ public class NotificationSettings extends SettingsPreferenceFragment implements if (!Utils.isVoiceCapable(getActivity())) { prefScreen.removePreference(incallVibCategory); } + + mChargingLeds = (Preference) findPreference("charging_light"); + if (mChargingLeds != null + && !getResources().getBoolean( + com.android.internal.R.bool.config_intrusiveBatteryLed)) { + prefScreen.removePreference(mChargingLeds); + } }