diff --git a/app/src/main/java/sh/siava/pixelxpert/modpacks/systemui/GestureNavbarManager.java b/app/src/main/java/sh/siava/pixelxpert/modpacks/systemui/GestureNavbarManager.java
index 2a1046711..a6d697955 100644
--- a/app/src/main/java/sh/siava/pixelxpert/modpacks/systemui/GestureNavbarManager.java
+++ b/app/src/main/java/sh/siava/pixelxpert/modpacks/systemui/GestureNavbarManager.java
@@ -11,6 +11,7 @@
import static de.robv.android.xposed.XposedHelpers.getObjectField;
import static de.robv.android.xposed.XposedHelpers.setAdditionalInstanceField;
import static de.robv.android.xposed.XposedHelpers.setObjectField;
+import static sh.siava.pixelxpert.modpacks.XPrefs.Xprefs;
import android.content.Context;
import android.graphics.Color;
@@ -23,7 +24,6 @@
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import sh.siava.pixelxpert.modpacks.Constants;
import sh.siava.pixelxpert.modpacks.XPLauncher;
-import sh.siava.pixelxpert.modpacks.XPrefs;
import sh.siava.pixelxpert.modpacks.XposedModPack;
import sh.siava.pixelxpert.modpacks.launcher.TaskbarActivator;
import sh.siava.pixelxpert.modpacks.utils.Helpers;
@@ -53,6 +53,8 @@ public class GestureNavbarManager extends XposedModPack {
private boolean colorReplaced = false;
private static boolean navPillColorAccent = false;
private static final int mLightColor = Color.parseColor("#EBffffff"), mDarkColor = Color.parseColor("#99000000"); //original navbar colors
+ private static boolean HideNavbar = false;
+ private Object NavigationBar;
//endregion
public GestureNavbarManager(Context context) {
@@ -60,21 +62,25 @@ public GestureNavbarManager(Context context) {
}
public void updatePrefs(String... Key) {
- if (XPrefs.Xprefs == null) return;
+ if (Xprefs == null) return;
//region Back gesture
- leftEnabled = XPrefs.Xprefs.getBoolean("BackFromLeft", true);
- rightEnabled = XPrefs.Xprefs.getBoolean("BackFromRight", true);
- backGestureHeightFractionLeft = XPrefs.Xprefs.getInt("BackLeftHeight", 100) / 100f;
- backGestureHeightFractionRight = XPrefs.Xprefs.getInt("BackRightHeight", 100) / 100f;
+ leftEnabled = Xprefs.getBoolean("BackFromLeft", true);
+ rightEnabled = Xprefs.getBoolean("BackFromRight", true);
+ backGestureHeightFractionLeft = Xprefs.getInt("BackLeftHeight", 100) / 100f;
+ backGestureHeightFractionRight = Xprefs.getInt("BackRightHeight", 100) / 100f;
+ //endregion
+
+ //region hide navbar
+ HideNavbar = Xprefs.getBoolean("HideNavbar", false);
//endregion
//region pill size
- widthFactor = XPrefs.Xprefs.getInt("GesPillWidthModPos", 50) * .02f;
- GesPillHeightFactor = XPrefs.Xprefs.getInt("GesPillHeightFactor", 100);
+ widthFactor = Xprefs.getInt("GesPillWidthModPos", 50) * .02f;
+ GesPillHeightFactor = Xprefs.getInt("GesPillHeightFactor", 100);
int taskbarMode = TaskbarActivator.TASKBAR_DEFAULT;
- String taskbarModeStr = XPrefs.Xprefs.getString("taskBarMode", "0");
+ String taskbarModeStr = Xprefs.getString("taskBarMode", "0");
try {
taskbarMode = Integer.parseInt(taskbarModeStr);
} catch (Exception ignored) {
@@ -85,17 +91,18 @@ public void updatePrefs(String... Key) {
}
if (Key.length > 0) {
+ refreshNavbar();
+
switch (Key[0]) {
- case "GesPillWidthModPos":
- case "GesPillHeightFactor":
- refreshNavbar();
+ case "HideNavbar":
+ setNavbarVisibility();
break;
}
}
//endregion
//region pill color
- navPillColorAccent = XPrefs.Xprefs.getBoolean("navPillColorAccent", false);
+ navPillColorAccent = Xprefs.getBoolean("navPillColorAccent", false);
//endregion
}
@@ -114,12 +121,22 @@ private void refreshNavbar() {
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals(listenPackage)) return;
+ Class> NavigationBarClass = findClass("com.android.systemui.navigationbar.NavigationBar", lpparam.classLoader);
Class> NavigationBarInflaterViewClass = findClass("com.android.systemui.navigationbar.NavigationBarInflaterView", lpparam.classLoader);
Class> NavigationHandleClass = findClass("com.android.systemui.navigationbar.gestural.NavigationHandle", lpparam.classLoader);
Class> EdgeBackGestureHandlerClass = findClassIfExists("com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler", lpparam.classLoader);
Class> NavigationBarEdgePanelClass = findClassIfExists("com.android.systemui.navigationbar.gestural.NavigationBarEdgePanel", lpparam.classLoader);
Class> BackPanelControllerClass = findClass("com.android.systemui.navigationbar.gestural.BackPanelController", lpparam.classLoader);
+ hookAllMethods(NavigationBarClass, "onViewAttached", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ NavigationBar = param.thisObject;
+
+ setNavbarVisibility();
+ }
+ });
+
//region back gesture
//A14
hookAllConstructors(EdgeBackGestureHandlerClass, new XC_MethodHook() {
@@ -248,6 +265,16 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
}
+ private void setNavbarVisibility() {
+ ((View) getObjectField(
+ NavigationBar,
+ "mFrame")
+ ).setAlpha(
+ HideNavbar
+ ? 0
+ : 1);
+ }
+
//region Back gesture
private boolean notWithinInsets(float x, float y, Point mDisplaySize, float mBottomGestureHeight) {
boolean isLeftSide = x < (mDisplaySize.x / 3f);
diff --git a/app/src/main/res/xml/nav_prefs.xml b/app/src/main/res/xml/nav_prefs.xml
index 276322fa5..82e74d243 100644
--- a/app/src/main/res/xml/nav_prefs.xml
+++ b/app/src/main/res/xml/nav_prefs.xml
@@ -21,6 +21,14 @@
android:title="@string/hide_navbar_title"
app:iconSpaceReserved="false" />
+
+