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

Commit 0516a06a authored by Yuhan Yang's avatar Yuhan Yang
Browse files

Add autoclick shortcut to a11y autoclick settings

Add a shortcut row that toggles floating icon and pops edit
shortcut type dialog.

Screencast:
 - autoclick indicator flag on:
   go/njiwntmwmjuwnzu2ote1mnw2m2nhmzflzi0znq
 - autoclick indicator flag off:
   go/screenshot-anpqrzv6ewplyjs

Bug: 397719419
Test: Manually verified on test devices
Flag: com.android.server.accessibility.enable_autoclick_indicator
Change-Id: I5f0b51adfaea5c3f8b077af07f34f61d78cb34ac
parent a7caa23d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5643,6 +5643,9 @@
    <string name="accessibility_autoclick_longer_desc">Longer</string>
    <!-- Description for the seekbar that adjust auto click time. [CHAR_LIMIT=NONE] -->
    <string name="accessibility_autoclick_seekbar_desc">Auto click time</string>
    <!-- Title for the toggle button that turns on/off the autoclick shortcut. [CHAR_LIMIT=NONE] -->
    <!-- TODO(b/394683600): Update string to translatable once approved by UXW. -->
    <string name="accessibility_autoclick_shortcut_title" translatable="false">Autoclick shortcut</string>
    <!-- Title for the alert dialog that adjust auto click cursor area size. [CHAR_LIMIT=NONE] -->
    <!-- TODO(b/394683600): Update string to translatable once approved by UXW. -->
    <string name="autoclick_cursor_area_size_title" translatable="false">Click area</string>
+22 −11
Original line number Diff line number Diff line
@@ -22,20 +22,23 @@
    <com.android.settingslib.widget.TopIntroPreference
        android:key="accessibility_autoclick_intro"
        android:title="@string/accessibility_autoclick_intro_text"
        settings:searchable="false"/>
        settings:searchable="false"
        android:order="10"/>

    <com.android.settingslib.widget.IllustrationPreference
        android:key="accessibility_autoclick_banner"
        android:selectable="false"
        settings:searchable="false"
        settings:lottie_rawRes="@drawable/accessibility_dwell"/>
        settings:lottie_rawRes="@drawable/accessibility_dwell"
        android:order="20"/>

    <!-- Items in a list should not be searchable. -->
    <com.android.settingslib.widget.SelectorWithWidgetPreference
        android:key="accessibility_control_autoclick_default"
        android:title="@string/accessibility_autoclick_default_title"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"
        android:order="30"/>

    <!-- Items in a list should not be searchable. -->
    <com.android.settingslib.widget.SelectorWithWidgetPreference
@@ -43,7 +46,8 @@
        android:title="@string/accessibility_autoclick_short_title"
        android:summary="@string/accessibility_autoclick_short_summary"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"
        android:order="31"/>

    <!-- Items in a list should not be searchable. -->
    <com.android.settingslib.widget.SelectorWithWidgetPreference
@@ -51,7 +55,8 @@
        android:title="@string/accessibility_autoclick_medium_title"
        android:summary="@string/accessibility_autoclick_medium_summary"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"
        android:order="32"/>

    <!-- Items in a list should not be searchable. -->
    <com.android.settingslib.widget.SelectorWithWidgetPreference
@@ -59,14 +64,16 @@
        android:title="@string/accessibility_autoclick_long_title"
        android:summary="@string/accessibility_autoclick_long_summary"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"
        android:order="33"/>

    <!-- Items in a list should not be searchable. -->
    <com.android.settingslib.widget.SelectorWithWidgetPreference
        android:key="accessibility_control_autoclick_custom"
        android:title="@string/accessibility_autoclick_custom_title"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"
        android:order="34"/>

    <com.android.settingslib.widget.LayoutPreference
        android:key="autoclick_custom_seekbar"
@@ -74,24 +81,28 @@
        android:selectable="false"
        android:visibility="gone"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"
        android:order="40"/>

    <Preference
        android:key="accessibility_control_autoclick_cursor_area_size"
        android:persistent="false"
        settings:searchable="false"
        android:title="@string/autoclick_cursor_area_size_title"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController" />
        settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController"
        android:order="50"/>

    <SwitchPreferenceCompat
        android:key="accessibility_control_autoclick_ignore_minor_cursor_movement"
        android:title="@string/autoclick_ignore_minor_cursor_movement_title"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"
        android:order="60"/>

    <com.android.settings.accessibility.AccessibilityFooterPreference
        android:key="accessibility_autoclick_footer"
        android:title="@string/accessibility_autoclick_description"
        android:selectable="false"
        settings:searchable="false"
        settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController"
        android:order="70"/>
</PreferenceScreen>
+59 −2
Original line number Diff line number Diff line
@@ -16,22 +16,51 @@

package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.AUTOCLICK_COMPONENT_NAME;

import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.android.server.accessibility.Flags;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

/**
 * Fragment for preference screen for settings related to Automatically click after mouse stops
 * feature.
 */
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class ToggleAutoclickPreferenceFragment extends DashboardFragment {
public class ToggleAutoclickPreferenceFragment
        extends AccessibilityShortcutPreferenceFragment {

    private static final String TAG = "AutoclickPrefFragment";

    static final String KEY_CONTROL_DEFAULT = "accessibility_control_autoclick_default";
    static final String KEY_AUTOCLICK_SHORTCUT_PREFERENCE = "autoclick_shortcut_preference";

    /**
     * Autoclick settings do not need to set any restriction key for pin protected.
     */
    public ToggleAutoclickPreferenceFragment() {
        super(/* restrictionKey= */ null);
    }

    @Override
    protected CharSequence getLabelName() {
        return getContext().getString(R.string.accessibility_autoclick_shortcut_title);
    }

    @Override
    protected boolean showGeneralCategory() {
        return false;
    }

    @Override
    public int getMetricsCategory() {
        return SettingsEnums.ACCESSIBILITY_TOGGLE_AUTOCLICK;
@@ -52,6 +81,34 @@ public class ToggleAutoclickPreferenceFragment extends DashboardFragment {
        return R.xml.accessibility_autoclick_settings;
    }

    @Override
    protected ComponentName getComponentName() {
        return AUTOCLICK_COMPONENT_NAME;
    }

    @Override
    protected CharSequence getShortcutTitle() {
        return getString(R.string.accessibility_autoclick_shortcut_title);
    }

    @Override
    protected String getShortcutPreferenceKey() {
        return KEY_AUTOCLICK_SHORTCUT_PREFERENCE;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = super.onCreateView(inflater, container, savedInstanceState);
        if (Flags.enableAutoclickIndicator()) {
            SelectorWithWidgetPreference optionDefault = findPreference(KEY_CONTROL_DEFAULT);
            mShortcutPreference.setOrder(optionDefault.getOrder() - 1);
        } else {
            getPreferenceScreen().removePreference(mShortcutPreference);
        }
        return view;
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_autoclick_settings);
}