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

Commit c666aa13 authored by Peiyong Lin's avatar Peiyong Lin Committed by Android (Google) Code Review
Browse files

Merge "Add NavigationBarOverlayController."

parents 8b09c27f 0eebce6a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationBarOverlayController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.DarkIconDispatcher;
@@ -340,6 +341,7 @@ public class Dependency {
    @Inject Lazy<ProtoTracer> mProtoTracer;
    @Inject Lazy<MediaOutputDialogFactory> mMediaOutputDialogFactory;
    @Inject Lazy<DeviceConfigProxy> mDeviceConfigProxy;
    @Inject Lazy<NavigationBarOverlayController> mNavbarButtonsControllerLazy;

    @Inject
    public Dependency() {
@@ -536,6 +538,8 @@ public class Dependency {

        mProviders.put(MediaOutputDialogFactory.class, mMediaOutputDialogFactory::get);

        mProviders.put(NavigationBarOverlayController.class, mNavbarButtonsControllerLazy::get);

        Dependency.setInstance(this);
    }

+4 −1
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationBarOverlayController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.PluginInitializerImpl;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -81,8 +82,8 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.theme.ThemeOverlayApplier;
import com.android.systemui.util.leak.LeakDetector;
import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
import com.android.wm.shell.pip.Pip;

import java.util.Optional;
import java.util.concurrent.Executor;
@@ -221,6 +222,7 @@ public class DependencyProvider {
            SystemActions systemActions,
            @Main Handler mainHandler,
            UiEventLogger uiEventLogger,
            NavigationBarOverlayController navBarOverlayController,
            ConfigurationController configurationController) {
        return new NavigationBarController(context,
                windowManager,
@@ -244,6 +246,7 @@ public class DependencyProvider {
                systemActions,
                mainHandler,
                uiEventLogger,
                navBarOverlayController,
                configurationController);
    }

+11 −1
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
import com.android.wm.shell.pip.Pip;

import java.io.PrintWriter;
import java.util.List;
@@ -185,6 +185,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
    private final Optional<Recents> mRecentsOptional;
    private final SystemActions mSystemActions;
    private final Handler mHandler;
    private final NavigationBarOverlayController mNavbarOverlayController;
    private final UiEventLogger mUiEventLogger;

    private Bundle mSavedState;
@@ -415,6 +416,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
            NotificationRemoteInputManager notificationRemoteInputManager,
            SystemActions systemActions,
            @Main Handler mainHandler,
            NavigationBarOverlayController navbarOverlayController,
            UiEventLogger uiEventLogger) {
        mContext = context;
        mWindowManager = windowManager;
@@ -438,6 +440,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
        mRecentsOptional = recentsOptional;
        mSystemActions = systemActions;
        mHandler = mainHandler;
        mNavbarOverlayController = navbarOverlayController;
        mUiEventLogger = uiEventLogger;
    }

@@ -862,6 +865,13 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
        rotationButtonController.onRotationProposal(rotation, winRotation, isValid);
    }

    @Override
    public void onRecentsAnimationStateChanged(boolean running) {
        if (running) {
            mNavbarOverlayController.setButtonState(/* visible */false, /* force */true);
        }
    }

    /** Restores the appearance and the transient saved state to {@link NavigationBar}. */
    public void restoreAppearanceAndTransientState() {
        final int barMode = barMode(mTransientShown, mAppearance);
+5 −1
Original line number Diff line number Diff line
@@ -64,8 +64,8 @@ import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
import com.android.wm.shell.pip.Pip;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -107,6 +107,7 @@ public class NavigationBarController implements Callbacks,
    private final UiEventLogger mUiEventLogger;
    private final Handler mHandler;
    private final DisplayManager mDisplayManager;
    private final NavigationBarOverlayController mNavBarOverlayController;

    /** A displayId - nav bar maps. */
    @VisibleForTesting
@@ -141,6 +142,7 @@ public class NavigationBarController implements Callbacks,
            SystemActions systemActions,
            @Main Handler mainHandler,
            UiEventLogger uiEventLogger,
            NavigationBarOverlayController navBarOverlayController,
            ConfigurationController configurationController) {
        mContext = context;
        mWindowManager = windowManager;
@@ -168,6 +170,7 @@ public class NavigationBarController implements Callbacks,
        commandQueue.addCallback(this);
        configurationController.addCallback(this);
        mConfigChanges.applyNewConfig(mContext.getResources());
        mNavBarOverlayController = navBarOverlayController;
    }

    @Override
@@ -290,6 +293,7 @@ public class NavigationBarController implements Callbacks,
                mNotificationRemoteInputManager,
                mSystemActions,
                mHandler,
                mNavBarOverlayController,
                mUiEventLogger);

        View navigationBarView = navBar.createView(savedState);
+88 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.navigationbar;

import android.annotation.ColorInt;
import android.content.Context;
import android.view.View;

import com.android.systemui.dagger.SysUISingleton;

import java.util.function.Consumer;

import javax.inject.Inject;

/** Contains logic that deals with showing buttons with navigation bar. */
@SysUISingleton
public class NavigationBarOverlayController {

    protected final Context mContext;

    @Inject
    public NavigationBarOverlayController(Context context) {
        mContext = context;
    }

    public Context getContext() {
        return mContext;
    }

    /**
     * Initialize the controller with visibility change callback and light/dark icon color.
     */
    public void init(Consumer<Boolean> visibilityChangeCallback, @ColorInt int lightIconColor,
            @ColorInt int darkIconColor) {}

    /**
     * Set whether the view can be shown.
     */
    public void setCanShow(boolean canShow) {}

    /**
     * Set the buttons visibility.
     */
    public void setButtonState(boolean visible, boolean force) {}

    /**
     * Register necessary listeners, called when NavigationBarView is attached to window.
     */
    public void registerListeners() {}

    /**
     * Unregister listeners, called when navigationBarView is detached from window.
     */
    public void unregisterListeners() {}

    /**
     * Set the dark intensity for all drawables.
     */
    public void setDarkIntensity(float darkIntensity) {}

    /**
     * Return the current view.
     */
    public View getCurrentView() {
        return null;
    }

    /**
     * Return the visibility of the view.
     */
    public boolean isVisible() {
        return false;
    }
}
Loading