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

Commit 902d3d9e authored by Diksha Gohlyan's avatar Diksha Gohlyan
Browse files

Accessibility, remove double tap to activate for last breadcrumb

Test: atest DocumentsUiGoogleTests

Bug: 151582491

Change-Id: Ie45de68c8b6040872be044d427c3b774b50e2280
parent bfadf609
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.documentsui;

import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

/** Recycler view holding the horizontal breadcrumb. */
public final class BreadcrumbHolder extends RecyclerView.ViewHolder {

    protected TextView mTitle;
    protected ImageView mArrow;
    protected int mDefaultTextColor;
    protected boolean mLast;

    public BreadcrumbHolder(View itemView) {
        super(itemView);
        mTitle = itemView.findViewById(R.id.breadcrumb_text);
        mArrow = itemView.findViewById(R.id.breadcrumb_arrow);
        mDefaultTextColor = mTitle.getTextColors().getDefaultColor();
        mLast = false;
    }

    public boolean isLast() {
        return mLast;
    }

    public void setLast(boolean isLast) {
        mLast = isLast;
    }
}
+1 −16
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -191,6 +189,7 @@ public final class HorizontalBreadcrumb extends RecyclerView implements Breadcru
            holder.mArrow.setVisibility(isLast ? View.GONE : View.VISIBLE);

            holder.itemView.setOnKeyListener(mClickListener);
            holder.setLast(isLast);
        }

        private DocumentInfo getItem(int position) {
@@ -211,20 +210,6 @@ public final class HorizontalBreadcrumb extends RecyclerView implements Breadcru
        }
    }

    private static class BreadcrumbHolder extends RecyclerView.ViewHolder {

        protected TextView mTitle;
        protected ImageView mArrow;
        protected int mDefaultTextColor;

        public BreadcrumbHolder(View itemView) {
            super(itemView);
            mTitle = itemView.findViewById(R.id.breadcrumb_text);
            mArrow = itemView.findViewById(R.id.breadcrumb_arrow);
            mDefaultTextColor = mTitle.getTextColors().getDefaultColor();
        }
    }

    private static final class ClickListener extends GestureDetector
            implements OnItemTouchListener {

+6 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.Accessibilit
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate;

import com.android.documentsui.BreadcrumbHolder;

import java.util.function.Function;

/**
@@ -67,6 +69,10 @@ public class AccessibilityEventRouter extends RecyclerViewAccessibilityDelegate
                    if (((DocumentHolder) holder).getItemDetails() != null) {
                        addAction(info);
                    }
                } else if (holder instanceof BreadcrumbHolder) {
                    if (!((BreadcrumbHolder) holder).isLast()) {
                        addAction(info);
                    }
                } else {
                    addAction(info);
                }