From 4d52d7233707c9210657cf94c57477bd1a439365 Mon Sep 17 00:00:00 2001 From: Yuhan Yang Date: Thu, 20 Feb 2025 18:21:07 +0000 Subject: [PATCH] Only create shortcut preference when no existing shortcut found Update onCreateView in AccessibilityShortcutPreferenceFragmen so it only create a new shortcutPreference when no existing shortcut preference is found. Bug: 397719419 Test: Manually verified on test devices Flag: com.android.server.accessibility.enable_autoclick_indicator Change-Id: Ic4747240cfd3d48fd97c61fd0b15d44f6ba5cf0a --- res/xml/accessibility_autoclick_settings.xml | 39 ++++++++----------- ...cessibilityShortcutPreferenceFragment.java | 15 ++++--- .../accessibility/ShortcutPreference.java | 4 +- .../ToggleAutoclickPreferenceFragment.java | 7 +--- 4 files changed, 30 insertions(+), 35 deletions(-) diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml index cc091a57da9..de4a12dd1c6 100644 --- a/res/xml/accessibility_autoclick_settings.xml +++ b/res/xml/accessibility_autoclick_settings.xml @@ -22,23 +22,26 @@ + settings:searchable="false"/> + settings:lottie_rawRes="@drawable/accessibility_dwell"/> + + + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/> + settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController"/> diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java index 886c9499389..88a70d3adfc 100644 --- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java @@ -104,14 +104,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends Restricted @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mShortcutPreference = new ShortcutPreference(getPrefContext(), /* attrs= */ null); - mShortcutPreference.setPersistent(false); - mShortcutPreference.setKey(getShortcutPreferenceKey()); + mShortcutPreference = + getPreferenceScreen().findPreference(getShortcutPreferenceKey()); + if (mShortcutPreference == null) { + mShortcutPreference = new ShortcutPreference(getPrefContext(), /* attrs= */ null); + mShortcutPreference.setPersistent(false); + mShortcutPreference.setKey(getShortcutPreferenceKey()); + getPreferenceScreen().addPreference(mShortcutPreference); + } + mShortcutPreference.setOnClickCallback(this); mShortcutPreference.setTitle(getShortcutTitle()); - - getPreferenceScreen().addPreference(mShortcutPreference); - mTouchExplorationStateChangeListener = isTouchExplorationEnabled -> { mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext())); }; diff --git a/src/com/android/settings/accessibility/ShortcutPreference.java b/src/com/android/settings/accessibility/ShortcutPreference.java index c23bc55fcee..612d8874964 100644 --- a/src/com/android/settings/accessibility/ShortcutPreference.java +++ b/src/com/android/settings/accessibility/ShortcutPreference.java @@ -24,6 +24,8 @@ import android.view.View; import android.widget.CompoundButton; import android.widget.LinearLayout; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; @@ -60,7 +62,7 @@ public class ShortcutPreference extends TwoTargetPreference { private boolean mChecked = false; private boolean mSettingsEditable = true; - ShortcutPreference(Context context, AttributeSet attrs) { + public ShortcutPreference(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); setIconSpaceReserved(false); // Treat onSettingsClicked as this preference's click. diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java index 9d655a0b851..91e5b07870e 100644 --- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java @@ -29,7 +29,6 @@ import com.android.server.accessibility.Flags; import com.android.settings.R; 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 @@ -41,7 +40,6 @@ public class ToggleAutoclickPreferenceFragment 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"; /** @@ -100,10 +98,7 @@ public class ToggleAutoclickPreferenceFragment 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 { + if (!Flags.enableAutoclickIndicator()) { getPreferenceScreen().removePreference(mShortcutPreference); } return view;