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

Commit 4d52d723 authored by Yuhan Yang's avatar Yuhan Yang
Browse files

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
parent 29b96651
Loading
Loading
Loading
Loading
+17 −22
Original line number Diff line number Diff line
@@ -22,23 +22,26 @@
    <com.android.settingslib.widget.TopIntroPreference
        android:key="accessibility_autoclick_intro"
        android:title="@string/accessibility_autoclick_intro_text"
        settings:searchable="false"
        android:order="10"/>
        settings:searchable="false"/>

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

    <com.android.settings.accessibility.ShortcutPreference
        android:key="autoclick_shortcut_preference"
        android:title="@string/accessibility_autoclick_shortcut_title"
        android:persistent="false"
        settings:searchable="false"/>

    <!-- 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"
        android:order="30"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>

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

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

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

    <!-- 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"
        android:order="34"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>

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

    <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"
        android:order="50"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickCursorAreaSizeController"/>

    <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"
        android:order="60"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/>

    <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"
        android:order="70"/>
        settings:controller="com.android.settings.accessibility.ToggleAutoclickFooterPreferenceController"/>
</PreferenceScreen>
+9 −6
Original line number Diff line number Diff line
@@ -104,14 +104,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends Restricted
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        mShortcutPreference =
                getPreferenceScreen().findPreference(getShortcutPreferenceKey());
        if (mShortcutPreference == null) {
            mShortcutPreference = new ShortcutPreference(getPrefContext(), /* attrs= */ null);
            mShortcutPreference.setPersistent(false);
            mShortcutPreference.setKey(getShortcutPreferenceKey());
        mShortcutPreference.setOnClickCallback(this);
        mShortcutPreference.setTitle(getShortcutTitle());

            getPreferenceScreen().addPreference(mShortcutPreference);
        }

        mShortcutPreference.setOnClickCallback(this);
        mShortcutPreference.setTitle(getShortcutTitle());
        mTouchExplorationStateChangeListener = isTouchExplorationEnabled -> {
            mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
        };
+3 −1
Original line number Diff line number Diff line
@@ -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.
+1 −6
Original line number Diff line number Diff line
@@ -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;