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

Commit bb5509f8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Extends the touch area for the switch in Master Switch preference."

parents 14ed46c5 6467d202
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:gravity="center_vertical"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:background="@android:color/transparent"
    android:clipToPadding="false">

@@ -85,6 +84,7 @@
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="end|center_vertical"
        android:orientation="vertical"/>
        android:orientation="vertical"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"/>

</LinearLayout>
+2 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
    <Switch android:id="@+id/switchWidget"
      android:layout_width="wrap_content"
      android:layout_height="match_parent"
      android:gravity="center_vertical" />
      android:gravity="center_vertical"
      android:clickable="false"/>

</LinearLayout>
+14 −10
Original line number Diff line number Diff line
@@ -20,7 +20,8 @@ import android.content.Context;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.widget.CompoundButton;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Switch;
import android.widget.TextView;

@@ -61,21 +62,24 @@ public class MasterSwitchPreference extends Preference {
    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        mSwitch = (Switch) holder.itemView.findViewById(R.id.switchWidget);
        if (mSwitch != null) {
            mSwitch.setChecked(mChecked);
            mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        final View widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
        if (widgetView != null) {
            widgetView.setOnClickListener(new OnClickListener() {
                @Override
                public void onCheckedChanged(CompoundButton button, boolean isChecked) {
                    if (!callChangeListener(isChecked)) {
                        button.setChecked(!isChecked);
                public void onClick(View v) {
                    setChecked(!mChecked);
                    if (!callChangeListener(mChecked)) {
                        setChecked(!mChecked);
                    } else {
                        persistBoolean(isChecked);
                        mChecked = isChecked;
                        persistBoolean(mChecked);
                    }
                }
            });
        }
        mSwitch = (Switch) holder.itemView.findViewById(R.id.switchWidget);
        if (mSwitch != null) {
            mSwitch.setChecked(mChecked);
        }
        if (mMultiLine) {
            TextView textView = (TextView)holder.findViewById(android.R.id.title);
            if (textView != null) {
+23 −12
Original line number Diff line number Diff line
@@ -21,7 +21,10 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.Switch;

import com.android.settings.R;
@@ -92,31 +95,39 @@ public class MasterSwitchPreferenceTest {
    }

    @Test
    public void toggleButtonOn_shouldNotifyChecked() {
    public void clickWidgetView_shouldToggleButton() {
        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
        final LayoutInflater inflater = LayoutInflater.from(mContext);
        final PreferenceViewHolder holder = new PreferenceViewHolder(
            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
            inflater.inflate(R.layout.preference_master_switch, null));
        final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
        inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true);
        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
        preference.setOnPreferenceChangeListener(listener);
        preference.onBindViewHolder(holder);

        toggle.setChecked(true);
        verify(listener).onPreferenceChange(preference, true);
        widgetView.performClick();
        assertThat(toggle.isChecked()).isTrue();

        widgetView.performClick();
        assertThat(toggle.isChecked()).isFalse();
    }

    @Test
    public void toggleButtonOff_shouldNotifyUnchecked() {
    public void clickWidgetView_shouldNotifyPreferenceChanged() {
        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
        final PreferenceViewHolder holder = new PreferenceViewHolder(
            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
        final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
            LayoutInflater.from(mContext).inflate(R.layout.preference_master_switch, null));
        final View widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
        preference.setChecked(true);
        preference.setOnPreferenceChangeListener(listener);
        preference.onBindViewHolder(holder);

        toggle.setChecked(false);
        preference.setChecked(false);
        widgetView.performClick();
        verify(listener).onPreferenceChange(preference, true);

        preference.setChecked(true);
        widgetView.performClick();
        verify(listener).onPreferenceChange(preference, false);
    }

@@ -134,7 +145,7 @@ public class MasterSwitchPreferenceTest {
    }

    @Test
    public void setDisabledByAdmin_noEnforcedAdmin_shouldEnaableButton() {
    public void setDisabledByAdmin_noEnforcedAdmin_shouldEnableButton() {
        final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
        final PreferenceViewHolder holder = new PreferenceViewHolder(
            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));