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

Commit 13dcb866 authored by Gavin Williams's avatar Gavin Williams Committed by Android (Google) Code Review
Browse files

Merge "a11y: Change pause button graphic on click" into main

parents cb110efe 3a1031a0
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>

<!-- Copyright 2025 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.
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:width="24dp"
    android:height="24dp">
    <group>
        <clip-path android:pathData="M0 0H24V24H0V0Z" />
        <path
            android:pathData="M8 19V5L19 12L8 19Z"
            android:fillColor="@color/materialColorPrimary" />
    </group>
</vector>
+2 −0
Original line number Diff line number Diff line
@@ -5648,6 +5648,8 @@
  <java-symbol type="id" name="accessibility_autoclick_pause_button" />
  <java-symbol type="id" name="accessibility_autoclick_position_layout" />
  <java-symbol type="id" name="accessibility_autoclick_position_button" />
  <java-symbol type="drawable" name="accessibility_autoclick_pause" />
  <java-symbol type="drawable" name="accessibility_autoclick_resume" />

  <!-- For HapticFeedbackConstants configurability defined at HapticFeedbackCustomization -->
  <java-symbol type="string" name="config_hapticFeedbackCustomizationFile" />
+25 −2
Original line number Diff line number Diff line
@@ -77,14 +77,21 @@ public class AutoclickTypePanel {
    // Whether the panel is expanded or not.
    private boolean mExpanded = false;

    // Whether autoclick is paused.
    private boolean mPaused = false;

    private final LinearLayout mLeftClickButton;
    private final LinearLayout mRightClickButton;
    private final LinearLayout mDoubleClickButton;
    private final LinearLayout mDragButton;
    private final LinearLayout mScrollButton;
    private final LinearLayout mPauseButton;

    private LinearLayout mSelectedButton;

    private final Drawable mPauseButtonDrawable;
    private final Drawable mResumeButtonDrawable;

    public AutoclickTypePanel(
            Context context,
            WindowManager windowManager,
@@ -93,6 +100,11 @@ public class AutoclickTypePanel {
        mWindowManager = windowManager;
        mClickPanelController = clickPanelController;

        mPauseButtonDrawable = mContext.getDrawable(
                R.drawable.accessibility_autoclick_pause);
        mResumeButtonDrawable = mContext.getDrawable(
                R.drawable.accessibility_autoclick_resume);

        mContentView =
                LayoutInflater.from(context)
                        .inflate(R.layout.accessibility_autoclick_type_panel, null);
@@ -104,6 +116,7 @@ public class AutoclickTypePanel {
                mContentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
        mScrollButton = mContentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
        mDragButton = mContentView.findViewById(R.id.accessibility_autoclick_drag_layout);
        mPauseButton = mContentView.findViewById(R.id.accessibility_autoclick_pause_layout);

        initializeButtonState();
    }
@@ -116,8 +129,7 @@ public class AutoclickTypePanel {
        mScrollButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_SCROLL));
        mDragButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_DRAG));

        // TODO(b/388872274): registers listener for pause button and allows users to pause/resume
        // the autoclick.
        mPauseButton.setOnClickListener(v -> togglePause());
        // TODO(b/388847771): registers listener for position button and allows users to move the
        // panel to a different position.

@@ -196,6 +208,17 @@ public class AutoclickTypePanel {
        mExpanded = !mExpanded;
    }

    private void togglePause() {
        mPaused = !mPaused;

        ImageButton imageButton = (ImageButton) mPauseButton.getChildAt(/* index= */ 0);
        if (mPaused) {
            imageButton.setImageDrawable(mResumeButtonDrawable);
        } else {
            imageButton.setImageDrawable(mPauseButtonDrawable);
        }
    }

    /** Hide all buttons on the panel except pause and position buttons. */
    private void hideAllClickTypeButtons() {
        mLeftClickButton.setVisibility(View.GONE);
+9 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ public class AutoclickTypePanelTest {
    private LinearLayout mDoubleClickButton;
    private LinearLayout mDragButton;
    private LinearLayout mScrollButton;
    private LinearLayout mPauseButton;

    private @AutoclickType int mActiveClickType = AUTOCLICK_TYPE_LEFT_CLICK;

@@ -91,6 +92,7 @@ public class AutoclickTypePanelTest {
                contentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
        mScrollButton = contentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
        mDragButton = contentView.findViewById(R.id.accessibility_autoclick_drag_layout);
        mPauseButton = contentView.findViewById(R.id.accessibility_autoclick_pause_layout);
    }

    @Test
@@ -106,6 +108,7 @@ public class AutoclickTypePanelTest {
        assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
        assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);
        assertThat(mScrollButton.getVisibility()).isEqualTo(View.GONE);
        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
    }

    @Test
@@ -124,6 +127,9 @@ public class AutoclickTypePanelTest {
        assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mDragButton.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mScrollButton.getVisibility()).isEqualTo(View.VISIBLE);

        // Pause button is always visible.
        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
    }

    @Test
@@ -142,6 +148,9 @@ public class AutoclickTypePanelTest {
        assertThat(mLeftClickButton.getVisibility()).isEqualTo(View.GONE);
        assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
        assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);

        // Pause button is always visible.
        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
    }

    @Test