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

Commit 14f10291 authored by Noah Wang's avatar Noah Wang
Browse files

Read out confirmation message upon selecting options on LabeledSeekBar.

bug: 26965949
Change-Id: I2693ac6849f5c72b2bbd4f775911ea18398746f6
parent 65614324
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

import java.util.List;

@@ -148,6 +149,22 @@ public class LabeledSeekBar extends SeekBar {

    public LabeledSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        super.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // Do nothing
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // Do nothing
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                sendClickEventForAccessibility(progress);
            }
        });
    }

    @Override
@@ -163,6 +180,30 @@ public class LabeledSeekBar extends SeekBar {
        mLabels = labels;
    }

    @Override
    public void setOnSeekBarChangeListener(final OnSeekBarChangeListener l) {
        // Tweak the listener to send accessibility event on progress changed.
        OnSeekBarChangeListener l2 = new OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                l.onStopTrackingTouch(seekBar);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                l.onStartTrackingTouch(seekBar);
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                l.onProgressChanged(seekBar, progress, fromUser);
                sendClickEventForAccessibility(progress);
            }
        };

        super.setOnSeekBarChangeListener(l2);
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
@@ -185,4 +226,11 @@ public class LabeledSeekBar extends SeekBar {

        return super.dispatchHoverEvent(event);
    }

    private void sendClickEventForAccessibility(int progress) {
        if (mAccessHelper != null) {
            mAccessHelper.invalidateRoot();
            mAccessHelper.sendEventForVirtualView(progress, AccessibilityEvent.TYPE_VIEW_CLICKED);
        }
    }
}