diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml index 56db8a6..c98e10e 100644 --- a/res/values/cherish_arrays.xml +++ b/res/values/cherish_arrays.xml @@ -265,4 +265,35 @@ 3 + + + @string/status_bar_battery_percentage_default + @string/status_bar_battery_percentage_text_inside + @string/status_bar_battery_percentage_text_next + + + + 0 + 1 + 2 + + + + + @string/status_bar_battery_style_icon_portrait + @string/status_bar_battery_style_circle + @string/status_bar_battery_style_dotted_circle + @string/status_bar_battery_style_filled_circle + @string/status_bar_battery_style_text + @string/status_bar_battery_style_hidden + + + 0 + 1 + 2 + 3 + 4 + 5 + + diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index 18d35ea..1337223 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -457,4 +457,26 @@ Charging animation Display an animation when the device is plugged in - \ No newline at end of file + + Battery Settings + + + Battery styles + Battery percent + + + Battery style + Icon portrait (default) + Circle + Circle (Dotted) + Circle (Filled) + Text + Hidden + + + Battery percentage + Hidden (default) + Inside the icon + Next to the icon + + diff --git a/res/xml/battery_bar.xml b/res/xml/battery_settings.xml similarity index 70% rename from res/xml/battery_bar.xml rename to res/xml/battery_settings.xml index 346c1ef..ec7ba5b 100644 --- a/res/xml/battery_bar.xml +++ b/res/xml/battery_settings.xml @@ -11,10 +11,37 @@ limitations under the License. --> + + + + + + + + + + - @@ -54,7 +81,7 @@ android:summary="@string/battery_bar_blend_color_summary" android:defaultValue="false" /> - - - + + \ No newline at end of file diff --git a/res/xml/cherish_settings_statusbar.xml b/res/xml/cherish_settings_statusbar.xml index 7145870..22f6193 100644 --- a/res/xml/cherish_settings_statusbar.xml +++ b/res/xml/cherish_settings_statusbar.xml @@ -94,8 +94,8 @@ + android:fragment="com.cherish.settings.fragments.BatterySettings" + android:title="@string/battery_settings_title" /> diff --git a/src/com/cherish/settings/fragments/BatteryBar.java b/src/com/cherish/settings/fragments/BatterySettings.java similarity index 69% rename from src/com/cherish/settings/fragments/BatteryBar.java rename to src/com/cherish/settings/fragments/BatterySettings.java index 4046330..78f8947 100644 --- a/src/com/cherish/settings/fragments/BatteryBar.java +++ b/src/com/cherish/settings/fragments/BatterySettings.java @@ -23,6 +23,7 @@ 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; @@ -33,10 +34,10 @@ 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.cherish.settings.preferences.CustomSeekBarPreference; import com.android.settings.R; -public class BatteryBar extends SettingsPreferenceFragment +public class BatterySettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String PREF_BATT_BAR = "statusbar_battery_bar_list"; @@ -50,6 +51,14 @@ public class BatteryBar extends SettingsPreferenceFragment 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 static final String PREF_STATUS_BAR_SHOW_BATTERY_PERCENT = "status_bar_show_battery_percent"; + private static final String PREF_STATUS_BAR_BATTERY_STYLE = "status_bar_battery_style"; + + private static final int BATTERY_STYLE_PORTRAIT = 0; + private static final int BATTERY_STYLE_TEXT = 4; + private static final int BATTERY_STYLE_HIDDEN = 5; + private static final int BATTERY_PERCENT_HIDDEN = 0; + private static final int BATTERY_PERCENT_SHOW = 2; private ListPreference mBatteryBar; private ListPreference mBatteryBarNoNavbar; @@ -62,12 +71,16 @@ public class BatteryBar extends SettingsPreferenceFragment private ColorPickerPreference mBatteryBarColor; private ColorPickerPreference mBatteryBarChargingColor; private ColorPickerPreference mBatteryBarBatteryLowColor; + private ListPreference mBatteryPercent; + private ListPreference mBatteryStyle; + private int mBatteryPercentValue; + private int mBatteryPercentValuePrev; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.battery_bar); + addPreferencesFromResource(R.xml.battery_settings); PreferenceScreen prefSet = getPreferenceScreen(); ContentResolver resolver = getActivity().getContentResolver(); @@ -126,6 +139,24 @@ public class BatteryBar extends SettingsPreferenceFragment mBatteryBarBlendColor = (SwitchPreference) findPreference(PREF_BATT_BLEND_COLOR); mBatteryBarBlendColorReverse = (SwitchPreference) findPreference(PREF_BATT_BLEND_COLOR_REVERSE); + int batterystyle = Settings.System.getIntForUser(getContentResolver(), + Settings.System.STATUS_BAR_BATTERY_STYLE, BATTERY_STYLE_PORTRAIT, UserHandle.USER_CURRENT); + + mBatteryStyle = (ListPreference) findPreference(PREF_STATUS_BAR_BATTERY_STYLE); + mBatteryStyle.setValue(String.valueOf(batterystyle)); + mBatteryStyle.setSummary(mBatteryStyle.getEntry()); + mBatteryStyle.setOnPreferenceChangeListener(this); + + mBatteryPercentValue = Settings.System.getIntForUser(getContentResolver(), + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, 0, UserHandle.USER_CURRENT); + mBatteryPercentValuePrev = Settings.System.getIntForUser(getContentResolver(), + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT + "_prev", -1, UserHandle.USER_CURRENT); + + mBatteryPercent = (ListPreference) findPreference(PREF_STATUS_BAR_SHOW_BATTERY_PERCENT); + mBatteryPercent.setValue(String.valueOf(mBatteryPercentValue)); + mBatteryPercent.setSummary(mBatteryPercent.getEntry()); + mBatteryPercent.setOnPreferenceChangeListener(this); + /* boolean hasNavBarByDefault = getResources().getBoolean( com.android.internal.R.bool.config_showNavigationBar); @@ -136,13 +167,12 @@ public class BatteryBar extends SettingsPreferenceFragment if (!enableNavigationBar || !batteryBarSupported) { */ prefSet.removePreference(mBatteryBar); -/* - } else { +/* } else { prefSet.removePreference(mBatteryBarNoNavbar); - } -*/ + }*/ updateBatteryBarOptions(); + updateBatteryOptions(batterystyle, mBatteryPercentValue); } @Override @@ -203,6 +233,20 @@ public class BatteryBar extends SettingsPreferenceFragment int val = ((Boolean) newValue) ? 1 : 0; Settings.System.putInt(resolver, Settings.System.STATUSBAR_BATTERY_BAR_ANIMATE, val); return true; + } else if (preference == mBatteryStyle) { + int batterystyle = Integer.parseInt((String) newValue); + updateBatteryOptions(batterystyle, mBatteryPercentValue); + int index = mBatteryStyle.findIndexOfValue((String) newValue); + mBatteryStyle.setSummary(mBatteryStyle.getEntries()[index]); + return true; + } else if (preference == mBatteryPercent) { + mBatteryPercentValue = Integer.parseInt((String) newValue); + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, mBatteryPercentValue, + UserHandle.USER_CURRENT); + int index = mBatteryPercent.findIndexOfValue((String) newValue); + mBatteryPercent.setSummary(mBatteryPercent.getEntries()[index]); + return true; } return false; } @@ -232,7 +276,57 @@ public class BatteryBar extends SettingsPreferenceFragment } } + private void updateBatteryOptions(int batterystyle, int batterypercent) { + ContentResolver resolver = getActivity().getContentResolver(); + switch (batterystyle) { + case BATTERY_STYLE_TEXT: + handleTextPercentage(BATTERY_PERCENT_SHOW); + break; + case BATTERY_STYLE_HIDDEN: + handleTextPercentage(BATTERY_PERCENT_HIDDEN); + break; + default: + mBatteryPercent.setEnabled(true); + if (mBatteryPercentValuePrev != -1) { + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, + mBatteryPercentValuePrev, UserHandle.USER_CURRENT); + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT + "_prev", + -1, UserHandle.USER_CURRENT); + mBatteryPercentValue = mBatteryPercentValuePrev; + mBatteryPercentValuePrev = -1; + int index = mBatteryPercent.findIndexOfValue(String.valueOf(mBatteryPercentValue)); + mBatteryPercent.setSummary(mBatteryPercent.getEntries()[index]); + } + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_BATTERY_STYLE, batterystyle, + UserHandle.USER_CURRENT); + break; + } + } + + private void handleTextPercentage(int batterypercent) { + ContentResolver resolver = getActivity().getContentResolver(); + if (mBatteryPercentValuePrev == -1) { + mBatteryPercentValuePrev = mBatteryPercentValue; + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT + "_prev", + mBatteryPercentValue, UserHandle.USER_CURRENT); + } + + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, + batterypercent, UserHandle.USER_CURRENT); + Settings.System.putIntForUser(resolver, + Settings.System.STATUS_BAR_BATTERY_STYLE, BATTERY_STYLE_TEXT, + UserHandle.USER_CURRENT); + int index = mBatteryPercent.findIndexOfValue(String.valueOf(batterypercent)); + mBatteryPercent.setSummary(mBatteryPercent.getEntries()[index]); + mBatteryPercent.setEnabled(false); + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.CHERISH_SETTINGS;