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

Commit bfb248f8 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Migrate PrimarySwitchPreference to SwitchCompat

UI keep unchanged in this cl.

Bug: 306658427
Test: manual - on Settings pages
Change-Id: I2ac0507f2c9078fd0cee00a84fbe40282194429b
parent be4ee635
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -21,12 +21,13 @@ import android.util.AttributeSet;
import android.view.View;

import androidx.preference.PreferenceViewHolder;
import androidx.preference.SwitchPreference;
import androidx.preference.SwitchPreferenceCompat;

import com.android.settingslib.widget.preference.app.R;
/**
 * The SwitchPreference for the pages need to show apps icon.
 */
public class AppSwitchPreference extends SwitchPreference {
public class AppSwitchPreference extends SwitchPreferenceCompat {

    public AppSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr,
            int defStyleRes) {
@@ -52,7 +53,7 @@ public class AppSwitchPreference extends SwitchPreference {
    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        final View switchView = holder.findViewById(android.R.id.switch_widget);
        final View switchView = holder.findViewById(androidx.preference.R.id.switchWidget);
        if (switchView != null) {
            final View rootView = switchView.getRootView();
            rootView.setFilterTouchesWhenObscured(true);
+9 −2
Original line number Diff line number Diff line
@@ -18,8 +18,11 @@ package com.android.settingslib;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.LinearLayout;

import androidx.annotation.Keep;
import androidx.annotation.Nullable;
@@ -59,13 +62,17 @@ public class PrimarySwitchPreference extends RestrictedPreference {

    @Override
    protected int getSecondTargetResId() {
        return R.layout.preference_widget_primary_switch;
        return androidx.preference.R.layout.preference_widget_switch_compat;
    }

    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        mSwitch = (CompoundButton) holder.findViewById(R.id.switchWidget);
        final View widgetFrame = holder.findViewById(android.R.id.widget_frame);
        if (widgetFrame instanceof LinearLayout linearLayout) {
            linearLayout.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
        }
        mSwitch = (CompoundButton) holder.findViewById(androidx.preference.R.id.switchWidget);
        if (mSwitch != null) {
            mSwitch.setOnClickListener(v -> {
                if (mSwitch != null && !mSwitch.isEnabled()) {
+20 −10
Original line number Diff line number Diff line
@@ -57,12 +57,14 @@ public class PrimarySwitchPreferenceTest {
                com.android.settingslib.widget.preference.twotarget.R.layout.preference_two_target,
                null));
        mWidgetView = mHolder.itemView.findViewById(android.R.id.widget_frame);
        inflater.inflate(R.layout.preference_widget_primary_switch, mWidgetView, true);
        inflater.inflate(androidx.preference.R.layout.preference_widget_switch_compat, mWidgetView,
                true);
    }

    @Test
    public void setChecked_shouldUpdateButtonCheckedState() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        mPreference.setChecked(true);
@@ -74,7 +76,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setSwitchEnabled_shouldUpdateButtonEnabledState() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        mPreference.setSwitchEnabled(true);
@@ -86,7 +89,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setSwitchEnabled_shouldUpdateButtonEnabledState_beforeViewBound() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);

        mPreference.setSwitchEnabled(false);
        mPreference.onBindViewHolder(mHolder);
@@ -97,7 +101,8 @@ public class PrimarySwitchPreferenceTest {
    public void clickWidgetView_shouldToggleButton() {
        assertThat(mWidgetView).isNotNull();

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        toggle.performClick();
@@ -111,7 +116,8 @@ public class PrimarySwitchPreferenceTest {
    public void clickWidgetView_shouldNotToggleButtonIfDisabled() {
        assertThat(mWidgetView).isNotNull();

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);
        toggle.setEnabled(false);

@@ -122,7 +128,8 @@ public class PrimarySwitchPreferenceTest {
    @Test
    public void clickWidgetView_shouldNotifyPreferenceChanged() {

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);

        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
        mPreference.setOnPreferenceChangeListener(listener);
@@ -139,7 +146,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setDisabledByAdmin_hasEnforcedAdmin_shouldDisableButton() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        toggle.setEnabled(true);
        mPreference.onBindViewHolder(mHolder);

@@ -149,7 +157,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setDisabledByAdmin_noEnforcedAdmin_shouldEnableButton() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        toggle.setEnabled(false);
        mPreference.onBindViewHolder(mHolder);

@@ -159,7 +168,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void onBindViewHolder_toggleButtonShouldHaveContentDescription() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        final String label = "TestButton";
        mPreference.setTitle(label);