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

Commit de32d145 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Fix talkback ordering of zen duration dialog

zen_mode_condition elements do not have unique ids, so when assigning
the accessibility traversal order in ZenRadioLayout, the hidden
more/less buttons in the ZenRadioLayout were causing an improper
traversal order for the visible more/less buttons. This fix removes the
unused buttons.

Test: manual
Fixes: 145261528
Change-Id: I2750a5484da52723fb363d138b600f87792f6552
parent eb7da42d
Loading
Loading
Loading
Loading
+30 −28
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.service.notification.Condition;
import android.service.notification.ZenModeConfig;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -228,9 +229,11 @@ public class ZenDurationDialog {
    }

    private void updateButtons(ConditionTag tag, View row, int rowIndex) {
        // minus button
        final ImageView button1 = (ImageView) row.findViewById(android.R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
        final ImageView minusButton = (ImageView) row.findViewById(android.R.id.button1);
        final ImageView plusButton = (ImageView) row.findViewById(android.R.id.button2);
        final long time = tag.countdownZenDuration;
        if (rowIndex == COUNTDOWN_CONDITION_INDEX) {
            minusButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onClickTimeButton(row, tag, false /*down*/, rowIndex);
@@ -238,29 +241,28 @@ public class ZenDurationDialog {
                }
            });

        // plus button
        final ImageView button2 = (ImageView) row.findViewById(android.R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            plusButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onClickTimeButton(row, tag, true /*up*/, rowIndex);
                    tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
                }
            });
            minusButton.setVisibility(View.VISIBLE);
            plusButton.setVisibility(View.VISIBLE);

        final long time = tag.countdownZenDuration;
        if (rowIndex == COUNTDOWN_CONDITION_INDEX) {
            button1.setVisibility(View.VISIBLE);
            button2.setVisibility(View.VISIBLE);
            minusButton.setEnabled(time > MIN_BUCKET_MINUTES);
            plusButton.setEnabled(tag.countdownZenDuration != MAX_BUCKET_MINUTES);

            button1.setEnabled(time > MIN_BUCKET_MINUTES);
            button2.setEnabled(tag.countdownZenDuration != MAX_BUCKET_MINUTES);

            button1.setAlpha(button1.isEnabled() ? 1f : .5f);
            button2.setAlpha(button2.isEnabled() ? 1f : .5f);
            minusButton.setAlpha(minusButton.isEnabled() ? 1f : .5f);
            plusButton.setAlpha(plusButton.isEnabled() ? 1f : .5f);
        } else {
            button1.setVisibility(View.GONE);
            button2.setVisibility(View.GONE);
            if (minusButton != null) {
                ((ViewGroup) row).removeView(minusButton);
            }
            if (plusButton != null) {
                ((ViewGroup) row).removeView(plusButton);
            }
        }
    }