[2/2] OmniGears: Long press back to kill app

Change-Id: I349aebff131e90edd1923762f38a20dd10b8fcb9
(cherry picked from commit 9dc47fdb1d1e2bb3d9626e28528604ef3048904c)
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index f80d506..2b5d5fa 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -212,15 +212,15 @@
     </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>
+        <item>@string/button_back_kill_timeout_2000ms</item>
     </string-array>
 
     <string-array name="button_back_kill_timeout_values" translatable="false">
-        <item>500</item>
         <item>1000</item>
         <item>1500</item>
+        <item>2000</item>
     </string-array>
 
     <!-- Quick pulldown -->
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 056470f..df3615d 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -82,6 +82,7 @@
     <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>
+    <string name="button_back_kill_timeout_2000ms">2000 ms</string>
 
     <!-- Double tap to sleep -->
     <string name="double_tap_to_sleep_title">Double-tap to sleep</string>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index d9abd60..b83d291 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -94,6 +94,7 @@
             android:entries="@array/navbar_recents_style_entries"
             android:entryValues="@array/navbar_recents_style_values"
             android:persistent="false"/>
+
         <ListPreference
             android:key="long_press_recents_action"
             android:title="@string/long_press_recents_action_title"
@@ -112,6 +113,22 @@
             android:entries="@array/long_press_home_action_entries"
             android:entryValues="@array/long_press_home_action_values"
             android:persistent="false"/>
+
+        <org.omnirom.omnigears.preference.SystemSettingSwitchPreference
+            android:key="button_back_kill_enable"
+            android:title="@string/button_back_kill_enable_title"
+            android:summary="@string/button_back_kill_enable_summary"
+            android:defaultValue="false"/>
+
+        <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:defaultValue="1500"
+            android:persistent="false"
+            android:dependency="button_back_kill_enable"/>
+
     </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index 6685c3b..3f6af00 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -59,6 +59,7 @@
     private static final String LONG_PRESS_RECENTS_ACTION = "long_press_recents_action";
     private static final String LONG_PRESS_HOME_ACTION = "long_press_home_action";
     private static final String DOUBLE_PRESS_HOME_ACTION = "double_press_home_action";
+    private static final String BUTTON_BACK_KILL_TIMEOUT = "button_back_kill_timeout";
 
     private ListPreference mNavbarRecentsStyle;
     private ListPreference mLongPressRecentsAction;
@@ -66,6 +67,7 @@
     private ListPreference mDoublePressHomeAction;
     private SwitchPreference mEnableNavBar;
     private SwitchPreference mDisabkeHWKeys;
+    private ListPreference mBackKillTimeout;
 
     @Override
     public int getMetricsCategory() {
@@ -126,6 +128,15 @@
         int longPressHomeAction = Settings.System.getInt(resolver,
                 Settings.System.BUTTON_LONG_PRESS_HOME, defaultLongPressOnHomeBehavior);
 
+        mBackKillTimeout = (ListPreference) findPreference(BUTTON_BACK_KILL_TIMEOUT);
+        final int backKillTimeoutDefault = getResources().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);
+
         mLongPressHomeAction.setValue(Integer.toString(longPressHomeAction));
         mLongPressHomeAction.setSummary(mLongPressHomeAction.getEntry());
         mLongPressHomeAction.setOnPreferenceChangeListener(this);
@@ -194,6 +205,12 @@
             mDoublePressHomeAction.setSummary(mDoublePressHomeAction.getEntries()[index]);
             Settings.System.putInt(getContentResolver(), Settings.System.BUTTON_DOUBLE_PRESS_HOME, 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;
     }