Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d3e42ca authored by Luca Stefani's avatar Luca Stefani Committed by Bruno Martins
Browse files

LineageParts: Dynamically hide/show navigation preferences

* Distinguish between legacy/2 button/gestural

Change-Id: I821217dff7cb62eccb617d8ae4e6d974ee26aff4
parent aa116ed9
Loading
Loading
Loading
Loading
+24 −9
Original line number Diff line number Diff line
@@ -248,10 +248,10 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
            // Remove keys that can be provided by the navbar
            updateDisableNavkeysOption();
            mNavigationPreferencesCat.setEnabled(mDisableNavigationKeys.isChecked());
            updateDisableNavkeysCategories(mDisableNavigationKeys.isChecked());
        } else {
            prefScreen.removePreference(mDisableNavigationKeys);
        }
        updateDisableNavkeysCategories(mDisableNavigationKeys.isChecked(), /* force */ true);

        if (hasPowerKey) {
            if (!TelephonyUtils.isVoiceCapable(getActivity())) {
@@ -600,7 +600,7 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
        mDisableNavigationKeys.setChecked(enabled);
    }

    private void updateDisableNavkeysCategories(boolean navbarEnabled) {
    private void updateDisableNavkeysCategories(boolean navbarEnabled, boolean force) {
        final PreferenceScreen prefScreen = getPreferenceScreen();

        /* Disable hw-key options if they're disabled */
@@ -626,11 +626,26 @@ public class ButtonSettings extends SettingsPreferenceFragment implements

        /* Toggle hardkey control availability depending on navbar state */
        if (mNavigationPreferencesCat != null) {
            if (navbarEnabled) {
            if (force || navbarEnabled) {
                if (DeviceUtils.isEdgeToEdgeEnabled(getContext())) {
                    mNavigationPreferencesCat.addPreference(mEdgeLongSwipeAction);

                    mNavigationPreferencesCat.removePreference(mNavigationHomeLongPressAction);
                    mNavigationPreferencesCat.removePreference(mNavigationHomeDoubleTapAction);
                    mNavigationPreferencesCat.removePreference(mNavigationAppSwitchLongPressAction);
                } else if (DeviceUtils.isSwipeUpEnabled(getContext())) {
                    mNavigationPreferencesCat.addPreference(mNavigationHomeLongPressAction);
                    mNavigationPreferencesCat.addPreference(mNavigationHomeDoubleTapAction);

                    mNavigationPreferencesCat.removePreference(mNavigationAppSwitchLongPressAction);
                    mNavigationPreferencesCat.removePreference(mEdgeLongSwipeAction);
                } else {
                    mNavigationPreferencesCat.addPreference(mNavigationHomeLongPressAction);
                    mNavigationPreferencesCat.addPreference(mNavigationHomeDoubleTapAction);
                    mNavigationPreferencesCat.addPreference(mNavigationAppSwitchLongPressAction);
                mNavigationPreferencesCat.addPreference(mEdgeLongSwipeAction);

                    mNavigationPreferencesCat.removePreference(mEdgeLongSwipeAction);
                }
            } else {
                mNavigationPreferencesCat.removePreference(mNavigationHomeLongPressAction);
                mNavigationPreferencesCat.removePreference(mNavigationHomeDoubleTapAction);
@@ -710,13 +725,13 @@ public class ButtonSettings extends SettingsPreferenceFragment implements
            mNavigationPreferencesCat.setEnabled(false);
            writeDisableNavkeysOption(getActivity(), mDisableNavigationKeys.isChecked());
            updateDisableNavkeysOption();
            updateDisableNavkeysCategories(true);
            updateDisableNavkeysCategories(true, false);
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mDisableNavigationKeys.setEnabled(true);
                    mNavigationPreferencesCat.setEnabled(mDisableNavigationKeys.isChecked());
                    updateDisableNavkeysCategories(mDisableNavigationKeys.isChecked());
                    updateDisableNavkeysCategories(mDisableNavigationKeys.isChecked(), false);
                }
            }, 1000);
        } else if (preference == mPowerEndCall) {
+17 −1
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The CyanogenMod project
 * Copyright (C) 2017 The LineageOS project
 *               2017-2020 The LineageOS project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -16,6 +16,9 @@
 */
package org.lineageos.lineageparts.utils;

import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
@@ -137,4 +140,17 @@ public class DeviceUtils {
        }
        return false;
    }

    public static boolean isSwipeUpEnabled(Context context) {
        if (isEdgeToEdgeEnabled(context)) {
            return false;
        }
        return NAV_BAR_MODE_2BUTTON == context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode);
    }

    public static boolean isEdgeToEdgeEnabled(Context context) {
        return NAV_BAR_MODE_GESTURAL == context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode);
    }
}