From 43c9ebd5d88dc14570fe58f5c6ad6b9e703e9b5c Mon Sep 17 00:00:00 2001 From: ezio84 Date: Sun, 17 Sep 2017 19:28:50 +0800 Subject: [PATCH] Cherish:Battery light customization [2/2] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hưng Phan --- res/values/cherish_strings.xml | 13 +- res/xml/battery_light_settings.xml | 59 ++++++++ res/xml/cherish_settings_notifications.xml | 5 + .../fragments/BatteryLightSettings.java | 142 ++++++++++++++++++ .../fragments/NotificationSettings.java | 8 + 5 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 res/xml/battery_light_settings.xml create mode 100644 src/com/cherish/settings/fragments/BatteryLightSettings.java diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index 77f4ea7..3993cb9 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -123,7 +123,7 @@ Search Search apps - + Browse the dark theme options @@ -148,5 +148,16 @@ Wi-Fi + + + 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 68b26ad..1c16eae 100644 --- a/res/xml/cherish_settings_notifications.xml +++ b/res/xml/cherish_settings_notifications.xml @@ -42,5 +42,10 @@ --> + + 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 e99ce7b..eeb1f5d 100644 --- a/src/com/cherish/settings/fragments/NotificationSettings.java +++ b/src/com/cherish/settings/fragments/NotificationSettings.java @@ -38,6 +38,7 @@ import java.util.List; @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class NotificationSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{ + private Preference mChargingLeds; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -46,6 +47,13 @@ public class NotificationSettings extends SettingsPreferenceFragment implements ContentResolver resolver = getActivity().getContentResolver(); final PreferenceScreen prefScreen = getPreferenceScreen(); final Resources res = getResources(); + + mChargingLeds = (Preference) findPreference("charging_light"); + if (mChargingLeds != null + && !getResources().getBoolean( + com.android.internal.R.bool.config_intrusiveBatteryLed)) { + prefScreen.removePreference(mChargingLeds); + } }