Cherish: sAdd BatteryBar customizations [2/2]

Change-Id: I6ffcb245db5479e8d818cc31ceb573e17e38f0bb
Signed-off-by: Shubham Singh <coolsks94@gmail.com>
Signed-off-by: SagarMakhar <sagarmakhar@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
cphelps76
2016-10-09 14:20:15 +02:00
committed by Hưng Phan
parent 80cf5bd3f0
commit 8b39f35bbd
5 changed files with 392 additions and 0 deletions

View File

@@ -213,4 +213,42 @@
<item>1</item>
<item>0</item>
</string-array>
<!-- Battery bar -->
<string-array name="battery_bar_entries">
<item>@string/battery_bar_location_hide</item>
<item>@string/battery_bar_location_statusbar</item>
<item>@string/battery_bar_location_top_navbar</item>
<item>@string/battery_bar_location_bottom_navbar</item>
</string-array>
<string-array name="battery_bar_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="battery_bar_no_navbar_entries">
<item>@string/battery_bar_location_hide</item>
<item>@string/battery_bar_location_statusbar</item>
</string-array>
<string-array name="battery_bar_no_navbar_values" translatable="false">
<item>0</item>
<item>1</item>
</string-array>
<string-array name="battery_bar_style_entries" translatable="false">
<item>@string/battery_bar_style_regular</item>
<item>@string/battery_bar_style_center_mirrored</item>
<item>@string/battery_bar_style_reversed</item>
</string-array>
<string-array name="battery_bar_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
</resources>

View File

@@ -394,4 +394,30 @@
<string name="status_bar_toggle_brightness">Brightness control</string>
<string name="status_bar_toggle_brightness_summary">Adjust brightness by sliding across the status bar</string>
<!-- Battery Bar -->
<string name="battery_bar_title">Battery bar</string>
<string name="battery_bar_summary">Display and customize battery bar near status bar or navigation bar</string>
<string name="battery_bar">Battery bar location</string>
<string name="battery_bar_no_navbar">Battery bar location</string>
<string name="battery_bar_location_hide">Hide</string>
<string name="battery_bar_location_statusbar">Statusbar</string>
<string name="battery_bar_location_top_navbar">Top of navbar</string>
<string name="battery_bar_location_bottom_navbar">Bottom of navbar</string>
<string name="battery_bar_color">Battery bar color</string>
<string name="battery_bar_charging_color">Battery bar charging color</string>
<string name="battery_bar_battery_low_color">Battery bar low battery color</string>
<string name="battery_bar_cat">Battery bar style</string>
<string name="battery_bar_style_title">Battery bar alignment</string>
<string name="battery_bar_thickness_title">Battery bar thickness</string>
<string name="battery_bar_animate_title">Charging animation</string>
<string name="battery_bar_style_regular">Regular</string>
<string name="battery_bar_style_center_mirrored">Center-mirrored</string>
<string name="battery_bar_style_reversed">Reversed</string>
<string name="battery_bar_use_charging_color">Custom charging color</string>
<string name="battery_bar_blend_color_title">Blend colors</string>
<string name="battery_bar_blend_color_summary">Blend full/empty colors corresponding to battery percentage</string>
<string name="battery_bar_blend_color_reverse_title">Reverse color direction</string>
<string name="battery_bar_blend_color_reverse_summary_off">Full &#8594; empty: red &#8592; green &#8592; blue &#8592; red</string>
<string name="battery_bar_blend_color_reverse_summary_on">Full &#8594; empty: red &#8594; green &#8594; blue &#8594; red</string>
</resources>

83
res/xml/battery_bar.xml Normal file
View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2018 AospExtended ROM Project
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.
-->
<PreferenceScreen
android:title="@string/battery_bar_title"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<ListPreference
android:key="statusbar_battery_bar_list"
android:title="@string/battery_bar"
android:entries="@array/battery_bar_entries"
android:entryValues="@array/battery_bar_values" />
<ListPreference
android:key="statusbar_battery_bar_no_navbar_list"
android:title="@string/battery_bar_no_navbar"
android:entries="@array/battery_bar_no_navbar_entries"
android:entryValues="@array/battery_bar_no_navbar_values" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="statusbar_battery_bar_color"
android:title="@string/battery_bar_color"
android:defaultValue="0xffffff" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="statusbar_battery_bar_battery_low_color"
android:title="@string/battery_bar_battery_low_color"
android:defaultValue="0xffffff" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="statusbar_battery_bar_enable_charging_color"
android:title="@string/battery_bar_use_charging_color"
android:defaultValue="true" />
<net.margaritov.preference.colorpicker.ColorPickerPreference
android:key="statusbar_battery_bar_charging_color"
android:title="@string/battery_bar_charging_color"
android:defaultValue="0xffffff"
android:dependency="statusbar_battery_bar_enable_charging_color" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_battery_bar_blend_color"
android:title="@string/battery_bar_blend_color_title"
android:summary="@string/battery_bar_blend_color_summary"
android:defaultValue="false" />
<con.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_battery_bar_blend_color_reverse"
android:title="@string/battery_bar_blend_color_reverse_title"
android:summaryOn="@string/battery_bar_blend_color_reverse_summary_on"
android:summaryOff="@string/battery_bar_blend_color_reverse_summary_off"
android:dependency="statusbar_battery_bar_blend_color"
android:defaultValue="false" />
<ListPreference
android:key="statusbar_battery_bar_style"
android:title="@string/battery_bar_style_title"
android:entries="@array/battery_bar_style_entries"
android:entryValues="@array/battery_bar_style_values" />
<con.cherish.settings.preferences.CustomSeekBarPreference
android:key="statusbar_battery_bar_thickness"
android:title="@string/battery_bar_thickness_title"
android:max="4"
settings:min="1"
settings:units="dp"
android:persistent="false" />
<SwitchPreference
android:key="statusbar_battery_bar_animate"
android:title="@string/battery_bar_animate_title" />
</PreferenceScreen>

View File

@@ -80,6 +80,11 @@
android:targetPackage="com.android.systemui"
android:targetClass="com.android.systemui.tuner.StatusbarItemsActivity" />
</Preference>
<Preference
android:key="battery_bar_category"
android:fragment="com.cherish.settings.fragments.BatteryBar"
android:title="@string/battery_bar_title" />
</PreferenceCategory>

View File

@@ -0,0 +1,240 @@
/*
* Copyright (C) 2018 AospExtended ROM Project
*
* 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.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.UserHandle;
import android.provider.Settings;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsPreferenceFragment;
import net.margaritov.preference.colorpicker.ColorPickerPreference;
import con.cherish.settings.preferences.CustomSeekBarPreference;
import com.android.settings.R;
public class BatteryBar extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener {
private static final String PREF_BATT_BAR = "statusbar_battery_bar_list";
private static final String PREF_BATT_BAR_NO_NAVBAR = "statusbar_battery_bar_no_navbar_list";
private static final String PREF_BATT_BAR_STYLE = "statusbar_battery_bar_style";
private static final String PREF_BATT_BAR_COLOR = "statusbar_battery_bar_color";
private static final String PREF_BATT_BAR_CHARGING_COLOR = "statusbar_battery_bar_charging_color";
private static final String PREF_BATT_BAR_BATTERY_LOW_COLOR = "statusbar_battery_bar_battery_low_color";
private static final String PREF_BATT_BAR_WIDTH = "statusbar_battery_bar_thickness";
private static final String PREF_BATT_ANIMATE = "statusbar_battery_bar_animate";
private static final String PREF_BATT_USE_CHARGING_COLOR = "statusbar_battery_bar_enable_charging_color";
private static final String PREF_BATT_BLEND_COLOR = "statusbar_battery_bar_blend_color";
private static final String PREF_BATT_BLEND_COLOR_REVERSE = "statusbar_battery_bar_blend_color_reverse";
private ListPreference mBatteryBar;
private ListPreference mBatteryBarNoNavbar;
private ListPreference mBatteryBarStyle;
private CustomSeekBarPreference mBatteryBarThickness;
private SwitchPreference mBatteryBarChargingAnimation;
private SwitchPreference mBatteryBarUseChargingColor;
private SwitchPreference mBatteryBarBlendColor;
private SwitchPreference mBatteryBarBlendColorReverse;
private ColorPickerPreference mBatteryBarColor;
private ColorPickerPreference mBatteryBarChargingColor;
private ColorPickerPreference mBatteryBarBatteryLowColor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.battery_bar);
PreferenceScreen prefSet = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
int intColor;
String hexColor;
mBatteryBar = (ListPreference) prefSet.findPreference(PREF_BATT_BAR);
mBatteryBar.setValue((Settings.System.getInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR, 0)) + "");
mBatteryBar.setSummary(mBatteryBar.getEntry());
mBatteryBar.setOnPreferenceChangeListener(this);
mBatteryBarNoNavbar = (ListPreference) prefSet.findPreference(PREF_BATT_BAR_NO_NAVBAR);
mBatteryBarNoNavbar.setValue((Settings.System.getInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR, 0)) + "");
mBatteryBarNoNavbar.setSummary(mBatteryBarNoNavbar.getEntry());
mBatteryBarNoNavbar.setOnPreferenceChangeListener(this);
mBatteryBarStyle = (ListPreference) prefSet.findPreference(PREF_BATT_BAR_STYLE);
mBatteryBarStyle.setValue((Settings.System.getInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_STYLE, 0)) + "");
mBatteryBarStyle.setSummary(mBatteryBarStyle.getEntry());
mBatteryBarStyle.setOnPreferenceChangeListener(this);
mBatteryBarColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_COLOR);
intColor = Settings.System.getInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR_COLOR, Color.WHITE);
hexColor = String.format("#%08x", (0xffffff & intColor));
mBatteryBarColor.setNewPreviewColor(intColor);
mBatteryBarColor.setSummary(hexColor);
mBatteryBarColor.setOnPreferenceChangeListener(this);
mBatteryBarChargingColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_CHARGING_COLOR);
intColor = Settings.System.getInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR_CHARGING_COLOR, Color.WHITE);
hexColor = String.format("#%08x", (0xffffff & intColor));
mBatteryBarChargingColor.setNewPreviewColor(intColor);
mBatteryBarChargingColor.setSummary(hexColor);
mBatteryBarChargingColor.setOnPreferenceChangeListener(this);
mBatteryBarBatteryLowColor = (ColorPickerPreference) prefSet.findPreference(PREF_BATT_BAR_BATTERY_LOW_COLOR);
intColor = Settings.System.getInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR_BATTERY_LOW_COLOR, Color.WHITE);
hexColor = String.format("#%08x", (0xffffff & intColor));
mBatteryBarBatteryLowColor.setNewPreviewColor(intColor);
mBatteryBarBatteryLowColor.setSummary(hexColor);
mBatteryBarBatteryLowColor.setOnPreferenceChangeListener(this);
mBatteryBarChargingAnimation = (SwitchPreference) prefSet.findPreference(PREF_BATT_ANIMATE);
mBatteryBarChargingAnimation.setChecked(Settings.System.getInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_ANIMATE, 0) == 1);
mBatteryBarChargingAnimation.setOnPreferenceChangeListener(this);
mBatteryBarThickness = (CustomSeekBarPreference) prefSet.findPreference(PREF_BATT_BAR_WIDTH);
mBatteryBarThickness.setValue(Settings.System.getInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_THICKNESS, 1));
mBatteryBarThickness.setOnPreferenceChangeListener(this);
mBatteryBarUseChargingColor = (SwitchPreference) findPreference(PREF_BATT_USE_CHARGING_COLOR);
mBatteryBarBlendColor = (SwitchPreference) findPreference(PREF_BATT_BLEND_COLOR);
mBatteryBarBlendColorReverse = (SwitchPreference) findPreference(PREF_BATT_BLEND_COLOR_REVERSE);
/*
boolean hasNavBarByDefault = getResources().getBoolean(
com.android.internal.R.bool.config_showNavigationBar);
boolean enableNavigationBar = Settings.Secure.getInt(resolver,
Settings.Secure.NAVIGATION_BAR_VISIBLE, hasNavBarByDefault ? 1 : 0) == 1;
boolean batteryBarSupported = Settings.Secure.getInt(resolver,
Settings.Secure.NAVIGATION_BAR_MODE, 0) == 0;
if (!enableNavigationBar || !batteryBarSupported) {
*/
prefSet.removePreference(mBatteryBar);
/*
} else {
prefSet.removePreference(mBatteryBarNoNavbar);
}
*/
updateBatteryBarOptions();
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mBatteryBarColor) {
String hex = ColorPickerPreference.convertToARGB(Integer
.parseInt(String.valueOf(newValue)));
preference.setSummary(hex);
int intHex = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_COLOR, intHex);
return true;
} else if (preference == mBatteryBarChargingColor) {
String hex = ColorPickerPreference.convertToARGB(Integer
.parseInt(String.valueOf(newValue)));
preference.setSummary(hex);
int intHex = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_CHARGING_COLOR, intHex);
return true;
} else if (preference == mBatteryBarBatteryLowColor) {
String hex = ColorPickerPreference.convertToARGB(Integer
.parseInt(String.valueOf(newValue)));
preference.setSummary(hex);
int intHex = ColorPickerPreference.convertToColorInt(hex);
Settings.System.putInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR_BATTERY_LOW_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.STATUSBAR_BATTERY_BAR, val);
mBatteryBar.setSummary(mBatteryBar.getEntries()[index]);
updateBatteryBarOptions();
} else if (preference == mBatteryBarNoNavbar) {
int val = Integer.parseInt((String) newValue);
int index = mBatteryBarNoNavbar.findIndexOfValue((String) newValue);
Settings.System.putInt(resolver,
Settings.System.STATUSBAR_BATTERY_BAR, val);
mBatteryBarNoNavbar.setSummary(mBatteryBarNoNavbar.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.STATUSBAR_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.STATUSBAR_BATTERY_BAR_THICKNESS, val);
return true;
} else if (preference == mBatteryBarChargingAnimation) {
int val = ((Boolean) newValue) ? 1 : 0;
Settings.System.putInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR_ANIMATE, val);
return true;
}
return false;
}
private void updateBatteryBarOptions() {
if (Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_BATTERY_BAR, 0) == 0) {
mBatteryBarStyle.setEnabled(false);
mBatteryBarThickness.setEnabled(false);
mBatteryBarChargingAnimation.setEnabled(false);
mBatteryBarColor.setEnabled(false);
mBatteryBarChargingColor.setEnabled(false);
mBatteryBarBatteryLowColor.setEnabled(false);
mBatteryBarUseChargingColor.setEnabled(false);
mBatteryBarBlendColor.setEnabled(false);
mBatteryBarBlendColorReverse.setEnabled(false);
} else {
mBatteryBarStyle.setEnabled(true);
mBatteryBarThickness.setEnabled(true);
mBatteryBarChargingAnimation.setEnabled(true);
mBatteryBarColor.setEnabled(true);
mBatteryBarChargingColor.setEnabled(true);
mBatteryBarBatteryLowColor.setEnabled(true);
mBatteryBarUseChargingColor.setEnabled(true);
mBatteryBarBlendColor.setEnabled(true);
mBatteryBarBlendColorReverse.setEnabled(true);
}
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.CHERISH_SETTINGS;
}
}