[2/2] OmniGears: force show navbar and hw key disable support
Change-Id: Icab8be5b8f86dfedef0ef3953b058c4d75560219
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 8b8f036..5720353 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -18,8 +18,6 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
- <string name="more_settings_title">OmniGears More...</string>
<string name="ok">OK</string>
<string name="advanced">Advanced</string>
<string name="profiles_add">Add...</string>
@@ -350,14 +348,13 @@
<string name="global_actions_voiceassist_title">Voiceassist</string>
<string name="global_actions_silent_title">Silent mode</string>
<string name="global_actions_dnd_title">Do not disturb</string>
- <string name="global_actions_title">Power menu</string>
<string name="global_actions_summary">Actions shown in power menu</string>
<string name="global_actions_header">Some actions are only visible depending on the setup or only if the device is unlocked</string>
<string name="global_actions_anim">Appearance</string>
<string name="global_actions_advanced_reboot_summary">Show more options in restart menu</string>
<string name="global_actions_advanced_reboot_title">Enable advanced restart</string>
<string name="global_actions_advanced_reboot_summary_new">Show more options in restart menu if not locked</string>
-
+
<string name="font_sample_text">11:57</string>
<string name="screenshot_crop_and_share_title">Screenshot crop & share</string>
@@ -513,7 +510,6 @@
<!-- Display : Rotation -->
<string name="category_display">Display</string>
- <string name="display_rotation_title">Rotation</string>
<string name="display_rotation_disabled">Disabled</string>
<string name="display_rotation_unit">degrees</string>
<string name="display_rotation_category_title">Rotation modes</string>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 9070ec7..3944d82 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -36,6 +36,23 @@
</PreferenceCategory>
<PreferenceCategory
+ android:key="button_keys"
+ android:title="@string/button_keys_title" >
+
+ <SwitchPreference
+ android:key="navigation_bar_show"
+ 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:dependency="navigation_bar_show"/>
+ </PreferenceCategory>
+
+ <PreferenceCategory
android:key="button_power"
android:title="@string/global_actions_power_title" >
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index c2e1b84..ec25354 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -26,7 +26,10 @@
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
+import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.ListPreference;
+import android.support.v14.preference.SwitchPreference;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
@@ -42,9 +45,13 @@
import com.android.internal.util.omni.OmniSwitchConstants;
import com.android.internal.util.omni.PackageUtils;
+import com.android.internal.util.omni.DeviceUtils;
public class ButtonSettings extends SettingsPreferenceFragment implements OnPreferenceChangeListener, Indexable {
+ private static final String CATEGORY_KEYS = "button_keys";
+ 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 LONG_PRESS_RECENTS_ACTION = "long_press_recents_action";
private static final String LONG_PRESS_HOME_ACTION = "long_press_home_action";
@@ -52,6 +59,8 @@
private ListPreference mNavbarRecentsStyle;
private ListPreference mLongPressRecentsAction;
private ListPreference mLongPressHomeAction;
+ private SwitchPreference mEnableNavBar;
+ private SwitchPreference mDisabkeHWKeys;
@Override
public int getMetricsCategory() {
@@ -65,8 +74,30 @@
addPreferencesFromResource(R.xml.button_settings);
final ContentResolver resolver = getContentResolver();
+ final PreferenceScreen prefScreen = getPreferenceScreen();
final int deviceKeys = getResources().getInteger(
com.android.internal.R.integer.config_deviceHardwareKeys);
+ final PreferenceCategory keysCategory =
+ (PreferenceCategory) prefScreen.findPreference(CATEGORY_KEYS);
+
+ if (deviceKeys == 0) {
+ prefScreen.removePreference(keysCategory);
+ } else {
+ 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;
+ mEnableNavBar.setChecked(showNavBar);
+
+ boolean harwareKeysDisable = Settings.System.getInt(resolver,
+ Settings.System.HARDWARE_KEYS_DISABLE, 0) == 1;
+ mDisabkeHWKeys.setChecked(harwareKeysDisable);
+ }
mNavbarRecentsStyle = (ListPreference) findPreference(NAVIGATION_BAR_RECENTS_STYLE);
int recentsStyle = Settings.System.getInt(resolver,
@@ -97,6 +128,23 @@
@Override
public boolean onPreferenceTreeClick(Preference preference) {
+ if (preference == mEnableNavBar) {
+ boolean checked = ((SwitchPreference)preference).isChecked();
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.NAVIGATION_BAR_SHOW, checked ? 1:0);
+ // remove hw button disable if we disable navbar
+ if (!checked) {
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.HARDWARE_KEYS_DISABLE, 0);
+ mDisabkeHWKeys.setChecked(false);
+ }
+ return true;
+ } else if (preference == mDisabkeHWKeys) {
+ boolean checked = ((SwitchPreference)preference).isChecked();
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.HARDWARE_KEYS_DISABLE, checked ? 1:0);
+ return true;
+ }
return super.onPreferenceTreeClick(preference);
}
@@ -181,6 +229,13 @@
@Override
public List<String> getNonIndexableKeys(Context context) {
ArrayList<String> result = new ArrayList<String>();
+ final Resources res = context.getResources();
+ final int deviceKeys = res.getInteger(
+ com.android.internal.R.integer.config_deviceHardwareKeys);
+
+ if (deviceKeys == 0) {
+ result.add(CATEGORY_KEYS);
+ }
return result;
}
};