Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ android_app { "androidx.recyclerview_recyclerview", "jsr305", "org.lineageos.platform.internal", "SystemUISharedLib", ], required: [ Loading res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ <!-- Navigation Bar --> <string name="navigation_bar_category">Navigation bar</string> <string name="navigation_bar_enable_taskbar_title">Enable taskbar</string> <string name="navigation_bar_invert_layout_title">Invert layout</string> <string name="navigation_bar_invert_layout_summary">Inverts the layout of the navigation bar and other items, such as the IME switcher</string> <string name="navigation_bar_left_summary">Place the navigation bar on the left side of the screen in landscape mode</string> Loading res/xml/button_settings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ android:key="navigation_bar_category" android:title="@string/navigation_bar_category" > <SwitchPreference android:key="enable_taskbar" android:title="@string/navigation_bar_enable_taskbar_title" /> <lineageos.preference.LineageSystemSettingSwitchPreference android:key="navigation_bar_menu_arrow_keys" android:title="@string/navigation_bar_arrow_keys_title" Loading src/org/lineageos/lineageparts/input/ButtonSettings.java +74 −8 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package org.lineageos.lineageparts.input; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; import android.app.ActivityManager; import android.content.ComponentName; Loading Loading @@ -49,6 +51,8 @@ import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import org.lineageos.lineageparts.R; import org.lineageos.lineageparts.SettingsPreferenceFragment; import org.lineageos.lineageparts.search.BaseSearchIndexProvider; Loading Loading @@ -110,6 +114,8 @@ public class ButtonSettings extends SettingsPreferenceFragment private static final String KEY_CLICK_PARTIAL_SCREENSHOT = "click_partial_screenshot"; private static final String KEY_SWAP_CAPACITIVE_KEYS = "swap_capacitive_keys"; private static final String KEY_NAV_BAR_INVERSE = "sysui_nav_bar_inverse"; private static final String KEY_ENABLE_TASKBAR = "enable_taskbar"; private static final String CATEGORY_POWER = "power_key"; private static final String CATEGORY_HOME = "home_key"; Loading Loading @@ -152,6 +158,8 @@ public class ButtonSettings extends SettingsPreferenceFragment private SwitchPreference mTorchLongPressPowerGesture; private ListPreference mTorchLongPressPowerTimeout; private SwitchPreference mSwapCapacitiveKeys; private SwitchPreference mNavBarInverse; private SwitchPreference mEnableTaskbar; private PreferenceCategory mNavigationPreferencesCat; Loading Loading @@ -474,6 +482,21 @@ public class ButtonSettings extends SettingsPreferenceFragment mSwapCapacitiveKeys.setDependency(KEY_DISABLE_NAV_KEYS); } mNavBarInverse = findPreference(KEY_NAV_BAR_INVERSE); mEnableTaskbar = findPreference(KEY_ENABLE_TASKBAR); if (mEnableTaskbar != null) { if (!isTablet(getContext()) || !hasNavigationBar()) { mNavigationPreferencesCat.removePreference(mEnableTaskbar); } else { mEnableTaskbar.setOnPreferenceChangeListener(this); mEnableTaskbar.setChecked(LineageSettings.System.getInt(getContentResolver(), LineageSettings.System.ENABLE_TASKBAR, isTablet(getContext()) ? 1 : 0) == 1); toggleTaskBarDependencies(mEnableTaskbar.isChecked()); } } // Override key actions on Go devices in order to hide any unsupported features if (ActivityManager.isLowRamDeviceStatic()) { String[] actionEntriesGo = res.getStringArray(R.array.hardware_keys_action_entries_go); Loading Loading @@ -642,10 +665,60 @@ public class ButtonSettings extends SettingsPreferenceFragment } else if (preference == mSwapCapacitiveKeys) { mHardware.set(LineageHardwareManager.FEATURE_KEY_SWAP, (Boolean) newValue); return true; } else if (preference == mEnableTaskbar) { toggleTaskBarDependencies((Boolean) newValue); if ((Boolean) newValue && is2ButtonNavigationEnabled(getContext())) { // Let's switch to gestural mode if user previously had 2 buttons enabled. setButtonNavigationMode(NAV_BAR_MODE_GESTURAL_OVERLAY); } LineageSettings.System.putInt(getContentResolver(), LineageSettings.System.ENABLE_TASKBAR, ((Boolean) newValue) ? 1 : 0); return true; } return false; } private static boolean is2ButtonNavigationEnabled(Context context) { return NAV_BAR_MODE_2BUTTON == context.getResources().getInteger( com.android.internal.R.integer.config_navBarInteractionMode); } private static void setButtonNavigationMode(String overlayPackage) { IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); try { overlayManager.setEnabledExclusiveInCategory(overlayPackage, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private void toggleTaskBarDependencies(boolean enabled) { if (mNavigationArrowKeys != null) { mNavigationArrowKeys.setEnabled(!enabled); } if (mNavBarInverse != null) { mNavBarInverse.setEnabled(!enabled); } if (mNavigationBackLongPressAction != null) { mNavigationBackLongPressAction.setEnabled(!enabled); } if (mNavigationHomeLongPressAction != null) { mNavigationHomeLongPressAction.setEnabled(!enabled); } if (mNavigationHomeDoubleTapAction != null) { mNavigationHomeDoubleTapAction.setEnabled(!enabled); } if (mNavigationAppSwitchLongPressAction != null) { mNavigationAppSwitchLongPressAction.setEnabled(!enabled); } } private static void writeDisableNavkeysOption(Context context, boolean enabled) { LineageSettings.System.putIntForUser(context.getContentResolver(), LineageSettings.System.FORCE_SHOW_NAVBAR, enabled ? 1 : 0, UserHandle.USER_CURRENT); Loading Loading @@ -825,14 +898,7 @@ public class ButtonSettings extends SettingsPreferenceFragment mDisableNavigationKeys.setEnabled(false); mNavigationPreferencesCat.setEnabled(false); if (!mDisableNavigationKeys.isChecked()) { IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); try { overlayManager.setEnabledExclusiveInCategory(NAV_BAR_MODE_3BUTTON_OVERLAY, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } setButtonNavigationMode(NAV_BAR_MODE_3BUTTON_OVERLAY); } writeDisableNavkeysOption(getActivity(), mDisableNavigationKeys.isChecked()); updateDisableNavkeysOption(); Loading Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ android_app { "androidx.recyclerview_recyclerview", "jsr305", "org.lineageos.platform.internal", "SystemUISharedLib", ], required: [ Loading
res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ <!-- Navigation Bar --> <string name="navigation_bar_category">Navigation bar</string> <string name="navigation_bar_enable_taskbar_title">Enable taskbar</string> <string name="navigation_bar_invert_layout_title">Invert layout</string> <string name="navigation_bar_invert_layout_summary">Inverts the layout of the navigation bar and other items, such as the IME switcher</string> <string name="navigation_bar_left_summary">Place the navigation bar on the left side of the screen in landscape mode</string> Loading
res/xml/button_settings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ android:key="navigation_bar_category" android:title="@string/navigation_bar_category" > <SwitchPreference android:key="enable_taskbar" android:title="@string/navigation_bar_enable_taskbar_title" /> <lineageos.preference.LineageSystemSettingSwitchPreference android:key="navigation_bar_menu_arrow_keys" android:title="@string/navigation_bar_arrow_keys_title" Loading
src/org/lineageos/lineageparts/input/ButtonSettings.java +74 −8 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package org.lineageos.lineageparts.input; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; import android.app.ActivityManager; import android.content.ComponentName; Loading Loading @@ -49,6 +51,8 @@ import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import org.lineageos.lineageparts.R; import org.lineageos.lineageparts.SettingsPreferenceFragment; import org.lineageos.lineageparts.search.BaseSearchIndexProvider; Loading Loading @@ -110,6 +114,8 @@ public class ButtonSettings extends SettingsPreferenceFragment private static final String KEY_CLICK_PARTIAL_SCREENSHOT = "click_partial_screenshot"; private static final String KEY_SWAP_CAPACITIVE_KEYS = "swap_capacitive_keys"; private static final String KEY_NAV_BAR_INVERSE = "sysui_nav_bar_inverse"; private static final String KEY_ENABLE_TASKBAR = "enable_taskbar"; private static final String CATEGORY_POWER = "power_key"; private static final String CATEGORY_HOME = "home_key"; Loading Loading @@ -152,6 +158,8 @@ public class ButtonSettings extends SettingsPreferenceFragment private SwitchPreference mTorchLongPressPowerGesture; private ListPreference mTorchLongPressPowerTimeout; private SwitchPreference mSwapCapacitiveKeys; private SwitchPreference mNavBarInverse; private SwitchPreference mEnableTaskbar; private PreferenceCategory mNavigationPreferencesCat; Loading Loading @@ -474,6 +482,21 @@ public class ButtonSettings extends SettingsPreferenceFragment mSwapCapacitiveKeys.setDependency(KEY_DISABLE_NAV_KEYS); } mNavBarInverse = findPreference(KEY_NAV_BAR_INVERSE); mEnableTaskbar = findPreference(KEY_ENABLE_TASKBAR); if (mEnableTaskbar != null) { if (!isTablet(getContext()) || !hasNavigationBar()) { mNavigationPreferencesCat.removePreference(mEnableTaskbar); } else { mEnableTaskbar.setOnPreferenceChangeListener(this); mEnableTaskbar.setChecked(LineageSettings.System.getInt(getContentResolver(), LineageSettings.System.ENABLE_TASKBAR, isTablet(getContext()) ? 1 : 0) == 1); toggleTaskBarDependencies(mEnableTaskbar.isChecked()); } } // Override key actions on Go devices in order to hide any unsupported features if (ActivityManager.isLowRamDeviceStatic()) { String[] actionEntriesGo = res.getStringArray(R.array.hardware_keys_action_entries_go); Loading Loading @@ -642,10 +665,60 @@ public class ButtonSettings extends SettingsPreferenceFragment } else if (preference == mSwapCapacitiveKeys) { mHardware.set(LineageHardwareManager.FEATURE_KEY_SWAP, (Boolean) newValue); return true; } else if (preference == mEnableTaskbar) { toggleTaskBarDependencies((Boolean) newValue); if ((Boolean) newValue && is2ButtonNavigationEnabled(getContext())) { // Let's switch to gestural mode if user previously had 2 buttons enabled. setButtonNavigationMode(NAV_BAR_MODE_GESTURAL_OVERLAY); } LineageSettings.System.putInt(getContentResolver(), LineageSettings.System.ENABLE_TASKBAR, ((Boolean) newValue) ? 1 : 0); return true; } return false; } private static boolean is2ButtonNavigationEnabled(Context context) { return NAV_BAR_MODE_2BUTTON == context.getResources().getInteger( com.android.internal.R.integer.config_navBarInteractionMode); } private static void setButtonNavigationMode(String overlayPackage) { IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); try { overlayManager.setEnabledExclusiveInCategory(overlayPackage, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private void toggleTaskBarDependencies(boolean enabled) { if (mNavigationArrowKeys != null) { mNavigationArrowKeys.setEnabled(!enabled); } if (mNavBarInverse != null) { mNavBarInverse.setEnabled(!enabled); } if (mNavigationBackLongPressAction != null) { mNavigationBackLongPressAction.setEnabled(!enabled); } if (mNavigationHomeLongPressAction != null) { mNavigationHomeLongPressAction.setEnabled(!enabled); } if (mNavigationHomeDoubleTapAction != null) { mNavigationHomeDoubleTapAction.setEnabled(!enabled); } if (mNavigationAppSwitchLongPressAction != null) { mNavigationAppSwitchLongPressAction.setEnabled(!enabled); } } private static void writeDisableNavkeysOption(Context context, boolean enabled) { LineageSettings.System.putIntForUser(context.getContentResolver(), LineageSettings.System.FORCE_SHOW_NAVBAR, enabled ? 1 : 0, UserHandle.USER_CURRENT); Loading Loading @@ -825,14 +898,7 @@ public class ButtonSettings extends SettingsPreferenceFragment mDisableNavigationKeys.setEnabled(false); mNavigationPreferencesCat.setEnabled(false); if (!mDisableNavigationKeys.isChecked()) { IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); try { overlayManager.setEnabledExclusiveInCategory(NAV_BAR_MODE_3BUTTON_OVERLAY, UserHandle.USER_CURRENT); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } setButtonNavigationMode(NAV_BAR_MODE_3BUTTON_OVERLAY); } writeDisableNavkeysOption(getActivity(), mDisableNavigationKeys.isChecked()); updateDisableNavkeysOption(); Loading