diff options
author | LuK1337 <priv.luk@gmail.com> | 2021-05-03 23:42:48 +0200 |
---|---|---|
committer | Bruno Martins <bgcngm@gmail.com> | 2021-05-04 13:57:14 +0200 |
commit | 5fb004f482cdbc15c65e073ce60e820bb441c61e (patch) | |
tree | 4f03e0dea667f6fd28f90df44ee47d990721f9d5 | |
parent | 96508d2cf8f5f4b0b64c29203d65c5592042e491 (diff) |
LineageParts: Add preferences for back key long press customization
Change-Id: I32bba61ae5b76692b3a4305788559147b6f87436
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | res/xml/button_settings.xml | 16 | ||||
-rw-r--r-- | src/org/lineageos/lineageparts/input/ButtonSettings.java | 44 |
3 files changed, 59 insertions, 2 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index d273847..1eb0545 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -245,6 +245,7 @@ <string name="navigation_bar_left_summary">Place the navigation bar on the left side of the screen in landscape mode</string> <string name="navigation_bar_arrow_keys_title">Show arrow keys while typing</string> <string name="navigation_bar_arrow_keys_summary">Display left and right cursor buttons while typing. Overrides IME switcher.</string> + <string name="navigation_bar_back_long_press_title">Back long press action</string> <string name="navigation_bar_home_long_press_title">Home long press action</string> <string name="navigation_bar_home_double_tap_title">Home double tap action</string> <string name="navigation_bar_app_switch_long_press_title">Recents long press action</string> diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml index f4880f1..31dfbf9 100644 --- a/res/xml/button_settings.xml +++ b/res/xml/button_settings.xml @@ -54,6 +54,14 @@ android:defaultValue="false" /> <ListPreference + android:key="navigation_back_long_press" + android:dialogTitle="@string/navigation_bar_back_long_press_title" + android:title="@string/navigation_bar_back_long_press_title" + android:entries="@array/hardware_keys_action_entries" + android:entryValues="@array/hardware_keys_action_values" + android:persistent="false" /> + + <ListPreference android:key="navigation_home_long_press" android:dialogTitle="@string/navigation_bar_home_long_press_title" android:title="@string/navigation_bar_home_long_press_title" @@ -157,6 +165,14 @@ android:title="@string/button_wake_title" android:defaultValue="false" /> + <ListPreference + android:key="hardware_keys_back_long_press" + android:dialogTitle="@string/hardware_keys_long_press_title" + android:title="@string/hardware_keys_long_press_title" + android:entries="@array/hardware_keys_action_entries" + android:entryValues="@array/hardware_keys_action_values" + android:persistent="false" /> + </PreferenceCategory> <PreferenceCategory diff --git a/src/org/lineageos/lineageparts/input/ButtonSettings.java b/src/org/lineageos/lineageparts/input/ButtonSettings.java index b1d90d7..613e847 100644 --- a/src/org/lineageos/lineageparts/input/ButtonSettings.java +++ b/src/org/lineageos/lineageparts/input/ButtonSettings.java @@ -70,6 +70,7 @@ public class ButtonSettings extends SettingsPreferenceFragment private static final String KEY_CAMERA_LAUNCH = "camera_launch"; private static final String KEY_CAMERA_SLEEP_ON_RELEASE = "camera_sleep_on_release"; private static final String KEY_CAMERA_WAKE_SCREEN = "camera_wake_screen"; + private static final String KEY_BACK_LONG_PRESS = "hardware_keys_back_long_press"; private static final String KEY_HOME_LONG_PRESS = "hardware_keys_home_long_press"; private static final String KEY_HOME_DOUBLE_TAP = "hardware_keys_home_double_tap"; private static final String KEY_HOME_WAKE_SCREEN = "home_wake_screen"; @@ -89,6 +90,7 @@ public class ButtonSettings extends SettingsPreferenceFragment private static final String KEY_VOLUME_ANSWER_CALL = "volume_answer_call"; private static final String KEY_DISABLE_NAV_KEYS = "disable_nav_keys"; private static final String KEY_NAVIGATION_ARROW_KEYS = "navigation_bar_menu_arrow_keys"; + private static final String KEY_NAVIGATION_BACK_LONG_PRESS = "navigation_back_long_press"; private static final String KEY_NAVIGATION_HOME_LONG_PRESS = "navigation_home_long_press"; private static final String KEY_NAVIGATION_HOME_DOUBLE_TAP = "navigation_home_double_tap"; private static final String KEY_NAVIGATION_APP_SWITCH_LONG_PRESS = @@ -117,6 +119,7 @@ public class ButtonSettings extends SettingsPreferenceFragment private static final String CATEGORY_NAVBAR = "navigation_bar_category"; private static final String CATEGORY_EXTRAS = "extras_category"; + private ListPreference mBackLongPressAction; private ListPreference mHomeLongPressAction; private ListPreference mHomeDoubleTapAction; private ListPreference mMenuPressAction; @@ -135,6 +138,7 @@ public class ButtonSettings extends SettingsPreferenceFragment private SwitchPreference mVolumePanelOnLeft; private SwitchPreference mDisableNavigationKeys; private SwitchPreference mNavigationArrowKeys; + private ListPreference mNavigationBackLongPressAction; private ListPreference mNavigationHomeLongPressAction; private ListPreference mNavigationHomeDoubleTapAction; private ListPreference mNavigationAppSwitchLongPressAction; @@ -211,12 +215,17 @@ public class ButtonSettings extends SettingsPreferenceFragment mNavigationPreferencesCat = findPreference(CATEGORY_NAVBAR); + Action defaultBackLongPressAction = Action.fromIntSafe(res.getInteger( + org.lineageos.platform.internal.R.integer.config_longPressOnBackBehavior)); Action defaultHomeLongPressAction = Action.fromIntSafe(res.getInteger( org.lineageos.platform.internal.R.integer.config_longPressOnHomeBehavior)); Action defaultHomeDoubleTapAction = Action.fromIntSafe(res.getInteger( org.lineageos.platform.internal.R.integer.config_doubleTapOnHomeBehavior)); Action defaultAppSwitchLongPressAction = Action.fromIntSafe(res.getInteger( org.lineageos.platform.internal.R.integer.config_longPressOnAppSwitchBehavior)); + Action backLongPressAction = Action.fromSettings(resolver, + LineageSettings.System.KEY_BACK_LONG_PRESS_ACTION, + defaultBackLongPressAction); Action homeLongPressAction = Action.fromSettings(resolver, LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION, defaultHomeLongPressAction); @@ -233,6 +242,10 @@ public class ButtonSettings extends SettingsPreferenceFragment // Navigation bar arrow keys while typing mNavigationArrowKeys = findPreference(KEY_NAVIGATION_ARROW_KEYS); + // Navigation bar back long press + mNavigationBackLongPressAction = initList(KEY_NAVIGATION_BACK_LONG_PRESS, + backLongPressAction); + // Navigation bar home long press mNavigationHomeLongPressAction = initList(KEY_NAVIGATION_HOME_LONG_PRESS, homeLongPressAction); @@ -299,8 +312,14 @@ public class ButtonSettings extends SettingsPreferenceFragment if (hasBackKey) { if (!showBackWake) { backCategory.removePreference(findPreference(KEY_BACK_WAKE_SCREEN)); - prefScreen.removePreference(backCategory); } + + mBackLongPressAction = initList(KEY_BACK_LONG_PRESS, backLongPressAction); + if (mDisableNavigationKeys.isChecked()) { + mBackLongPressAction.setEnabled(false); + } + + hasAnyBindableKey = true; } if (!hasBackKey || backCategory.getPreferenceCount() == 0) { prefScreen.removePreference(backCategory); @@ -456,6 +475,11 @@ public class ButtonSettings extends SettingsPreferenceFragment String[] actionEntriesGo = res.getStringArray(R.array.hardware_keys_action_entries_go); String[] actionValuesGo = res.getStringArray(R.array.hardware_keys_action_values_go); + if (hasBackKey) { + mBackLongPressAction.setEntries(actionEntriesGo); + mBackLongPressAction.setEntryValues(actionValuesGo); + } + if (hasHomeKey) { mHomeLongPressAction.setEntries(actionEntriesGo); mHomeLongPressAction.setEntryValues(actionValuesGo); @@ -488,6 +512,9 @@ public class ButtonSettings extends SettingsPreferenceFragment mAppSwitchLongPressAction.setEntryValues(actionValuesGo); } + mNavigationBackLongPressAction.setEntries(actionEntriesGo); + mNavigationBackLongPressAction.setEntryValues(actionValuesGo); + mNavigationHomeLongPressAction.setEntries(actionEntriesGo); mNavigationHomeLongPressAction.setEntryValues(actionValuesGo); @@ -556,7 +583,12 @@ public class ButtonSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - if (preference == mHomeLongPressAction || + if (preference == mBackLongPressAction || + preference == mNavigationBackLongPressAction) { + handleListChange((ListPreference) preference, newValue, + LineageSettings.System.KEY_BACK_LONG_PRESS_ACTION); + return true; + } else if (preference == mHomeLongPressAction || preference == mNavigationHomeLongPressAction) { handleListChange((ListPreference) preference, newValue, LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION); @@ -653,16 +685,19 @@ public class ButtonSettings extends SettingsPreferenceFragment mNavigationPreferencesCat.addPreference(mEdgeLongSwipeAction); mNavigationPreferencesCat.removePreference(mNavigationArrowKeys); + mNavigationPreferencesCat.removePreference(mNavigationBackLongPressAction); mNavigationPreferencesCat.removePreference(mNavigationHomeLongPressAction); mNavigationPreferencesCat.removePreference(mNavigationHomeDoubleTapAction); mNavigationPreferencesCat.removePreference(mNavigationAppSwitchLongPressAction); } else if (DeviceUtils.isSwipeUpEnabled(getContext())) { + mNavigationPreferencesCat.addPreference(mNavigationBackLongPressAction); mNavigationPreferencesCat.addPreference(mNavigationHomeLongPressAction); mNavigationPreferencesCat.addPreference(mNavigationHomeDoubleTapAction); mNavigationPreferencesCat.removePreference(mNavigationAppSwitchLongPressAction); mNavigationPreferencesCat.removePreference(mEdgeLongSwipeAction); } else { + mNavigationPreferencesCat.addPreference(mNavigationBackLongPressAction); mNavigationPreferencesCat.addPreference(mNavigationHomeLongPressAction); mNavigationPreferencesCat.addPreference(mNavigationHomeDoubleTapAction); mNavigationPreferencesCat.addPreference(mNavigationAppSwitchLongPressAction); @@ -671,6 +706,11 @@ public class ButtonSettings extends SettingsPreferenceFragment } } } + if (backCategory != null) { + if (mBackLongPressAction != null) { + mBackLongPressAction.setEnabled(!navbarEnabled); + } + } if (homeCategory != null) { if (mHomeAnswerCall != null) { mHomeAnswerCall.setEnabled(!navbarEnabled); |