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

Commit c3f467dd authored by Yuhan Yang's avatar Yuhan Yang
Browse files

Add summary for autoclick cursor size row

Screencast: go/screencast-njm3ndi4njm4ntixnzuznnw3nmy5m2fkms00ng

Bug: 390460480
Test: ToggleAutoclickCustomSeekbarControllerTest
Flag: com.android.server.accessibility.enable_autoclick_indicator
Change-Id: I951be8da3e10f2a3ba0c6ff6e88a8a059db0f1ed
parent 7630d396
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.server.accessibility.Flags;
import com.android.settings.R;
@@ -59,6 +60,7 @@ public class ToggleAutoclickCursorAreaSizeController extends BasePreferenceContr

    private final ContentResolver mContentResolver;
    private final SharedPreferences mSharedPreferences;
    private Preference mPreference;
    protected AlertDialog mAlertDialog;

    public ToggleAutoclickCursorAreaSizeController(@NonNull Context context,
@@ -83,6 +85,13 @@ public class ToggleAutoclickCursorAreaSizeController extends BasePreferenceContr
        }
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);

        mPreference = screen.findPreference(getPreferenceKey());
    }

    protected void constructDialog(Context context) {
        mAlertDialog = new AlertDialog.Builder(context)
                .setView(R.layout.dialog_autoclick_cursor_area_size)
@@ -139,12 +148,32 @@ public class ToggleAutoclickCursorAreaSizeController extends BasePreferenceContr
        // TODO(b/383901288): Update slider if interested preference has changed.
    }

    @Override
    public CharSequence getSummary() {
        int autoclickCursorSize = validateSize(Settings.Secure.getInt(mContentResolver,
                Settings.Secure.ACCESSIBILITY_AUTOCLICK_CURSOR_AREA_SIZE,
                AccessibilityManager.AUTOCLICK_CURSOR_AREA_SIZE_DEFAULT));
        int summaryStringId;
        switch (autoclickCursorSize) {
            case 100 -> summaryStringId =
                    R.string.autoclick_cursor_area_size_dialog_option_extra_large;
            case 80 -> summaryStringId = R.string.autoclick_cursor_area_size_dialog_option_large;
            case 40 -> summaryStringId = R.string.autoclick_cursor_area_size_dialog_option_small;
            case 20 -> summaryStringId =
                    R.string.autoclick_cursor_area_size_dialog_option_extra_small;
            default -> summaryStringId = R.string.autoclick_cursor_area_size_dialog_option_default;
        }

        return mContext.getString(summaryStringId);
    }

    /** Updates autoclick cursor area size. */
    public void updateAutoclickCursorAreaSize(int size) {
        Settings.Secure.putInt(
                mContentResolver,
                Settings.Secure.ACCESSIBILITY_AUTOCLICK_CURSOR_AREA_SIZE,
                validateSize(size));
        refreshSummary(mPreference);
    }

    private int validateSize(int size) {
+9 −0
Original line number Diff line number Diff line
@@ -80,6 +80,15 @@ public class ToggleAutoclickCursorAreaSizeControllerTest {
                .isEqualTo(BasePreferenceController.AVAILABLE);
    }

    @Test
    public void getSummary() {
        mController.updateAutoclickCursorAreaSize(
                mController.RADIO_BUTTON_ID_TO_CURSOR_SIZE.get(
                        R.id.autoclick_cursor_area_size_value_large));
        assertThat(mController.getSummary()).isEqualTo(
                mContext.getString(R.string.autoclick_cursor_area_size_dialog_option_large));
    }

    @Test
    @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
    public void getAvailabilityStatus_conditionallyUnavailableWhenFlagOn() {