Loading res/layout/preference_master_switch.xml +2 −2 Original line number Diff line number Diff line Loading @@ -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"> Loading Loading @@ -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> res/layout/preference_widget_master_switch.xml +2 −1 Original line number Diff line number Diff line Loading @@ -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> src/com/android/settings/widget/MasterSwitchPreference.java +14 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java +23 −12 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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)); Loading Loading
res/layout/preference_master_switch.xml +2 −2 Original line number Diff line number Diff line Loading @@ -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"> Loading Loading @@ -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>
res/layout/preference_widget_master_switch.xml +2 −1 Original line number Diff line number Diff line Loading @@ -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>
src/com/android/settings/widget/MasterSwitchPreference.java +14 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java +23 −12 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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)); Loading