[2/2] OmniGears: add back kill config and settings

and
-use numerals instead of strings for columns
-set summary on button brightness pref

Change-Id: I6ae4ebe287d8842fcf72fbccef485ca4a874a82d
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index e288c42..adfe514 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -223,4 +223,16 @@
         <item>3</item>
         <item>4</item>
     </string-array>
+
+    <string-array name="button_back_kill_timeout_entries" translatable="false">
+        <item>@string/button_back_kill_timeout_500ms</item>
+        <item>@string/button_back_kill_timeout_1000ms</item>
+        <item>@string/button_back_kill_timeout_1500ms</item>
+    </string-array>
+
+    <string-array name="button_back_kill_timeout_values" translatable="false">
+        <item>500</item>
+        <item>1000</item>
+        <item>1500</item>
+    </string-array>
 </resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index d8f0e61..ea453a9 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -63,9 +63,15 @@
     <string name="button_home_wake_summary">Pressing the home button will wake the device</string>
     <string name="button_home_answers_call_title">Button answers call</string>
     <string name="button_home_answers_call_summary">Pressing the home button will answer incoming call</string>
-    <string name="button_other_title">Recents</string>
+    <string name="button_other_title">Other</string>
     <string name="keys_action_app_switch_short">Default</string>
     <string name="keys_action_omniswitch_short">OmniSwitch</string>
+    <string name="button_back_kill_enable_title">Kill app back button</string>
+    <string name="button_back_kill_enable_summary">Kill the foreground app by long-pressing the back button</string>
+    <string name="button_back_kill_timeout_title">Kill app timeout</string>
+    <string name="button_back_kill_timeout_500ms">500 ms</string>
+    <string name="button_back_kill_timeout_1000ms">1000 ms</string>
+    <string name="button_back_kill_timeout_1500ms">1500 ms</string>
 
     <!-- Double tap to sleep -->
     <string name="double_tap_to_sleep_title">Double-tap to sleep</string>
@@ -266,8 +272,8 @@
     <!-- Dashboard columns -->
     <string name="dashboard_columns_title">Settings columns</string>
     <string name="dashboard_columns_phone_default">Default</string>
-    <string name="dashboard_columns_two">Two</string>
+    <string name="dashboard_columns_two">2</string>
     <string name="dashboard_columns_tablet_default">Default</string>
-    <string name="dashboard_columns_three">Three</string>
-    <string name="dashboard_columns_four">Four</string>
+    <string name="dashboard_columns_three">3</string>
+    <string name="dashboard_columns_four">4</string>
 </resources>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 9a11f8b..efc4112 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -258,6 +258,20 @@
             android:entries="@array/navbar_recents_style_entries"
             android:entryValues="@array/navbar_recents_style_values"
             android:persistent="false"/>
+
+        <com.android.settings.preference.SystemCheckBoxPreference
+            android:key="button_back_kill_enable"
+            android:title="@string/button_back_kill_enable_title"
+            android:summary="@string/button_back_kill_enable_summary"
+            android:defaultValue="true"/>
+
+        <ListPreference
+            android:key="button_back_kill_timeout"
+            android:title="@string/button_back_kill_timeout_title"
+            android:entries="@array/button_back_kill_timeout_entries"
+            android:entryValues="@array/button_back_kill_timeout_values"
+            android:persistent="false"
+            android:dependency="button_back_kill_enable"/>
     </PreferenceCategory>
 
 <!--    <PreferenceCategory
diff --git a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
index ccaa12f..fd778c8 100644
--- a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
+++ b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
@@ -72,6 +72,7 @@
     private ManualButtonBrightnessDialog mManualBrightnessDialog;
     private IPowerManager mPowerService;
     private SeekBarPreference mButtonTimoutBar;
+    private int mCurrentBrightness;
 
     @Override
     protected int getMetricsCategory() {
@@ -94,6 +95,11 @@
                 Settings.System.CUSTOM_BUTTON_USE_SCREEN_BRIGHTNESS, 0) != 0);
 
         mManualButtonBrightness = (Preference) findPreference(KEY_BUTTON_MANUAL_BRIGHTNESS);
+        final int customButtonBrightness = getResources().getInteger(
+                com.android.internal.R.integer.config_button_brightness_default);
+        mCurrentBrightness = Settings.System.getInt(getContext().getContentResolver(),
+                Settings.System.CUSTOM_BUTTON_BRIGHTNESS, customButtonBrightness);
+        mManualButtonBrightness.setSummary(String.valueOf(mCurrentBrightness));
 
         mButtonTimoutBar = (SeekBarPreference) findPreference(KEY_BUTTON_TIMEOUT);
         int currentTimeout = Settings.System.getInt(resolver,
@@ -184,7 +190,6 @@
 
         private SeekBar mBacklightBar;
         private EditText mBacklightInput;
-        private int mCurrentBrightness;
         private boolean mIsDragging = false;
 
         public ManualButtonBrightnessDialog(Context context) {
@@ -203,11 +208,6 @@
             setCancelable(true);
             setView(v);
 
-            final int customButtonBrightness = getResources().getInteger(
-                    com.android.internal.R.integer.config_button_brightness_default);
-            mCurrentBrightness = Settings.System.getInt(getContext().getContentResolver(),
-                    Settings.System.CUSTOM_BUTTON_BRIGHTNESS, customButtonBrightness);
-
             mBacklightBar.setMax(brightnessToProgress(PowerManager.BRIGHTNESS_ON));
             mBacklightBar.setProgress(brightnessToProgress(mCurrentBrightness));
             mBacklightInput.setText(String.valueOf(mCurrentBrightness));
@@ -233,9 +233,10 @@
         public void onClick(DialogInterface dialog, int which) {
             if (which == DialogInterface.BUTTON_POSITIVE) {
                 try {
-                    int newBacklight = Integer.valueOf(mBacklightInput.getText().toString());
+                    mCurrentBrightness = Integer.valueOf(mBacklightInput.getText().toString());
                     Settings.System.putInt(getContext().getContentResolver(),
-                            Settings.System.CUSTOM_BUTTON_BRIGHTNESS, newBacklight);
+                            Settings.System.CUSTOM_BUTTON_BRIGHTNESS, mCurrentBrightness);
+                    mManualButtonBrightness.setSummary(String.valueOf(mCurrentBrightness));
                 } catch (NumberFormatException e) {
                     Log.d(TAG, "NumberFormatException " + e);
                 }
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index a65bbd7..c2c602e 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -108,6 +108,7 @@
     private static final String KEYS_SHOW_NAVBAR_KEY = "navigation_bar_show";
     private static final String KEYS_DISABLE_HW_KEY = "hardware_keys_disable";
     private static final String NAVIGATION_BAR_RECENTS_STYLE = "navbar_recents_style";
+    private static final String BUTTON_BACK_KILL_TIMEOUT = "button_back_kill_timeout";
 
     // Available custom actions to perform on a key press.
     private static final int ACTION_NOTHING = 0;
@@ -164,6 +165,7 @@
     private PreferenceCategory mKeysAppSwitchCategory;
     private PreferenceCategory mKeysAssistCategory;
     private ListPreference mNavbarRecentsStyle;
+    private ListPreference mBackKillTimeout;
 
     @Override
     protected int getMetricsCategory() {
@@ -185,7 +187,7 @@
         final PreferenceCategory volumeCategory =
                 (PreferenceCategory) prefScreen.findPreference(CATEGORY_VOLUME);
 
-        mButtonBrightnessSupport = getResources().getBoolean(com.android.internal.R.bool.config_button_brightness_support);
+        mButtonBrightnessSupport = res.getBoolean(com.android.internal.R.bool.config_button_brightness_support);
 
         if (hasVolumeRocker()) {
             mVolumeWake = (CheckBoxPreference) findPreference(BUTTON_VOLUME_WAKE);
@@ -226,7 +228,7 @@
             prefScreen.removePreference(volumeCategory);
         }
 
-        final int deviceKeys = getResources().getInteger(
+        final int deviceKeys = res.getInteger(
                 com.android.internal.R.integer.config_deviceHardwareKeys);
         final boolean hasBackKey = false; //(deviceKeys & KEY_MASK_BACK) != 0;
         final boolean hasHomeKey = false; //(deviceKeys & KEY_MASK_HOME) != 0;
@@ -321,7 +323,7 @@
                 mKeySettings.put(Settings.System.KEY_HOME_ACTION, homePressAction);
 
                 int homeLongPressAction;
-                int longPressOnHomeBehavior = getResources().getInteger(
+                int longPressOnHomeBehavior = res.getInteger(
                         com.android.internal.R.integer.config_longPressOnHomeBehavior);
 
                 if (longPressOnHomeBehavior == 1) {
@@ -346,7 +348,7 @@
 
                 mKeySettings.put(Settings.System.KEY_HOME_LONG_PRESS_ACTION, homeLongPressAction);
 
-                int doubleTapOnHomeBehavior = getResources().getInteger(
+                int doubleTapOnHomeBehavior = res.getInteger(
                         com.android.internal.R.integer.config_doubleTapOnHomeBehavior);
 
                 int homeDoubleTapAction = Settings.System.getInt(resolver,
@@ -459,8 +461,7 @@
 //                        Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, 1) == 1);
 //            }
 //
-            boolean hasNavBar = getResources().getBoolean(
-                    com.android.internal.R.bool.config_showNavigationBar);
+            boolean hasNavBar = res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
 //            mForceShowOverflowMenu.setChecked(Settings.System.getInt(resolver,
 //                    Settings.System.FORCE_SHOW_OVERFLOW_MENU, (!hasNavBar && hasMenuKey) ? 0 : 1) == 1);
 //
@@ -489,6 +490,15 @@
         mNavbarRecentsStyle.setSummary(mNavbarRecentsStyle.getEntry());
         mNavbarRecentsStyle.setOnPreferenceChangeListener(this);
 
+        mBackKillTimeout = (ListPreference) findPreference(BUTTON_BACK_KILL_TIMEOUT);
+        final int backKillTimeoutDefault = res.getInteger(com.android.internal.R.integer.config_backKillTimeout);
+        final int backKillTimeout = Settings.System.getInt(resolver,
+                Settings.System.BUTTON_BACK_KILL_TIMEOUT, backKillTimeoutDefault);
+
+        mBackKillTimeout.setValue(Integer.toString(backKillTimeout));
+        mBackKillTimeout.setSummary(mBackKillTimeout.getEntry());
+        mBackKillTimeout.setOnPreferenceChangeListener(this);
+
 //        final PreferenceCategory headsethookCategory =
 //                (PreferenceCategory) prefScreen.findPreference(CATEGORY_HEADSETHOOK);
 
@@ -708,10 +718,14 @@
                 }
             }
             int index = mNavbarRecentsStyle.findIndexOfValue((String) newValue);
-            mNavbarRecentsStyle.setSummary(
-                    mNavbarRecentsStyle.getEntries()[index]);
-            Settings.System.putInt(getContentResolver(),
-                    Settings.System.NAVIGATION_BAR_RECENTS, value);
+            mNavbarRecentsStyle.setSummary(mNavbarRecentsStyle.getEntries()[index]);
+            Settings.System.putInt(getContentResolver(), Settings.System.NAVIGATION_BAR_RECENTS, value);
+            return true;
+        } else if (preference == mBackKillTimeout) {
+            int value = Integer.valueOf((String) newValue);
+            int index = mBackKillTimeout.findIndexOfValue((String) newValue);
+            mBackKillTimeout.setSummary(mBackKillTimeout.getEntries()[index]);
+            Settings.System.putInt(getContentResolver(), Settings.System.BUTTON_BACK_KILL_TIMEOUT, value);
             return true;
         }
         return false;