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

Commit 401f6bb0 authored by Pat Manning's avatar Pat Manning
Browse files

Undim kids nav icons on a11y focus and click.

Fix: 241298057
Test: manual
Change-Id: I9a330bde4641a01b4d19dc83c8f25f56a69328c8
parent 831f5ee7
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.launcher3.taskbar;

import static android.view.View.AccessibilityDelegate;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;

import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
@@ -582,6 +583,26 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
        return mHomeButtonAlpha;
    }

    /**
     * Sets the AccessibilityDelegate for the home button.
     */
    public void setHomeButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
        if (mHomeButton == null) {
            return;
        }
        mHomeButton.setAccessibilityDelegate(accessibilityDelegate);
    }

    /**
     * Sets the AccessibilityDelegate for the back button.
     */
    public void setBackButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
        if (mBackButton == null) {
            return;
        }
        mBackButton.setAccessibilityDelegate(accessibilityDelegate);
    }

    /** Use to set the translationY for the all nav+contextual buttons */
    public AnimatedFloat getTaskbarNavButtonTranslationY() {
        return mTaskbarNavButtonTranslationY;
+28 −0
Original line number Diff line number Diff line
@@ -18,13 +18,17 @@ package com.android.launcher3.taskbar;

import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS;
import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;

import static com.android.launcher3.taskbar.NavbarButtonsViewController.ALPHA_INDEX_IMMERSIVE_MODE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IMMERSIVE_MODE;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.MotionEvent;
import android.view.View;

import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.util.MultiValueAlpha;
@@ -52,6 +56,21 @@ public class TaskbarForceVisibleImmersiveController implements TouchController {
            this::updateIconDimmingAlpha);
    private final Consumer<MultiValueAlpha> mImmersiveModeAlphaUpdater = alpha -> alpha.getProperty(
            ALPHA_INDEX_IMMERSIVE_MODE).setValue(mIconAlphaForDimming.value);
    private final View.AccessibilityDelegate mKidsModeAccessibilityDelegate =
            new View.AccessibilityDelegate() {
                @Override
                public boolean performAccessibilityAction(View host, int action, Bundle args) {
                    if (action == ACTION_ACCESSIBILITY_FOCUS || action == ACTION_CLICK) {
                        // Animate undimming of icons on an a11y event, followed by starting the
                        // dimming animation (after its timeout has expired). Both can be called in
                        // succession, as the playing of the two animations in a row is managed by
                        // mHandler's message queue.
                        startIconUndimming();
                        startIconDimming();
                    }
                    return super.performAccessibilityAction(host, action, args);
                }
            };

    // Initialized in init.
    private TaskbarControllers mControllers;
@@ -77,12 +96,21 @@ public class TaskbarForceVisibleImmersiveController implements TouchController {
            } else {
                startIconUndimming();
            }
            mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(
                    mKidsModeAccessibilityDelegate);
            mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(
                    mKidsModeAccessibilityDelegate);
        } else {
            mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
            mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
        }
    }

    /** Clean up animations. */
    public void onDestroy() {
        startIconUndimming();
        mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
        mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
    }

    private void startIconUndimming() {