[2/2] OmniGears: add basic hardware button disable

and add config_deviceHardwareKeys to allow differencing
hardware button devices from navbar devices

KeyEvent filtering must be done using DeviceKeyHandler
and the isDisabledKeyEvent API

Change-Id: I6b2c0b6d305714bd1496d5a62615d972e4a22247
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 87a330e..8585946 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -82,13 +82,13 @@
             android:title="@string/navigation_bar_show_title"
             android:summary="@string/navigation_bar_show_summary"
             android:persistent="false" />
-<!--
         <SwitchPreference
             android:key="hardware_keys_disable"
             android:title="@string/hardware_keys_disable_title"
             android:summary="@string/hardware_keys_disable_summary"
-            android:persistent="false"/>
-
+            android:persistent="false"
+            android:dependency="navigation_bar_show"/>
+<!--
         <CheckBoxPreference
             android:key="virtual_key_haptic_feedback"
             android:title="@string/virtual_key_haptic_feedback_title"
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index e686391..4880502 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -90,7 +90,7 @@
 //    private static final String FORCE_SHOW_OVERFLOW_MENU = "force_show_overflow_menu";
     private static final String KEYS_BRIGHTNESS_KEY = "button_brightness";
     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 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";
 
@@ -140,9 +140,9 @@
 //    private CheckBoxPreference mForceShowOverflowMenu;
     private boolean mButtonBrightnessSupport;
     private SwitchPreference mEnableNavBar;
-//    private SwitchPreference mDisabkeHWKeys;
+    private SwitchPreference mDisabkeHWKeys;
     private PreferenceScreen mButtonBrightness;
-    private PreferenceCategory mKeysBackCategory;
+//    private PreferenceCategory mKeysBackCategory;
 //    private PreferenceCategory mKeysHomeCategory;
 //    private PreferenceCategory mKeysMenuCategory;
 //    private PreferenceCategory mKeysAppSwitchCategory;
@@ -208,20 +208,11 @@
             prefScreen.removePreference(volumeCategory);
         }
 
-        // TODO once config_deviceHardwareKeys is back this must be moved back below
-        final PreferenceCategory keysCategory =
-                (PreferenceCategory) prefScreen.findPreference(CATEGORY_KEYS);
-        mButtonBrightness = (PreferenceScreen) prefScreen.findPreference(
-                KEYS_BRIGHTNESS_KEY);
-        if (!mButtonBrightnessSupport) {
-            prefScreen.removePreference(keysCategory);
-            keysCategory.removePreference(mButtonBrightness);
-        }
-
-/*
         final int deviceKeys = res.getInteger(
                 com.android.internal.R.integer.config_deviceHardwareKeys);
-        final boolean hasBackKey = false; //(deviceKeys & KEY_MASK_BACK) != 0;
+        final PreferenceCategory keysCategory =
+                (PreferenceCategory) prefScreen.findPreference(CATEGORY_KEYS);
+        /*final boolean hasBackKey = false; //(deviceKeys & KEY_MASK_BACK) != 0;
         final boolean hasHomeKey = false; //(deviceKeys & KEY_MASK_HOME) != 0;
         final boolean hasMenuKey = false; //(deviceKeys & KEY_MASK_MENU) != 0;
         final boolean hasAssistKey = false; //(deviceKeys & KEY_MASK_ASSIST) != 0;
@@ -236,17 +227,17 @@
         mKeysAssistCategory =
                 (PreferenceCategory) prefScreen.findPreference(CATEGORY_ASSIST);
         mKeysAppSwitchCategory =
-                (PreferenceCategory) prefScreen.findPreference(CATEGORY_APPSWITCH);
+                (PreferenceCategory) prefScreen.findPreference(CATEGORY_APPSWITCH);*/
 
         if (deviceKeys == 0) {
             prefScreen.removePreference(keysCategory);
-            prefScreen.removePreference(mKeysBackCategory);
+            /*prefScreen.removePreference(mKeysBackCategory);
             prefScreen.removePreference(mKeysHomeCategory);
             prefScreen.removePreference(mKeysMenuCategory);
             prefScreen.removePreference(mKeysAssistCategory);
-            prefScreen.removePreference(mKeysAppSwitchCategory);
+            prefScreen.removePreference(mKeysAppSwitchCategory);*/
         } else {
-            mEnableCustomBindings = (SwitchPreference) prefScreen.findPreference(
+            /*mEnableCustomBindings = (SwitchPreference) prefScreen.findPreference(
                     KEYS_ENABLE_CUSTOM);
             mBackPressAction = (ListPreference) prefScreen.findPreference(
                     KEYS_BACK_PRESS);
@@ -274,14 +265,9 @@
 //                    VIRTUAL_KEY_HAPTIC_FEEDBACK);
 //            mForceShowOverflowMenu = (CheckBoxPreference) prefScreen.findPreference(
 //                    FORCE_SHOW_OVERFLOW_MENU);
-*/
-            mEnableNavBar = (SwitchPreference) prefScreen.findPreference(
-                   KEYS_SHOW_NAVBAR_KEY);
-/*
-            mDisabkeHWKeys = (SwitchPreference) prefScreen.findPreference(
-                    KEYS_DISABLE_HW_KEY);
 
-            if (hasBackKey) {
+
+            /*if (hasBackKey) {
                 int backPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_BACK_ACTION, ACTION_BACK);
 
@@ -451,11 +437,23 @@
 //                mVirtualKeyHapticFeedback.setChecked(Settings.System.getInt(resolver,
 //                        Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, 1) == 1);
 //            }
-//
-            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);
-//
+
+
+            updateDisableHWKeyEnablement(harwareKeysDisable); */
+
+
+            mButtonBrightness = (PreferenceScreen) prefScreen.findPreference(
+                KEYS_BRIGHTNESS_KEY);
+            if (!mButtonBrightnessSupport) {
+                keysCategory.removePreference(mButtonBrightness);
+            }
+
+            mEnableNavBar = (SwitchPreference) prefScreen.findPreference(
+                   KEYS_SHOW_NAVBAR_KEY);
+
+            mDisabkeHWKeys = (SwitchPreference) prefScreen.findPreference(
+                    KEYS_DISABLE_HW_KEY);
+
             boolean showNavBarDefault = DeviceUtils.deviceSupportNavigationBar(getActivity());
             boolean showNavBar = Settings.System.getInt(resolver,
                         Settings.System.NAVIGATION_BAR_SHOW, showNavBarDefault ? 1:0) == 1;
@@ -464,11 +462,9 @@
             boolean harwareKeysDisable = Settings.System.getInt(resolver,
                         Settings.System.HARDWARE_KEYS_DISABLE, 0) == 1;
             mDisabkeHWKeys.setChecked(harwareKeysDisable);
-
-            updateDisableHWKeyEnablement(harwareKeysDisable);
         }
 
-        mNavbarRecentsStyle = (ListPreference) findPreference(NAVIGATION_BAR_RECENTS_STYLE);
+        /*mNavbarRecentsStyle = (ListPreference) findPreference(NAVIGATION_BAR_RECENTS_STYLE);
         int recentsStyle = Settings.System.getInt(resolver,
                 Settings.System.NAVIGATION_BAR_RECENTS, 0);
 
@@ -483,7 +479,7 @@
 
         mBackKillTimeout.setValue(Integer.toString(backKillTimeout));
         mBackKillTimeout.setSummary(mBackKillTimeout.getEntry());
-        mBackKillTimeout.setOnPreferenceChangeListener(this);
+        mBackKillTimeout.setOnPreferenceChangeListener(this);*/
 
 //        final PreferenceCategory headsethookCategory =
 //                (PreferenceCategory) prefScreen.findPreference(CATEGORY_HEADSETHOOK);
@@ -491,7 +487,6 @@
 //        mHeadsetHookLaunchVoice = (CheckBoxPreference) findPreference(BUTTON_HEADSETHOOK_LAUNCH_VOICE);
 //        mHeadsetHookLaunchVoice.setChecked(Settings.System.getInt(resolver,
 //                Settings.System.HEADSETHOOK_LAUNCH_VOICE, 1) == 1);
-*/
     }
 
     @Override
@@ -522,13 +517,12 @@
             Settings.System.putInt(getContentResolver(),
                     Settings.System.NAVIGATION_BAR_SHOW, checked ? 1:0);
             return true;
-/*        } else if (preference == mDisabkeHWKeys) {
+        } else if (preference == mDisabkeHWKeys) {
             boolean checked = ((SwitchPreference)preference).isChecked();
             Settings.System.putInt(getContentResolver(),
                     Settings.System.HARDWARE_KEYS_DISABLE, checked ? 1:0);
-            updateDisableHWKeyEnablement(checked);
+            //updateDisableHWKeyEnablement(checked);
             return true;
-*/
          } else if (preference == mSwapVolumeButtons) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
             Settings.System.putInt(getContentResolver(),