From 0516a06a02a5130053e2d1a1bf1762c45f3c4462 Mon Sep 17 00:00:00 2001 From: Yuhan Yang Date: Fri, 14 Feb 2025 18:46:51 +0000 Subject: [PATCH] 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 --- res/values/strings.xml | 3 + res/xml/accessibility_autoclick_settings.xml | 33 ++++++---- .../ToggleAutoclickPreferenceFragment.java | 63 ++++++++++++++++++- 3 files changed, 85 insertions(+), 14 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c49d6e3f767..2b6a58984ff 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5643,6 +5643,9 @@ Longer Auto click time + + + Autoclick shortcut Click area diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml index 11673f7d69e..cc091a57da9 100644 --- a/res/xml/accessibility_autoclick_settings.xml +++ b/res/xml/accessibility_autoclick_settings.xml @@ -22,20 +22,23 @@ + settings:searchable="false" + android:order="10"/> + settings:lottie_rawRes="@drawable/accessibility_dwell" + android:order="20"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController" + android:order="30"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController" + android:order="31"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController" + android:order="32"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController" + android:order="33"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController" + android:order="34"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController" + android:order="40"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController" + android:order="50"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController" + android:order="60"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController" + android:order="70"/> diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java index 168e99d45c6..9d655a0b851 100644 --- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java @@ -16,22 +16,51 @@ package com.android.settings.accessibility; -import android.app.settings.SettingsEnums; +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); }