Expand more buttons for ActionButtonPreference
Old design, we only need two action buttons in Settings app. In the future, we need four buttons for some use cases. Test: visual, robotest Bug: 120005054 Change-Id: I859fee8d7167ce59222059cc441e4a3c167c7b34
This commit is contained in:
@@ -20,7 +20,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
@@ -28,19 +27,26 @@
|
|||||||
style="@style/SettingsActionButton"
|
style="@style/SettingsActionButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"/>
|
||||||
android:paddingTop="20dp"
|
|
||||||
android:paddingBottom="20dp"/>
|
|
||||||
<Space
|
|
||||||
android:layout_width="8dp"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/button2"
|
android:id="@+id/button2"
|
||||||
style="@style/SettingsActionButton"
|
style="@style/SettingsActionButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"/>
|
||||||
android:paddingTop="20dp"
|
|
||||||
android:paddingBottom="20dp"/>
|
<Button
|
||||||
|
android:id="@+id/button3"
|
||||||
|
style="@style/SettingsActionButton"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/button4"
|
||||||
|
style="@style/SettingsActionButton"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@@ -408,6 +408,9 @@
|
|||||||
<style name="SettingsActionButton" parent="android:Widget.DeviceDefault.Button.Borderless.Colored">
|
<style name="SettingsActionButton" parent="android:Widget.DeviceDefault.Button.Borderless.Colored">
|
||||||
<item name="android:drawablePadding">4dp</item>
|
<item name="android:drawablePadding">4dp</item>
|
||||||
<item name="android:drawableTint">@*android:color/btn_colored_borderless_text_material</item>
|
<item name="android:drawableTint">@*android:color/btn_colored_borderless_text_material</item>
|
||||||
|
<item name="android:layout_marginEnd">8dp</item>
|
||||||
|
<item name="android:paddingTop">20dp</item>
|
||||||
|
<item name="android:paddingBottom">20dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="LockPatternContainerStyle">
|
<style name="LockPatternContainerStyle">
|
||||||
|
@@ -32,11 +32,30 @@ import androidx.preference.PreferenceViewHolder;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This preference provides a four buttons layout with Settings style.
|
||||||
|
* It looks like below
|
||||||
|
*
|
||||||
|
* --------------------------------------------------
|
||||||
|
* button1 | button2 | button3 | button4 |
|
||||||
|
* --------------------------------------------------
|
||||||
|
*
|
||||||
|
* User can set title / icon / click listener for each button.
|
||||||
|
*
|
||||||
|
* By default, four buttons are visible.
|
||||||
|
* However, there are two cases which button should be invisible(View.GONE).
|
||||||
|
*
|
||||||
|
* 1. User sets invisible for button. ex: ActionButtonPreference.setButton1Visible(false)
|
||||||
|
* 2. User doesn't set any title or icon for button.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class ActionButtonPreference extends Preference {
|
public class ActionButtonPreference extends Preference {
|
||||||
|
|
||||||
private final String TAG = "ActionButtonPreference";
|
private final String TAG = "ActionButtonPreference";
|
||||||
private final ButtonInfo mButton1Info = new ButtonInfo();
|
private final ButtonInfo mButton1Info = new ButtonInfo();
|
||||||
private final ButtonInfo mButton2Info = new ButtonInfo();
|
private final ButtonInfo mButton2Info = new ButtonInfo();
|
||||||
|
private final ButtonInfo mButton3Info = new ButtonInfo();
|
||||||
|
private final ButtonInfo mButton4Info = new ButtonInfo();
|
||||||
|
|
||||||
public ActionButtonPreference(Context context, AttributeSet attrs,
|
public ActionButtonPreference(Context context, AttributeSet attrs,
|
||||||
int defStyleAttr, int defStyleRes) {
|
int defStyleAttr, int defStyleRes) {
|
||||||
@@ -60,7 +79,7 @@ public class ActionButtonPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
setLayoutResource(R.layout.two_action_buttons);
|
setLayoutResource(R.layout.settings_action_buttons);
|
||||||
setSelectable(false);
|
setSelectable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,9 +91,21 @@ public class ActionButtonPreference extends Preference {
|
|||||||
|
|
||||||
mButton1Info.mButton = (Button) holder.findViewById(R.id.button1);
|
mButton1Info.mButton = (Button) holder.findViewById(R.id.button1);
|
||||||
mButton2Info.mButton = (Button) holder.findViewById(R.id.button2);
|
mButton2Info.mButton = (Button) holder.findViewById(R.id.button2);
|
||||||
|
mButton3Info.mButton = (Button) holder.findViewById(R.id.button3);
|
||||||
|
mButton4Info.mButton = (Button) holder.findViewById(R.id.button4);
|
||||||
|
|
||||||
mButton1Info.setUpButton();
|
mButton1Info.setUpButton();
|
||||||
mButton2Info.setUpButton();
|
mButton2Info.setUpButton();
|
||||||
|
mButton3Info.setUpButton();
|
||||||
|
mButton4Info.setUpButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton1Visible(boolean isVisible) {
|
||||||
|
if (isVisible != mButton1Info.mIsVisible) {
|
||||||
|
mButton1Info.mIsVisible = isVisible;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionButtonPreference setButton1Text(@StringRes int textResId) {
|
public ActionButtonPreference setButton1Text(@StringRes int textResId) {
|
||||||
@@ -110,6 +141,22 @@ public class ActionButtonPreference extends Preference {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton1OnClickListener(View.OnClickListener listener) {
|
||||||
|
if (listener != mButton1Info.mListener) {
|
||||||
|
mButton1Info.mListener = listener;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton2Visible(boolean isVisible) {
|
||||||
|
if (isVisible != mButton2Info.mIsVisible) {
|
||||||
|
mButton2Info.mIsVisible = isVisible;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ActionButtonPreference setButton2Text(@StringRes int textResId) {
|
public ActionButtonPreference setButton2Text(@StringRes int textResId) {
|
||||||
final String newText = getContext().getString(textResId);
|
final String newText = getContext().getString(textResId);
|
||||||
if (!TextUtils.equals(newText, mButton2Info.mText)) {
|
if (!TextUtils.equals(newText, mButton2Info.mText)) {
|
||||||
@@ -143,14 +190,6 @@ public class ActionButtonPreference extends Preference {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionButtonPreference setButton1OnClickListener(View.OnClickListener listener) {
|
|
||||||
if (listener != mButton1Info.mListener) {
|
|
||||||
mButton1Info.mListener = listener;
|
|
||||||
notifyChanged();
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActionButtonPreference setButton2OnClickListener(View.OnClickListener listener) {
|
public ActionButtonPreference setButton2OnClickListener(View.OnClickListener listener) {
|
||||||
if (listener != mButton2Info.mListener) {
|
if (listener != mButton2Info.mListener) {
|
||||||
mButton2Info.mListener = listener;
|
mButton2Info.mListener = listener;
|
||||||
@@ -159,17 +198,99 @@ public class ActionButtonPreference extends Preference {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionButtonPreference setButton1Visible(boolean isVisible) {
|
public ActionButtonPreference setButton3Visible(boolean isVisible) {
|
||||||
if (isVisible != mButton1Info.mIsVisible) {
|
if (isVisible != mButton3Info.mIsVisible) {
|
||||||
mButton1Info.mIsVisible = isVisible;
|
mButton3Info.mIsVisible = isVisible;
|
||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionButtonPreference setButton2Visible(boolean isVisible) {
|
public ActionButtonPreference setButton3Text(@StringRes int textResId) {
|
||||||
if (isVisible != mButton2Info.mIsVisible) {
|
final String newText = getContext().getString(textResId);
|
||||||
mButton2Info.mIsVisible = isVisible;
|
if (!TextUtils.equals(newText, mButton3Info.mText)) {
|
||||||
|
mButton3Info.mText = newText;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton3Icon(@DrawableRes int iconResId) {
|
||||||
|
if (iconResId == 0) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Drawable icon;
|
||||||
|
try {
|
||||||
|
icon = getContext().getDrawable(iconResId);
|
||||||
|
mButton3Info.mIcon = icon;
|
||||||
|
notifyChanged();
|
||||||
|
} catch (Resources.NotFoundException exception) {
|
||||||
|
Log.e(TAG, "Resource does not exist: " + iconResId);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton3Enabled(boolean isEnabled) {
|
||||||
|
if (isEnabled != mButton3Info.mIsEnabled) {
|
||||||
|
mButton3Info.mIsEnabled = isEnabled;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton3OnClickListener(View.OnClickListener listener) {
|
||||||
|
if (listener != mButton3Info.mListener) {
|
||||||
|
mButton3Info.mListener = listener;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton4Visible(boolean isVisible) {
|
||||||
|
if (isVisible != mButton4Info.mIsVisible) {
|
||||||
|
mButton4Info.mIsVisible = isVisible;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton4Text(@StringRes int textResId) {
|
||||||
|
final String newText = getContext().getString(textResId);
|
||||||
|
if (!TextUtils.equals(newText, mButton4Info.mText)) {
|
||||||
|
mButton4Info.mText = newText;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton4Icon(@DrawableRes int iconResId) {
|
||||||
|
if (iconResId == 0) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Drawable icon;
|
||||||
|
try {
|
||||||
|
icon = getContext().getDrawable(iconResId);
|
||||||
|
mButton4Info.mIcon = icon;
|
||||||
|
notifyChanged();
|
||||||
|
} catch (Resources.NotFoundException exception) {
|
||||||
|
Log.e(TAG, "Resource does not exist: " + iconResId);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton4Enabled(boolean isEnabled) {
|
||||||
|
if (isEnabled != mButton4Info.mIsEnabled) {
|
||||||
|
mButton4Info.mIsEnabled = isEnabled;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionButtonPreference setButton4OnClickListener(View.OnClickListener listener) {
|
||||||
|
if (listener != mButton4Info.mListener) {
|
||||||
|
mButton4Info.mListener = listener;
|
||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
@@ -189,11 +310,24 @@ public class ActionButtonPreference extends Preference {
|
|||||||
mButton.setEnabled(mIsEnabled);
|
mButton.setEnabled(mIsEnabled);
|
||||||
mButton.setCompoundDrawablesWithIntrinsicBounds(
|
mButton.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
null /* left */, mIcon /* top */, null /* right */, null /* bottom */);
|
null /* left */, mIcon /* top */, null /* right */, null /* bottom */);
|
||||||
if (mIsVisible) {
|
|
||||||
|
if (shouldBeVisible()) {
|
||||||
mButton.setVisibility(View.VISIBLE);
|
mButton.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
mButton.setVisibility(View.GONE);
|
mButton.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* By default, four buttons are visible.
|
||||||
|
* However, there are two cases which button should be invisible.
|
||||||
|
*
|
||||||
|
* 1. User set invisible for this button. ex: mIsVisible = false.
|
||||||
|
* 2. User didn't set any title or icon.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private boolean shouldBeVisible() {
|
||||||
|
return mIsVisible && (!TextUtils.isEmpty(mText) || mIcon != null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -55,7 +55,8 @@ public class BluetoothDetailsButtonsControllerTest extends BluetoothDetailsContr
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
final View buttons = View.inflate(
|
final View buttons = View.inflate(
|
||||||
RuntimeEnvironment.application, R.layout.two_action_buttons, null /* parent */);
|
RuntimeEnvironment.application, R.layout.settings_action_buttons,
|
||||||
|
null /* parent */);
|
||||||
mConnectButton = buttons.findViewById(R.id.button2);
|
mConnectButton = buttons.findViewById(R.id.button2);
|
||||||
mForgetButton = buttons.findViewById(R.id.button1);
|
mForgetButton = buttons.findViewById(R.id.button1);
|
||||||
mController =
|
mController =
|
||||||
|
@@ -50,52 +50,175 @@ public class ActionButtonPreferenceTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mRootView = View.inflate(mContext, R.layout.two_action_buttons, null /* parent */);
|
mRootView = View.inflate(mContext, R.layout.settings_action_buttons, null /* parent */);
|
||||||
mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
|
mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
|
||||||
mPref = new ActionButtonPreference(mContext);
|
mPref = new ActionButtonPreference(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setVisibility_shouldUpdateButtonVisibility() {
|
public void onBindViewHolder_setTitle_shouldShowButtonByDefault() {
|
||||||
mPref.setButton1Visible(false).setButton2Visible(false);
|
mPref.setButton1Text(R.string.settings_label);
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.setButton2Text(R.string.settings_label);
|
||||||
|
mPref.setButton3Text(R.string.settings_label);
|
||||||
|
mPref.setButton4Text(R.string.settings_label);
|
||||||
|
|
||||||
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
|
||||||
.isEqualTo(View.GONE);
|
|
||||||
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
|
||||||
.isEqualTo(View.GONE);
|
|
||||||
|
|
||||||
mPref.setButton1Visible(true).setButton2Visible(true);
|
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
.isEqualTo(View.VISIBLE);
|
.isEqualTo(View.VISIBLE);
|
||||||
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
.isEqualTo(View.VISIBLE);
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setEnabled_shouldEnableButton() {
|
public void onBindViewHolder_setIcon_shouldShowButtonByDefault() {
|
||||||
mPref.setButton1Enabled(true).setButton2Enabled(false);
|
mPref.setButton1Icon(R.drawable.ic_settings);
|
||||||
|
mPref.setButton2Icon(R.drawable.ic_settings);
|
||||||
|
mPref.setButton3Icon(R.drawable.ic_settings);
|
||||||
|
mPref.setButton4Icon(R.drawable.ic_settings);
|
||||||
|
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_notSetTitleOrIcon_shouldNotShowButtonByDefault() {
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_setVisibleIsGoneAndSetTitle_shouldNotShowButton() {
|
||||||
|
mPref.setButton1Text(R.string.settings_label).setButton1Visible(false);
|
||||||
|
mPref.setButton2Text(R.string.settings_label).setButton2Visible(false);
|
||||||
|
mPref.setButton3Text(R.string.settings_label).setButton3Visible(false);
|
||||||
|
mPref.setButton4Text(R.string.settings_label).setButton4Visible(false);
|
||||||
|
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_setVisibleIsGoneAndSetIcon_shouldNotShowButton() {
|
||||||
|
mPref.setButton1Icon(R.drawable.ic_settings).setButton1Visible(false);
|
||||||
|
mPref.setButton2Icon(R.drawable.ic_settings).setButton2Visible(false);
|
||||||
|
mPref.setButton3Icon(R.drawable.ic_settings).setButton3Visible(false);
|
||||||
|
mPref.setButton4Icon(R.drawable.ic_settings).setButton4Visible(false);
|
||||||
|
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_setVisibility_shouldUpdateButtonVisibility() {
|
||||||
|
mPref.setButton1Text(R.string.settings_label).setButton1Visible(false);
|
||||||
|
mPref.setButton2Text(R.string.settings_label).setButton2Visible(false);
|
||||||
|
mPref.setButton3Text(R.string.settings_label).setButton3Visible(false);
|
||||||
|
mPref.setButton4Text(R.string.settings_label).setButton4Visible(false);
|
||||||
|
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
|
|
||||||
|
mPref.setButton1Visible(true);
|
||||||
|
mPref.setButton2Visible(true);
|
||||||
|
mPref.setButton3Visible(true);
|
||||||
|
mPref.setButton4Visible(true);
|
||||||
|
|
||||||
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
|
assertThat(mRootView.findViewById(R.id.button1).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button2).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_setEnabled_shouldEnableButton() {
|
||||||
|
mPref.setButton1Enabled(true);
|
||||||
|
mPref.setButton2Enabled(false);
|
||||||
|
mPref.setButton3Enabled(true);
|
||||||
|
mPref.setButton4Enabled(false);
|
||||||
|
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
assertThat(mRootView.findViewById(R.id.button1).isEnabled()).isTrue();
|
assertThat(mRootView.findViewById(R.id.button1).isEnabled()).isTrue();
|
||||||
assertThat(mRootView.findViewById(R.id.button2).isEnabled()).isFalse();
|
assertThat(mRootView.findViewById(R.id.button2).isEnabled()).isFalse();
|
||||||
|
assertThat(mRootView.findViewById(R.id.button3).isEnabled()).isTrue();
|
||||||
|
assertThat(mRootView.findViewById(R.id.button4).isEnabled()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setText_shouldShowSameText() {
|
public void onBindViewHolder_setText_shouldShowSameText() {
|
||||||
mPref.setButton1Text(R.string.settings_label);
|
mPref.setButton1Text(R.string.settings_label);
|
||||||
|
mPref.setButton2Text(R.string.settings_label);
|
||||||
|
mPref.setButton3Text(R.string.settings_label);
|
||||||
|
mPref.setButton4Text(R.string.settings_label);
|
||||||
|
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
assertThat(((Button) mRootView.findViewById(R.id.button1)).getText())
|
assertThat(((Button) mRootView.findViewById(R.id.button1)).getText())
|
||||||
.isEqualTo(mContext.getText(R.string.settings_label));
|
.isEqualTo(mContext.getText(R.string.settings_label));
|
||||||
|
assertThat(((Button) mRootView.findViewById(R.id.button2)).getText())
|
||||||
|
.isEqualTo(mContext.getText(R.string.settings_label));
|
||||||
|
assertThat(((Button) mRootView.findViewById(R.id.button3)).getText())
|
||||||
|
.isEqualTo(mContext.getText(R.string.settings_label));
|
||||||
|
assertThat(((Button) mRootView.findViewById(R.id.button4)).getText())
|
||||||
|
.isEqualTo(mContext.getText(R.string.settings_label));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setButtonIcon_iconMustDisplayAboveText() {
|
public void onBindViewHolder_setButtonIcon_iconMustDisplayAboveText() {
|
||||||
mPref.setButton1Text(R.string.settings_label);
|
mPref.setButton1Text(R.string.settings_label);
|
||||||
mPref.setButton1Icon(R.drawable.ic_settings);
|
mPref.setButton1Icon(R.drawable.ic_settings);
|
||||||
|
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.onBindViewHolder(mHolder);
|
||||||
final Drawable[] drawablesAroundText =
|
final Drawable[] drawablesAroundText =
|
||||||
((Button) mRootView.findViewById(R.id.button1))
|
((Button) mRootView.findViewById(R.id.button1))
|
||||||
@@ -108,6 +231,7 @@ public class ActionButtonPreferenceTest {
|
|||||||
public void setButtonIcon_iconResourceIdIsZero_shouldNotDisplayIcon() {
|
public void setButtonIcon_iconResourceIdIsZero_shouldNotDisplayIcon() {
|
||||||
mPref.setButton1Text(R.string.settings_label);
|
mPref.setButton1Text(R.string.settings_label);
|
||||||
mPref.setButton1Icon(0);
|
mPref.setButton1Icon(0);
|
||||||
|
|
||||||
mPref.onBindViewHolder(mHolder);
|
mPref.onBindViewHolder(mHolder);
|
||||||
final Drawable[] drawablesAroundText =
|
final Drawable[] drawablesAroundText =
|
||||||
((Button) mRootView.findViewById(R.id.button1))
|
((Button) mRootView.findViewById(R.id.button1))
|
||||||
@@ -142,6 +266,18 @@ public class ActionButtonPreferenceTest {
|
|||||||
when(pref.setButton2Enabled(anyBoolean())).thenReturn(pref);
|
when(pref.setButton2Enabled(anyBoolean())).thenReturn(pref);
|
||||||
when(pref.setButton2Visible(anyBoolean())).thenReturn(pref);
|
when(pref.setButton2Visible(anyBoolean())).thenReturn(pref);
|
||||||
when(pref.setButton2OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
|
when(pref.setButton2OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
|
||||||
|
|
||||||
|
when(pref.setButton3Text(anyInt())).thenReturn(pref);
|
||||||
|
when(pref.setButton3Icon(anyInt())).thenReturn(pref);
|
||||||
|
when(pref.setButton3Enabled(anyBoolean())).thenReturn(pref);
|
||||||
|
when(pref.setButton3Visible(anyBoolean())).thenReturn(pref);
|
||||||
|
when(pref.setButton3OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
|
||||||
|
|
||||||
|
when(pref.setButton4Text(anyInt())).thenReturn(pref);
|
||||||
|
when(pref.setButton4Icon(anyInt())).thenReturn(pref);
|
||||||
|
when(pref.setButton4Enabled(anyBoolean())).thenReturn(pref);
|
||||||
|
when(pref.setButton4Visible(anyBoolean())).thenReturn(pref);
|
||||||
|
when(pref.setButton4OnClickListener(any(View.OnClickListener.class))).thenReturn(pref);
|
||||||
return pref;
|
return pref;
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user