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

Commit 3b4d8934 authored by Tracy Zhou's avatar Tracy Zhou
Browse files

Pipe nav bar transitions logic into task bar

Bug: 349155860
Test: manual
Flag: com.android.wm.shell.enable_taskbar_on_phones
Change-Id: I844a9113d2a89330ec6a15b88c76c10c755a0974
parent 083bbcfe
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import android.os.Bundle;
import android.view.MotionEvent;
import com.android.systemui.shared.recents.ISystemUiProxy;

// Next ID: 29
// Next ID: 34
oneway interface IOverviewProxy {

    void onActiveNavBarRegionChanges(in Region activeRegion) = 11;
@@ -82,6 +82,11 @@ oneway interface IOverviewProxy {
     */
    void onSystemBarAttributesChanged(int displayId, int behavior) = 20;

    /**
     * Sent when {@link TaskbarDelegate#onTransitionModeUpdated} is called.
     */
    void onTransitionModeUpdated(int barMode, boolean checkBarModes) = 21;

    /**
     * Sent when the desired dark intensity of the nav buttons has changed
     */
@@ -101,4 +106,30 @@ oneway interface IOverviewProxy {
     * Sent when the task bar stash state is toggled.
     */
    void onTaskbarToggled() = 27;

    /**
     * Sent when the wallpaper visibility is updated.
     */
    void updateWallpaperVisibility(int displayId, boolean visible) = 29;

    /**
     * Sent when {@link TaskbarDelegate#checkNavBarModes} is called.
     */
    void checkNavBarModes() = 30;

    /**
     * Sent when {@link TaskbarDelegate#finishBarAnimations} is called.
     */
    void finishBarAnimations() = 31;

    /**
     * Sent when {@link TaskbarDelegate#touchAutoDim} is called. {@param reset} is true, when auto
     * dim is reset after a timeout.
     */
    void touchAutoDim(boolean reset) = 32;

    /**
     * Sent when {@link TaskbarDelegate#transitionTo} is called.
     */
    void transitionTo(int barMode, boolean animate) = 33;
}
+29 −12
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The Android Open Source Project
 * Copyright (C) 2024 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.
@@ -14,11 +14,13 @@
 * limitations under the License.
 */

package com.android.systemui.statusbar.phone;
package com.android.systemui.shared.statusbar.phone;

import android.annotation.ColorInt;
import android.annotation.IntDef;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
@@ -34,8 +36,6 @@ import android.util.Log;
import android.view.View;

import com.android.app.animation.Interpolators;
import com.android.settingslib.Utils;
import com.android.systemui.res.R;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -44,6 +44,11 @@ public class BarTransitions {
    private static final boolean DEBUG = false;
    private static final boolean DEBUG_COLORS = false;

    @ColorInt
    private static final int SYSTEM_BAR_BACKGROUND_OPAQUE = Color.BLACK;
    @ColorInt
    private static final int SYSTEM_BAR_BACKGROUND_TRANSPARENT = Color.TRANSPARENT;

    public static final int MODE_TRANSPARENT = 0;
    public static final int MODE_SEMI_TRANSPARENT = 1;
    public static final int MODE_TRANSLUCENT = 2;
@@ -183,11 +188,11 @@ public class BarTransitions {
                mTransparent = 0x2f0000ff;
                mWarning = 0xffff0000;
            } else {
                mOpaque = context.getColor(R.color.system_bar_background_opaque);
                mOpaque = SYSTEM_BAR_BACKGROUND_OPAQUE;
                mSemiTransparent = context.getColor(
                        com.android.internal.R.color.system_bar_background_semi_transparent);
                mTransparent = context.getColor(R.color.system_bar_background_transparent);
                mWarning = Utils.getColorAttrDefaultColor(context, android.R.attr.colorError);
                mTransparent = SYSTEM_BAR_BACKGROUND_TRANSPARENT;
                mWarning = getColorAttrDefaultColor(context, android.R.attr.colorError, 0);
            }
            mGradient = context.getDrawable(gradientResourceId);
        }
@@ -304,10 +309,13 @@ public class BarTransitions {
                            Interpolators.LINEAR.getInterpolation(t), 1));
                    mGradientAlpha = (int)(v * targetGradientAlpha + mGradientAlphaStart * (1 - v));
                    mColor = Color.argb(
                          (int)(v * Color.alpha(targetColor) + Color.alpha(mColorStart) * (1 - v)),
                            (int) (v * Color.alpha(targetColor) + Color.alpha(mColorStart) * (1
                                    - v)),
                            (int) (v * Color.red(targetColor) + Color.red(mColorStart) * (1 - v)),
                          (int)(v * Color.green(targetColor) + Color.green(mColorStart) * (1 - v)),
                          (int)(v * Color.blue(targetColor) + Color.blue(mColorStart) * (1 - v)));
                            (int) (v * Color.green(targetColor) + Color.green(mColorStart) * (1
                                    - v)),
                            (int) (v * Color.blue(targetColor) + Color.blue(mColorStart) * (1
                                    - v)));
                }
            }
            if (mGradientAlpha > 0) {
@@ -332,4 +340,13 @@ public class BarTransitions {
            }
        }
    }

    /** Get color styled attribute {@code attr}, default to {@code defValue} if not found. */
    @ColorInt
    public static int getColorAttrDefaultColor(Context context, int attr, @ColorInt int defValue) {
        TypedArray ta = context.obtainStyledAttributes(new int[] {attr});
        @ColorInt int colorAccent = ta.getColor(0, defValue);
        ta.recycle();
        return colorAccent;
    }
}
+6 −6
Original line number Diff line number Diff line
@@ -27,11 +27,11 @@ import static com.android.systemui.accessibility.SystemActions.SYSTEM_ACTION_ID_
import static com.android.systemui.accessibility.SystemActions.SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON_CHOOSER;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT;

import android.content.ContentResolver;
import android.content.Context;
@@ -74,10 +74,10 @@ import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.rotation.RotationPolicyUtil;
import com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+3 −3
Original line number Diff line number Diff line
@@ -48,8 +48,8 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_I
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
import static com.android.systemui.shared.system.QuickStepContract.isGesturalMode;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_OPAQUE;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.TransitionMode;
import static com.android.systemui.statusbar.phone.CentralSurfaces.DEBUG_WINDOW_STATE;
import static com.android.systemui.statusbar.phone.CentralSurfaces.dumpBarTransitions;
import static com.android.systemui.util.Utils.isGesturalModeOnDefaultDisplay;
@@ -137,6 +137,7 @@ import com.android.systemui.shared.navigationbar.RegionSamplingHelper;
import com.android.systemui.shared.recents.utilities.Utilities;
import com.android.systemui.shared.rotation.RotationButtonController;
import com.android.systemui.shared.rotation.RotationPolicyUtil;
import com.android.systemui.shared.statusbar.phone.BarTransitions;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.shared.system.TaskStackChangeListener;
@@ -149,7 +150,6 @@ import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.systemui.navigationbar;
import androidx.annotation.Nullable;

import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.shared.statusbar.phone.BarTransitions;

/** A controller to handle navigation bars. */
public interface NavigationBarController {
Loading