[2/2] OmniGears: add battery display config

everything else on the statusbar can be hidden
why not also the battery if you want

Change-Id: I0dbc54dadfe06a98bb1b22ad4256e26b8ebbed2e
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 0cbbb6e..2dd3d1e 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -175,6 +175,7 @@
     <string name="statusbar_battery_charging_color_title">Color</string>
     <string name="statusbar_battery_charging_color_enable_title">Color while charging</string>
     <string name="statusbar_battery_charging_color_enable_summary"></string>
+    <string name="battery_enable_title">Show battery</string>
 
     <string name="button_brightness_title">Brightness</string>
     <string name="button_brightness_summary">Button backlight brightness</string>
diff --git a/res/xml/statusbar_battery_settings.xml b/res/xml/statusbar_battery_settings.xml
index 5ceb438..0eb7c13 100644
--- a/res/xml/statusbar_battery_settings.xml
+++ b/res/xml/statusbar_battery_settings.xml
@@ -19,6 +19,13 @@
     xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
         <ListPreference
+            android:key="statusbar_battery_enable"
+            android:title="@string/battery_enable_title"
+            android:entries="@array/entries_battery_percent"
+            android:entryValues="@array/values_battery_percent"
+            android:persistent="false"
+            android:defaultValue="1"/>
+        <ListPreference
             android:key="statusbar_battery_style"
             android:title="@string/battery_style_title"
             android:entries="@*android:array/entries_battery_styles"
@@ -30,7 +37,8 @@
             android:title="@string/battery_percent_title"
             android:entries="@array/entries_battery_percent"
             android:entryValues="@array/values_battery_percent"
-            android:persistent="false"/>
+            android:persistent="false"
+            android:defaultValue="2"/>
         <com.android.settings.preference.SystemCheckBoxPreference
             android:key="statusbar_battery_percent_inside"
             android:title="@string/statusbar_percent_inside_title"
diff --git a/src/org/omnirom/omnigears/interfacesettings/StatusbarBatterySettings.java b/src/org/omnirom/omnigears/interfacesettings/StatusbarBatterySettings.java
index 1d41cda..ecb3d51 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StatusbarBatterySettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StatusbarBatterySettings.java
@@ -61,8 +61,10 @@
     private static final String STATUSBAR_BATTERY_STYLE = "statusbar_battery_style";
     private static final String STATUSBAR_BATTERY_PERCENT = "statusbar_battery_percent";
     private static final String STATUSBAR_CHARGING_COLOR = "statusbar_battery_charging_color";
-    private static final String STATUSBAT_BATTERY_PERCENT_INSIDE = "statusbar_battery_percent_inside";
-    private static final String STATUSBAT_BATTERY_SHOW_BOLT = "statusbar_battery_charging_image";
+    private static final String STATUSBAR_BATTERY_PERCENT_INSIDE = "statusbar_battery_percent_inside";
+    private static final String STATUSBAR_BATTERY_SHOW_BOLT = "statusbar_battery_charging_image";
+    private static final String STATUSBAR_BATTERY_ENABLE = "statusbar_battery_enable";
+    private static final String STATUSBAR_CATEGORY_CHARGING = "statusbar_category_charging";
 
     private ListPreference mBatteryStyle;
     private ListPreference mBatteryPercent;
@@ -71,6 +73,9 @@
     private CheckBoxPreference mShowBolt;
     private int mShowPercent;
     private int mBatteryStyleValue;
+    private ListPreference mBatteryEnable;
+    private int mShowBattery = 1;
+    private PreferenceCategory mChargingCategory;
 
     @Override
     protected int getMetricsCategory() {
@@ -109,11 +114,20 @@
         mChargingColor.setSummary(hexColor);
         mChargingColor.setOnPreferenceChangeListener(this);
 
-        mPercentInside = (CheckBoxPreference) findPreference(STATUSBAT_BATTERY_PERCENT_INSIDE);
-        mPercentInside.setEnabled(mBatteryStyleValue < 3 && mShowPercent != 0);
+        mPercentInside = (CheckBoxPreference) findPreference(STATUSBAR_BATTERY_PERCENT_INSIDE);
 
-        mShowBolt = (CheckBoxPreference) findPreference(STATUSBAT_BATTERY_SHOW_BOLT);
-        mShowBolt.setEnabled(mBatteryStyleValue < 3);
+        mShowBolt = (CheckBoxPreference) findPreference(STATUSBAR_BATTERY_SHOW_BOLT);
+
+        mBatteryEnable = (ListPreference) findPreference(STATUSBAR_BATTERY_ENABLE);
+        mShowBattery = Settings.System.getInt(resolver,
+                Settings.System.STATUSBAR_BATTERY_ENABLE, 1);
+
+        mBatteryEnable.setValue(Integer.toString(mShowBattery));
+        mBatteryEnable.setSummary(mBatteryEnable.getEntry());
+        mBatteryEnable.setOnPreferenceChangeListener(this);
+
+        mChargingCategory = (PreferenceCategory) findPreference(STATUSBAR_CATEGORY_CHARGING);
+        updateEnablement();
     }
 
     @Override
@@ -128,29 +142,44 @@
         if (preference == mBatteryStyle) {
             mBatteryStyleValue = Integer.valueOf((String) newValue);
             int index = mBatteryStyle.findIndexOfValue((String) newValue);
-            mPercentInside.setEnabled(mBatteryStyleValue < 3 && mShowPercent != 0);
-            mShowBolt.setEnabled(mBatteryStyleValue < 3);
             mBatteryStyle.setSummary(
                     mBatteryStyle.getEntries()[index]);
             Settings.System.putInt(getContentResolver(),
                     Settings.System.STATUSBAR_BATTERY_STYLE, mBatteryStyleValue);
+            updateEnablement();
         } else if (preference == mBatteryPercent) {
             mShowPercent = Integer.valueOf((String) newValue);
             int index = mBatteryPercent.findIndexOfValue((String) newValue);
-            mPercentInside.setEnabled(mBatteryStyleValue < 3 && mShowPercent != 0);
             mBatteryPercent.setSummary(
                     mBatteryPercent.getEntries()[index]);
             Settings.System.putInt(getContentResolver(),
                     Settings.System.STATUSBAR_BATTERY_PERCENT, mShowPercent);
+            updateEnablement();
         } else if (preference == mChargingColor) {
             String hexColor = String.format("#%08X", mChargingColor.getColor());
             mChargingColor.setSummary(hexColor);
             Settings.System.putInt(resolver,
                     Settings.System.STATUSBAR_BATTERY_CHARGING_COLOR, mChargingColor.getColor());
+        } else if (preference == mBatteryEnable) {
+            mShowBattery = Integer.valueOf((String) newValue);
+            int index = mBatteryEnable.findIndexOfValue((String) newValue);
+            mBatteryEnable.setSummary(
+                    mBatteryEnable.getEntries()[index]);
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.STATUSBAR_BATTERY_ENABLE, mShowBattery);
+            updateEnablement();
         }
         return true;
     }
 
+    private void updateEnablement() {
+        mPercentInside.setEnabled(mShowBattery != 0 && mBatteryStyleValue < 3 && mShowPercent != 0);
+        mShowBolt.setEnabled(mBatteryStyleValue < 3);
+        mBatteryStyle.setEnabled(mShowBattery != 0);
+        mBatteryPercent.setEnabled(mShowBattery != 0);
+        mChargingCategory.setEnabled(mShowBattery != 0);
+    }
+
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override