From 56ad23f76db5e818685a268087f39d8b47de8373 Mon Sep 17 00:00:00 2001
From: Dhina17 <dhinalogu@gmail.com>
Date: Tue, 21 May 2024 13:41:10 +0530
Subject: [PATCH] SystemUI: NavBarTuner: Disable unsupported preferences on
 gesture nav

- 'Navbar format' has no use when gesture nav is enabled
- 'Editor' has no use when gesture nav is enabled and
   ime can render gesture nav buttons.

To disable ime to render gesture nav buttons:
adb shell setprop persist.sys.ime.can_render_gestural_nav_buttons false

Change-Id: I7ceef63dcce16bf3e8f8ee07c1d6323930f66699
---
 .../android/systemui/tuner/NavBarTuner.java    | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/packages/SystemUI/src/com/android/systemui/tuner/NavBarTuner.java b/packages/SystemUI/src/com/android/systemui/tuner/NavBarTuner.java
index b45f22c68f9f..f95e221c5184 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/NavBarTuner.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/NavBarTuner.java
@@ -14,6 +14,8 @@
 
 package com.android.systemui.tuner;
 
+import static android.inputmethodservice.InputMethodService.canImeRenderGesturalNavButtons;
+import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
 import static com.android.systemui.navigationbar.NavigationBarInflaterView.KEY;
 import static com.android.systemui.navigationbar.NavigationBarInflaterView.KEY_CODE_END;
 import static com.android.systemui.navigationbar.NavigationBarInflaterView.KEY_CODE_START;
@@ -29,6 +31,7 @@ import static com.android.systemui.navigationbar.NavigationBarInflaterView.extra
 
 import android.annotation.Nullable;
 import android.app.AlertDialog;
+import android.content.Context;
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
@@ -57,6 +60,7 @@ import java.util.ArrayList;
 public class NavBarTuner extends PreferenceFragment {
 
     private static final String LAYOUT = "layout";
+    private static final String NAVBAR_EDITOR = "navbar_editor";
 
     private final ArrayList<Tunable> mTunables = new ArrayList<>();
     private Handler mHandler;
@@ -79,7 +83,14 @@ public class NavBarTuner extends PreferenceFragment {
     @Override
     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
         addPreferencesFromResource(R.xml.nav_bar_tuner);
-        bindLayout((ListPreference) findPreference(LAYOUT));
+        ListPreference mLayoutPref = (ListPreference) findPreference(LAYOUT);
+        Preference mNavBarEditorPref = findPreference(NAVBAR_EDITOR);
+        if (isGestureNavigationEnabled(getContext())) {
+            mLayoutPref.setEnabled(false);
+            mNavBarEditorPref.setEnabled(!canImeRenderGesturalNavButtons());
+        } else {
+            bindLayout(mLayoutPref);
+        }
     }
 
     @Override
@@ -110,4 +121,9 @@ public class NavBarTuner extends PreferenceFragment {
             return true;
         });
     }
+
+    private boolean isGestureNavigationEnabled(Context context) {
+        return NAV_BAR_MODE_GESTURAL == context.getResources().getInteger(
+                com.android.internal.R.integer.config_navBarInteractionMode);
+    }
 }
-- 
GitLab