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

Commit fd40706c authored by Bruno Martins's avatar Bruno Martins
Browse files

fw/b: Add support for runtime toggle of navbar



Co-authored-by: default avatarAdnan Begovic <adnan@cyngn.com>
Co-authored-by: default avatarjhenrique09 <jhenrique09.mcz@hotmail.com>
Co-authored-by: default avatarLuK1337 <priv.luk@gmail.com>
Co-authored-by: default avatarPaul Keith <javelinanddart@gmail.com>
Co-authored-by: default avatarTimo Wendt <timo@tjwendt.de>
Change-Id: I4a6d3f89bc171c3921875b24c077cb78c03517ad
parent a333ed2a
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -1223,6 +1223,8 @@ public final class PowerManagerService extends SystemService
    private static native boolean nativeSetPowerMode(int mode, boolean enabled);
    private static native boolean nativeForceSuspend();

    private boolean mForceNavbar;

    // Whether proximity check on wake is enabled by default
    private boolean mProximityWakeEnabledByDefaultConfig;

@@ -1595,6 +1597,9 @@ public final class PowerManagerService extends SystemService
        resolver.registerContentObserver(LineageSettings.Secure.getUriFor(
                LineageSettings.Secure.KEYBOARD_BRIGHTNESS),
                false, mSettingsObserver, UserHandle.USER_ALL);
        resolver.registerContentObserver(LineageSettings.System.getUriFor(
                LineageSettings.System.FORCE_SHOW_NAVBAR),
                false, mSettingsObserver, UserHandle.USER_ALL);

        // Register for broadcasts from other components of the system.
        IntentFilter filter = new IntentFilter();
@@ -1742,6 +1747,10 @@ public final class PowerManagerService extends SystemService
                LineageSettings.Secure.KEYBOARD_BRIGHTNESS, mKeyboardBrightnessDefault,
                UserHandle.USER_CURRENT);

        mForceNavbar = LineageSettings.System.getIntForUser(resolver,
                LineageSettings.System.FORCE_SHOW_NAVBAR,
                0, UserHandle.USER_CURRENT) == 1;

        mDirty |= DIRTY_SETTINGS;
    }

@@ -3204,6 +3213,7 @@ public final class PowerManagerService extends SystemService
                        if (wakefulness == WAKEFULNESS_AWAKE) {
                            if (mButtonsLight != null) {
                                float buttonBrightness = BRIGHTNESS_OFF_FLOAT;
                                if (!mForceNavbar) {
                                    if (isValidBrightness(
                                            mButtonBrightnessOverrideFromWindowManager)) {
                                        if (mButtonBrightnessOverrideFromWindowManager >
@@ -3214,6 +3224,7 @@ public final class PowerManagerService extends SystemService
                                    } else if (isValidButtonBrightness(mButtonBrightness)) {
                                        buttonBrightness = mButtonBrightness;
                                    }
                                }

                                if (!mButtonLightOnKeypressOnly) {
                                    powerGroup.setLastButtonActivityTimeLocked(
+37 −1
Original line number Diff line number Diff line
@@ -86,9 +86,11 @@ import android.app.ActivityThread;
import android.app.LoadedApk;
import android.app.ResourcesManager;
import android.app.WindowConfiguration;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
@@ -149,6 +151,8 @@ import com.android.server.statusbar.StatusBarManagerInternal;
import com.android.server.wallpaper.WallpaperManagerInternal;
import com.android.wm.shell.Flags;

import lineageos.providers.LineageSettings;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -241,6 +245,7 @@ public class DisplayPolicy {

    private volatile boolean mHasStatusBar;
    private volatile boolean mHasNavigationBar;
    private volatile boolean mForceNavbar;
    // Can the navigation bar ever move to the side?
    private volatile boolean mNavigationBarCanMove;
    private volatile boolean mNavigationBarAlwaysShowOnSideGesture;
@@ -381,6 +386,8 @@ public class DisplayPolicy {

    private RefreshRatePolicy mRefreshRatePolicy;

    private SettingsObserver mSettingsObserver;

    /**
     * If true, attach the navigation bar to the current transition app.
     * The value is read from config_attachNavBarToAppDuringTransition and could be overlaid by RRO
@@ -418,6 +425,24 @@ public class DisplayPolicy {
        }
    }

    private class SettingsObserver extends ContentObserver {
        public SettingsObserver(Handler handler) {
            super(handler);

            ContentResolver resolver = mContext.getContentResolver();
            resolver.registerContentObserver(LineageSettings.System.getUriFor(
                    LineageSettings.System.FORCE_SHOW_NAVBAR), false, this,
                    UserHandle.USER_ALL);

            updateSettings();
        }

        @Override
        public void onChange(boolean selfChange) {
            updateSettings();
        }
    }

    DisplayPolicy(WindowManagerService service, DisplayContent displayContent) {
        mService = service;
        mContext = displayContent.isDefaultDisplay ? service.mContext
@@ -672,6 +697,9 @@ public class DisplayPolicy {
            } else if ("0".equals(navBarOverride)) {
                mHasNavigationBar = true;
            }

            // Register content observer only for main display
            mSettingsObserver = new SettingsObserver(mHandler);
        } else {
            mHasStatusBar = false;
            mHasNavigationBar = mDisplayContent.isSystemDecorationsSupported();
@@ -718,6 +746,14 @@ public class DisplayPolicy {
        }
    }

    public void updateSettings() {
        ContentResolver resolver = mContext.getContentResolver();

        mForceNavbar = LineageSettings.System.getIntForUser(resolver,
                LineageSettings.System.FORCE_SHOW_NAVBAR, 0,
                UserHandle.USER_CURRENT) == 1;
    }

    private int getDisplayId() {
        return mDisplayContent.getDisplayId();
    }
@@ -766,7 +802,7 @@ public class DisplayPolicy {
    }

    public boolean hasNavigationBar() {
        return mHasNavigationBar;
        return mHasNavigationBar || mForceNavbar;
    }

    void updateHasNavigationBarIfNeeded() {