[SQUASH]DerpQuest: Add Battery Bar [2/2]

AquariOS:
    Fixed color preferences to stick - @calebcabob

I'd like to thank and show respect to the following contributors for this
fantastic feature

Lokesh Chamane <lokesh.chamane@pac-rom.com>
SpiritCroc <spiritcroc@gmail.com>
westcripp <korukaltan@gmail.com>

commit fe5fa0cb0b74348d5e0e8172b17ab0f2d272dbf3
Author: Lokesh Chamane <lokesh.chamane@pac-rom.com>
Date:   Thu Aug 4 23:37:17 2016 -0600

    BatteryBar: Gradient Color [2/2]

    Change-Id: If85baf2e724f9c6cdef868af323be039b47e49ad
    Signed-off-by: mydongistiny <jaysonedson@gmail.com>

commit 0f046e9887f547ff130a925d02d75d0a74b369f4
Author: SpiritCroc <spiritcroc@gmail.com>
Date:   Mon May 2 02:52:00 2016 -0700

    Battery bar enhancements [2/2]

    Add color settings for charging & low battery
    Add reversed alignment setting

    Change-Id: I51f7e0499971ed344d8faa6e63d4f89558946cb7
    Signed-off-by: mydongistiny <jaysonedson@gmail.com>

commit be722a66ed4243831c48f45997a4cf1c442bc335
Author: westcripp <korukaltan@gmail.com>
Date:   Sat Jan 10 04:14:45 2015 +0200

    Settings: Add back batterybar [2/2]

    Change-Id: I67b0a971fe9f0b6f5443d8ca7336d5e28e86bccd
    Signed-off-by: mydongistiny <jaysonedson@gmail.com>

Change-Id: I4ad46c0e294b8fcf443926b5bb6d11930d981f91

@idoybh (DerpFest) edits:
    * Improved and simplified the code
    * Converted to a MasterSwitchPreference
    * Added to settings search index

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
bigrushdog
2019-02-23 13:01:23 -08:00
committed by Hưng Phan
parent fad857d2ba
commit f9657adfb8
8 changed files with 412 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ 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

View File

@@ -45,6 +45,7 @@ public class StatusBarSettings extends SettingsPreferenceFragment implements
private static final String STATUS_BAR_BATTERY_CHARGING_BOLT = "status_bar_battery_charging_bolt";
private static final String BATTERY_PERCENTAGE_HIDDEN = "0";
private static final String STATUS_BAR_BATTERY_STYLE = "status_bar_battery_style";
private static final String BATTERY_BAR = "battery_bar_settings";
private static final int BATTERY_STYLE_Q = 0;
private static final int BATTERY_STYLE_DOTTED_CIRCLE = 1;
@@ -59,6 +60,7 @@ public class StatusBarSettings extends SettingsPreferenceFragment implements
private CustomSeekBarPreference mThreshold;
private SystemSettingSwitchPreference mNetMonitor;
private SwitchPreference mBatteryBolt;
private SystemSettingMasterSwitchPreference mBatteryBar;
@Override
public void onCreate(Bundle icicle) {
@@ -101,6 +103,13 @@ public class StatusBarSettings extends SettingsPreferenceFragment implements
mThreshold.setValue(value);
mThreshold.setOnPreferenceChangeListener(this);
mThreshold.setEnabled(isNetMonitorEnabled);
mBatteryBar = (SystemSettingMasterSwitchPreference)
findPreference(BATTERY_BAR);
mBatteryBar.setOnPreferenceChangeListener(this);
boolean enabled = Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_LOCATION, 0) != 0;
mBatteryBar.setChecked(enabled);
}
@Override
@@ -141,6 +150,11 @@ public class StatusBarSettings extends SettingsPreferenceFragment implements
Settings.System.STATUS_BAR_BATTERY_CHARGING_BOLT,
enabled ? 1 : 0);
return true;
} else if (preference == mBatteryBar) {
boolean enabled = (boolean) objValue;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.BATTERY_BAR_LOCATION, enabled ? 1 : 0);
return true;
}
return false;

View File

@@ -0,0 +1,259 @@
/*
* Copyright (C) 2013 Android Open Kang Project
* Copyright (C) 2017 faust93 at monumentum@gmail.com
*
* 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.Context;
import android.content.Intent;
import android.content.ContentResolver;
import android.content.res.Resources;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settingslib.search.SearchIndexable;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import java.util.ArrayList;
import java.util.List;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
@SearchIndexable
public class BatteryBar extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener, Indexable {
private static final String PREF_BATT_BAR = "battery_bar_list";
private static final String PREF_BATT_BAR_STYLE = "battery_bar_style";
private static final String PREF_BATT_BAR_COLOR = "battery_bar_color";
private static final String PREF_BATT_BAR_CHARGING_COLOR = "battery_bar_charging_color";
private static final String PREF_BATT_BAR_LOW_COLOR_WARNING = "battery_bar_battery_low_color_warning";
private static final String PREF_BATT_BAR_USE_GRADIENT_COLOR = "battery_bar_use_gradient_color";
private static final String PREF_BATT_BAR_LOW_COLOR = "battery_bar_low_color";
private static final String PREF_BATT_BAR_HIGH_COLOR = "battery_bar_high_color";
private static final String PREF_BATT_BAR_WIDTH = "battery_bar_thickness";
private static final String PREF_BATT_ANIMATE = "battery_bar_animate";
private Context mContext;
private ListPreference mBatteryBar;
private ListPreference mBatteryBarStyle;
private CustomSeekBarPreference mBatteryBarThickness;
private SwitchPreference mBatteryBarChargingAnimation;
private SwitchPreference mBatteryBarUseGradient;
private ColorPickerPreference mBatteryBarColor;
private ColorPickerPreference mBatteryBarChargingColor;
private ColorPickerPreference mBatteryBarBatteryLowColor;
private ColorPickerPreference mBatteryBarBatteryLowColorWarn;
private ColorPickerPreference mBatteryBarBatteryHighColor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.battery_bar);
mContext = (Context) getActivity();
final ContentResolver resolver = getActivity().getContentResolver();
PreferenceScreen prefSet = getPreferenceScreen();
mBatteryBar = (ListPreference) findPreference(PREF_BATT_BAR);
mBatteryBar.setOnPreferenceChangeListener(this);
boolean enabled = Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_LOCATION, 0) != 0;
if (enabled) {
mBatteryBar.setValue((Settings.System.getInt(resolver, Settings.System.BATTERY_BAR_LOCATION, 0)) + "");
mBatteryBar.setSummary(mBatteryBar.getEntry());
} else {
mBatteryBar.setEnabled(false);
mBatteryBar.setSummary(R.string.enable_first);
}
mBatteryBarStyle = (ListPreference) findPreference(PREF_BATT_BAR_STYLE);
mBatteryBarStyle.setOnPreferenceChangeListener(this);
mBatteryBarStyle.setValue((Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_STYLE, 0)) + "");
mBatteryBarStyle.setSummary(mBatteryBarStyle.getEntry());
mBatteryBarColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_COLOR);
mBatteryBarColor.setNewPreviewColor(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_COLOR, Color.WHITE));
mBatteryBarColor.setOnPreferenceChangeListener(this);
mBatteryBarChargingColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_CHARGING_COLOR);
mBatteryBarChargingColor.setNewPreviewColor(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_CHARGING_COLOR, Color.WHITE));
mBatteryBarChargingColor.setOnPreferenceChangeListener(this);
mBatteryBarBatteryLowColorWarn = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_LOW_COLOR_WARNING);
mBatteryBarBatteryLowColorWarn.setNewPreviewColor(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_BATTERY_LOW_COLOR_WARNING,Color.WHITE));
mBatteryBarBatteryLowColorWarn.setOnPreferenceChangeListener(this);
mBatteryBarBatteryLowColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_LOW_COLOR);
mBatteryBarBatteryLowColor.setNewPreviewColor(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_LOW_COLOR, Color.WHITE));
mBatteryBarBatteryLowColor.setOnPreferenceChangeListener(this);
mBatteryBarBatteryHighColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_HIGH_COLOR);
mBatteryBarBatteryHighColor.setNewPreviewColor(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_HIGH_COLOR, Color.WHITE));
mBatteryBarBatteryHighColor.setOnPreferenceChangeListener(this);
mBatteryBarUseGradient = (SwitchPreference) findPreference(PREF_BATT_BAR_USE_GRADIENT_COLOR);
mBatteryBarUseGradient.setChecked(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_USE_GRADIENT_COLOR, 0) == 1);
mBatteryBarChargingAnimation = (SwitchPreference) findPreference(PREF_BATT_ANIMATE);
mBatteryBarChargingAnimation.setChecked(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_ANIMATE, 0) == 1);
mBatteryBarThickness = (CustomSeekBarPreference) prefSet.findPreference(PREF_BATT_BAR_WIDTH);
mBatteryBarThickness.setValue(Settings.System.getInt(resolver,
Settings.System.BATTERY_BAR_THICKNESS, 1));
mBatteryBarThickness.setOnPreferenceChangeListener(this);
updateBatteryBarOptions();
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mBatteryBarColor) {
int intHex = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_COLOR, intHex);
return true;
} else if (preference == mBatteryBarChargingColor) {
int intHex = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_CHARGING_COLOR, intHex);
return true;
} else if (preference == mBatteryBarBatteryLowColor) {
int intHex = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_LOW_COLOR, intHex);
return true;
} else if (preference == mBatteryBarBatteryLowColorWarn) {
int intHex = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_BATTERY_LOW_COLOR_WARNING, intHex);
return true;
} else if (preference == mBatteryBarBatteryHighColor) {
int intHex = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_HIGH_COLOR, intHex);
return true;
} else if (preference == mBatteryBar) {
int val = Integer.parseInt((String) newValue);
int index = mBatteryBar.findIndexOfValue((String) newValue);
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_LOCATION, val);
mBatteryBar.setSummary(mBatteryBar.getEntries()[index]);
updateBatteryBarOptions();
return true;
} else if (preference == mBatteryBarStyle) {
int val = Integer.parseInt((String) newValue);
int index = mBatteryBarStyle.findIndexOfValue((String) newValue);
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_STYLE, val);
mBatteryBarStyle.setSummary(mBatteryBarStyle.getEntries()[index]);
return true;
} else if (preference == mBatteryBarThickness) {
int val = (Integer) newValue;
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_THICKNESS, val);
return true;
}
return false;
}
public boolean onPreferenceTreeClick(Preference preference) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mBatteryBarChargingAnimation) {
boolean value = mBatteryBarChargingAnimation.isChecked();
Settings.System.putInt(resolver,
Settings.System.BATTERY_BAR_ANIMATE, value ? 1 : 0);
return true;
} else if (preference == mBatteryBarUseGradient) {
boolean value = mBatteryBarUseGradient.isChecked();
Settings.System.putInt(getContentResolver(),
Settings.System.BATTERY_BAR_USE_GRADIENT_COLOR, value ? 1 : 0);
return true;
}
return false;
}
private void updateBatteryBarOptions() {
boolean enabled = Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.BATTERY_BAR_LOCATION, 0) != 0;
mBatteryBarStyle.setEnabled(enabled);
mBatteryBarThickness.setEnabled(enabled);
mBatteryBarChargingAnimation.setEnabled(enabled);
mBatteryBarColor.setEnabled(enabled);
mBatteryBarChargingColor.setEnabled(enabled);
mBatteryBarUseGradient.setEnabled(enabled);
mBatteryBarBatteryLowColor.setEnabled(enabled);
mBatteryBarBatteryHighColor.setEnabled(enabled);
mBatteryBarBatteryLowColorWarn.setEnabled(enabled);
}
@Override
public int getMetricsCategory() {
return MetricsEvent.CHERISH_SETTINGS;
}
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
ArrayList<SearchIndexableResource> result =
new ArrayList<SearchIndexableResource>();
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.battery_bar;
result.add(sir);
return result;
}
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
return keys;
}
};
}