summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2021-05-03 23:42:48 +0200
committerBruno Martins <bgcngm@gmail.com>2021-05-04 13:57:14 +0200
commit5fb004f482cdbc15c65e073ce60e820bb441c61e (patch)
tree4f03e0dea667f6fd28f90df44ee47d990721f9d5
parent96508d2cf8f5f4b0b64c29203d65c5592042e491 (diff)
LineageParts: Add preferences for back key long press customization
Change-Id: I32bba61ae5b76692b3a4305788559147b6f87436
-rw-r--r--res/values/strings.xml1
-rw-r--r--res/xml/button_settings.xml16
-rw-r--r--src/org/lineageos/lineageparts/input/ButtonSettings.java44
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);