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

Commit 58d9b866 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Fixes context for tiles without longClick

QSTile can declare whether it doesn't support (has no effect) long click
and then TalkBack will not report it as an available option.

Test: manual & atest
Change-Id: Iec21181f4308c7c8c4962f191fa0787e053ae944
Fixes: 117921787
parent c6d5e2db
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ public interface QSTile {
        public boolean isTransient = false;
        public String expandedAccessibilityClassName;
        public SlashState slash;
        public boolean handlesLongClick = true;

        public boolean copyTo(State other) {
            if (other == null) throw new IllegalArgumentException();
@@ -133,7 +134,8 @@ public interface QSTile {
                    || !Objects.equals(other.state, state)
                    || !Objects.equals(other.isTransient, isTransient)
                    || !Objects.equals(other.dualTarget, dualTarget)
                    || !Objects.equals(other.slash, slash);
                    || !Objects.equals(other.slash, slash)
                    || !Objects.equals(other.handlesLongClick, handlesLongClick);
            other.icon = icon;
            other.iconSupplier = iconSupplier;
            other.label = label;
@@ -146,6 +148,7 @@ public interface QSTile {
            other.dualTarget = dualTarget;
            other.isTransient = isTransient;
            other.slash = slash != null ? slash.copy() : null;
            other.handlesLongClick = handlesLongClick;
            return changed;
        }

+9 −4
Original line number Diff line number Diff line
@@ -194,6 +194,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        }

        setClickable(state.state != Tile.STATE_UNAVAILABLE);
        setLongClickable(state.handlesLongClick);
        mIcon.setIcon(state, allowAnimations);
        setContentDescription(state.contentDescription);

@@ -287,10 +288,14 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
                info.setText(label);
                info.setChecked(b);
                info.setCheckable(true);
                if (isLongClickable()) {
                    info.addAction(
                            new AccessibilityNodeInfo.AccessibilityAction(
                                AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.getId(),
                                getResources().getString(R.string.accessibility_long_click_tile)));
                                    AccessibilityNodeInfo.AccessibilityAction
                                            .ACTION_LONG_CLICK.getId(),
                                    getResources().getString(
                                            R.string.accessibility_long_click_tile)));
                }
            }
        }
    }
+3 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.qs.tiles;

import android.app.ActivityManager;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.provider.MediaStore;
import android.service.quicksettings.Tile;
import android.widget.Switch;
@@ -50,7 +49,9 @@ public class FlashlightTile extends QSTileImpl<BooleanState> implements

    @Override
    public BooleanState newTileState() {
        return new BooleanState();
        BooleanState state = new BooleanState();
        state.handlesLongClick = false;
        return state;
    }

    @Override