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

Commit 6f5e82d9 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

QS Talkback bug fixes

Fixes a couple of Talkback bugs in QSCustomizer:
* List scrolling
* Focusing on correct element when "move" is selected.
* No reading "double tap and hold for long press".

Also, Dark Mode tile made a switch

Fixes: 145259342
Fixes: 145257223
Test: manual using TB
Change-Id: I782dad4e1a411972c40e37abc31eabb3fd1f8ea2
parent bbe62f41
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@
            android:scrollIndicators="top"
            android:scrollbars="vertical"
            android:scrollbarStyle="outsideOverlay"
            android:importantForAccessibility="no" />
            android:importantForAccessibility="auto" />
    </com.android.keyguard.AlphaOptimizedLinearLayout>

    <View
+5 −0
Original line number Diff line number Diff line
@@ -49,4 +49,9 @@ public class CustomizeTileView extends QSTileView {
    protected boolean animationsEnabled() {
        return false;
    }

    @Override
    public boolean isLongClickable() {
        return false;
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.widget.LinearLayout;
import android.widget.Toolbar;
import android.widget.Toolbar.OnMenuItemClickListener;

import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -118,7 +119,13 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
        mTileQueryHelper.setListener(mTileAdapter);
        mRecyclerView.setAdapter(mTileAdapter);
        mTileAdapter.getItemTouchHelper().attachToRecyclerView(mRecyclerView);
        GridLayoutManager layout = new GridLayoutManager(getContext(), 3);
        GridLayoutManager layout = new GridLayoutManager(getContext(), 3) {
            @Override
            public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler,
                    RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) {
                // Do not read row and column every time it changes.
            }
        };
        layout.setSpanSizeLookup(mTileAdapter.getSizeLookup());
        mRecyclerView.setLayoutManager(layout);
        mRecyclerView.addItemDecoration(mTileAdapter.getItemDecoration());
+15 −0
Original line number Diff line number Diff line
@@ -238,9 +238,21 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
        return true;
    }

    private void setSelectableForHeaders(View view) {
        if (mAccessibilityManager.isTouchExplorationEnabled()) {
            final boolean selectable = mAccessibilityAction == ACTION_NONE;
            view.setFocusable(selectable);
            view.setImportantForAccessibility(selectable
                    ? View.IMPORTANT_FOR_ACCESSIBILITY_YES
                    : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
            view.setFocusableInTouchMode(selectable);
        }
    }

    @Override
    public void onBindViewHolder(final Holder holder, int position) {
        if (holder.getItemViewType() == TYPE_HEADER) {
            setSelectableForHeaders(holder.itemView);
            return;
        }
        if (holder.getItemViewType() == TYPE_DIVIDER) {
@@ -260,6 +272,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
            }

            ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleText);
            setSelectableForHeaders(holder.itemView);

            return;
        }
        if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) {
@@ -306,6 +320,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
            holder.mTileView.setImportantForAccessibility(selectable
                    ? View.IMPORTANT_FOR_ACCESSIBILITY_YES
                    : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
            holder.mTileView.setFocusableInTouchMode(selectable);
            if (selectable) {
                holder.mTileView.setOnClickListener(new OnClickListener() {
                    @Override
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.res.Configuration;
import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.text.TextUtils;
import android.widget.Switch;

import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.R;
@@ -112,6 +113,7 @@ public class UiModeNightTile extends QSTileImpl<QSTile.BooleanState> implements
            state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
        }
        state.showRippleEffect = false;
        state.expandedAccessibilityClassName = Switch.class.getName();
    }

    @Override