[Wi-Fi] Hide the Advanced Option after expanding the advanced option fields.

To align with other advanced option behaviors in other Settings items, hide the Advanced Option button after the hidden advanced options are show, which also solve the a11y issue.

Bug: 146908469
Test: Add test case getVisibility_whenAdvancedOptionClicked_shouldBeGone
to verify View is Gone.
Change-Id: I11b2f9b250a7d50d32b8c05207498f4cf14feb41
This commit is contained in:
govenliu
2019-12-30 12:30:23 +08:00
parent 2951e4eddf
commit 91d6dfc455
4 changed files with 39 additions and 42 deletions

View File

@@ -1956,8 +1956,6 @@
<string name="wifi_show_advanced">Advanced options</string>
<!-- Message for talkback to say when focus on Advanced Options[CHAR LIMIT=NONE] -->
<string name="wifi_advanced_toggle_description">Drop down list Advanced Options</string>
<!-- Extended message for talkback to say when Advanced Options is expanded. (e.g., Double-tap to collapse) [CHAR LIMIT=NONE] -->
<string name="wifi_advanced_toggle_description_expanded">collapse</string>
<!-- Extended message for talkback to say when Advanced Options is collapsed. (e.g., Double-tap to expand) [CHAR LIMIT=NONE] -->
<string name="wifi_advanced_toggle_description_collapsed">expand</string>
<!-- Label for the SSID of the network -->

View File

@@ -347,9 +347,13 @@ public class WifiConfigController implements TextWatcher,
showProxyFields();
final CheckBox advancedTogglebox =
(CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox);
if (!showAdvancedFields) {
// Need to show Advanced Option button.
mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE);
advancedTogglebox.setOnCheckedChangeListener(this);
advancedTogglebox.setChecked(showAdvancedFields);
setAdvancedOptionAccessibilityString(showAdvancedFields);
setAdvancedOptionAccessibilityString();
}
mView.findViewById(R.id.wifi_advanced_fields)
.setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE);
}
@@ -1553,17 +1557,10 @@ public class WifiConfigController implements TextWatcher,
((EditText) mPasswordView).setSelection(pos);
}
} else if (view.getId() == R.id.wifi_advanced_togglebox) {
final int toggleVisibility;
final int stringID;
if (isChecked) {
toggleVisibility = View.VISIBLE;
// Hide the SoftKeyboard temporary to let user can see most of the expanded items.
hideSoftKeyboard(mView.getWindowToken());
} else {
toggleVisibility = View.GONE;
}
mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility);
setAdvancedOptionAccessibilityString(isChecked);
view.setVisibility(View.GONE);
mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE);
}
}
@@ -1673,7 +1670,7 @@ public class WifiConfigController implements TextWatcher,
((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox))
.setOnCheckedChangeListener(this);
// Set correct accessibility strings.
setAdvancedOptionAccessibilityString(false /* showAdvancedFields */);
setAdvancedOptionAccessibilityString();
}
/**
@@ -1765,7 +1762,7 @@ public class WifiConfigController implements TextWatcher,
inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */);
}
private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) {
private void setAdvancedOptionAccessibilityString() {
final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox);
advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() {
@Override
@@ -1776,12 +1773,10 @@ public class WifiConfigController implements TextWatcher,
info.setCheckable(false /* checkable */);
// To let TalkBack don't pronounce CheckBox.
info.setClassName(null /* className */);
final CharSequence accessibilityDoubleTapExtend = mContext.getString(
showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded
: R.string.wifi_advanced_toggle_description_collapsed);
// Customize TalkBack's pronunciation which been appended to "Double-tap to".
final AccessibilityAction customClick = new AccessibilityAction(
AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend);
AccessibilityNodeInfo.ACTION_CLICK,
mContext.getString(R.string.wifi_advanced_toggle_description_collapsed));
info.addAction(customClick);
}
});

View File

@@ -348,9 +348,13 @@ public class WifiConfigController2 implements TextWatcher,
showProxyFields();
final CheckBox advancedTogglebox =
(CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox);
if (!showAdvancedFields) {
// Need to show Advanced Option button.
mView.findViewById(R.id.wifi_advanced_toggle).setVisibility(View.VISIBLE);
advancedTogglebox.setOnCheckedChangeListener(this);
advancedTogglebox.setChecked(showAdvancedFields);
setAdvancedOptionAccessibilityString(showAdvancedFields);
setAdvancedOptionAccessibilityString();
}
mView.findViewById(R.id.wifi_advanced_fields)
.setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE);
}
@@ -1554,17 +1558,10 @@ public class WifiConfigController2 implements TextWatcher,
((EditText) mPasswordView).setSelection(pos);
}
} else if (view.getId() == R.id.wifi_advanced_togglebox) {
final int toggleVisibility;
final int stringID;
if (isChecked) {
toggleVisibility = View.VISIBLE;
// Hide the SoftKeyboard temporary to let user can see most of the expanded items.
hideSoftKeyboard(mView.getWindowToken());
} else {
toggleVisibility = View.GONE;
}
mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility);
setAdvancedOptionAccessibilityString(isChecked);
view.setVisibility(View.GONE);
mView.findViewById(R.id.wifi_advanced_fields).setVisibility(View.VISIBLE);
}
}
@@ -1674,7 +1671,7 @@ public class WifiConfigController2 implements TextWatcher,
((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox))
.setOnCheckedChangeListener(this);
// Set correct accessibility strings.
setAdvancedOptionAccessibilityString(false /* showAdvancedFields */);
setAdvancedOptionAccessibilityString();
}
/**
@@ -1766,7 +1763,7 @@ public class WifiConfigController2 implements TextWatcher,
inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */);
}
private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) {
private void setAdvancedOptionAccessibilityString() {
final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox);
advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() {
@Override
@@ -1777,12 +1774,10 @@ public class WifiConfigController2 implements TextWatcher,
info.setCheckable(false /* checkable */);
// To let TalkBack don't pronounce CheckBox.
info.setClassName(null /* className */);
final CharSequence accessibilityDoubleTapExtend = mContext.getString(
showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded
: R.string.wifi_advanced_toggle_description_collapsed);
// Customize TalkBack's pronunciation which been appended to "Double-tap to".
final AccessibilityAction customClick = new AccessibilityAction(
AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend);
AccessibilityNodeInfo.ACTION_CLICK,
mContext.getString(R.string.wifi_advanced_toggle_description_collapsed));
info.addAction(customClick);
}
});

View File

@@ -549,4 +549,13 @@ public class WifiConfigControllerTest {
assertThat(advButton.getContentDescription()).isEqualTo(
mContext.getString(R.string.wifi_advanced_toggle_description));
}
@Test
public void getVisibility_whenAdvancedOptionClicked_shouldBeGone() {
final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox);
advButton.performClick();
assertThat(advButton.getVisibility()).isEqualTo(View.GONE);
}
}