Show more graceful screens for "add network" flow
- use TableLayout instead of RelativeLayout for wifi configuration to align each columns appropriately. - split @id/type field into two fields in SetupWizard Bug: 3403168 Change-Id: I37f2c60ce1b0473af7d20dee1775e9893d2abade
This commit is contained in:
@@ -315,6 +315,7 @@
|
|||||||
<activity android:name="DateTimeSettingsSetupWizard"
|
<activity android:name="DateTimeSettingsSetupWizard"
|
||||||
android:label="@string/date_and_time"
|
android:label="@string/date_and_time"
|
||||||
android:theme="@android:style/Theme.Holo.NoActionBar"
|
android:theme="@android:style/Theme.Holo.NoActionBar"
|
||||||
|
android:windowBackground="@drawable/setups_bg_default"
|
||||||
android:screenOrientation="behind">
|
android:screenOrientation="behind">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
@@ -52,12 +52,13 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
<TextView
|
<TextView android:layout_width="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:minWidth="128dip"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/wifi_wps_pin"
|
android:text="@string/wifi_wps_pin"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp"
|
||||||
|
android:gravity="bottom" />
|
||||||
|
|
||||||
<EditText android:id="@+id/wps_pin"
|
<EditText android:id="@+id/wps_pin"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -67,103 +68,93 @@
|
|||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<RelativeLayout android:id="@+id/security_fields"
|
<TableLayout android:layout_width="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_marginBottom="16dip">
|
||||||
android:orientation="vertical"
|
<TableRow android:id="@+id/security_fields"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
<TextView android:id="@+id/password_text"
|
<TextView android:id="@+id/password_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:minWidth="80dip"
|
android:minWidth="128dip"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="48dip"
|
android:minHeight="48dip"
|
||||||
android:layout_marginRight="8dip"
|
android:text="@string/wifi_password"
|
||||||
android:layout_alignParentLeft="true"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:text="@string/wifi_password"
|
android:textSize="20sp"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:gravity="bottom" />
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="bottom" />
|
|
||||||
|
|
||||||
<FrameLayout android:id="@+id/password_layout"
|
<FrameLayout android:id="@+id/password_layout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="48dip">
|
||||||
|
<EditText android:id="@+id/password"
|
||||||
|
android:layout_width="368dip"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:password="true"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<CheckBox android:id="@+id/show_password"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/wifi_show_password"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
</TableRow>
|
||||||
|
|
||||||
|
<!-- To accomodate @id/type into TableLayout, we splitted the layout into two:
|
||||||
|
@id/type_ssid and @id/type_security. -->
|
||||||
|
<TableRow android:id="@+id/type_ssid"
|
||||||
|
android:visibility="gone">
|
||||||
|
<TextView android:id="@+id/ssid_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:minWidth="128dip"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="48dip"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:text="@string/wifi_ssid"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:textSize="20sp"
|
||||||
|
android:gravity="bottom"/>
|
||||||
|
|
||||||
|
<FrameLayout android:id="@+id/ssid_layout"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignBottom="@id/ssid_text"
|
||||||
|
android:layout_toRightOf="@id/ssid_text">
|
||||||
|
<EditText android:id="@+id/ssid"
|
||||||
|
android:layout_width="368dip"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
</TableRow>
|
||||||
|
<TableRow android:id="@+id/type_security"
|
||||||
|
android:visibility="gone">
|
||||||
|
<TextView android:id="@+id/security_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:minWidth="128dip"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="48dip"
|
||||||
|
android:text="@string/wifi_security"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:textSize="20sp"
|
||||||
|
android:gravity="bottom"/>
|
||||||
|
|
||||||
|
<Spinner android:id="@+id/security"
|
||||||
|
android:layout_width="368dip"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="48dip"
|
android:minHeight="48dip"
|
||||||
android:layout_alignParentTop="true"
|
android:paddingLeft="4dip"
|
||||||
android:layout_toRightOf="@id/password_text"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:layout_alignBottom="@id/password_text">
|
android:textSize="20sp"
|
||||||
<EditText android:id="@+id/password"
|
android:gravity="left|center_vertical"/>
|
||||||
android:layout_width="368dip"
|
</TableRow>
|
||||||
android:layout_height="wrap_content"
|
</TableLayout>
|
||||||
android:singleLine="true"
|
|
||||||
android:password="true"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<CheckBox android:id="@+id/show_password"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dip"
|
|
||||||
android:layout_below="@id/password_layout"
|
|
||||||
android:layout_alignLeft="@id/password_layout"
|
|
||||||
android:text="@string/wifi_show_password"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</RelativeLayout>
|
|
||||||
<RelativeLayout android:id="@+id/type"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView android:id="@+id/ssid_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:minWidth="128dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="48dip"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:text="@string/wifi_ssid"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="bottom"/>
|
|
||||||
|
|
||||||
<FrameLayout android:id="@+id/ssid_layout"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignBottom="@id/ssid_text"
|
|
||||||
android:layout_toRightOf="@id/ssid_text">
|
|
||||||
<EditText android:id="@+id/ssid"
|
|
||||||
android:layout_width="368dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<TextView android:id="@+id/security_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:minWidth="128dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dip"
|
|
||||||
android:minHeight="48dip"
|
|
||||||
android:layout_below="@id/ssid_text"
|
|
||||||
android:layout_alignLeft="@id/ssid_text"
|
|
||||||
android:text="@string/wifi_security"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="bottom"/>
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/security"
|
|
||||||
android:layout_width="368dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="48dip"
|
|
||||||
android:layout_alignBottom="@id/security_text"
|
|
||||||
android:layout_toRightOf="@id/security_text"
|
|
||||||
android:paddingLeft="4dip"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="left|center_vertical"/>
|
|
||||||
</RelativeLayout> <!-- android:id="@+id/type" -->
|
|
||||||
|
|
||||||
<!-- All the views below are "gone".
|
<!-- All the views below are "gone".
|
||||||
We want them as data storage, not as UI components. -->
|
We want them as data storage, not as UI components. -->
|
||||||
|
@@ -154,17 +154,21 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
|
|
||||||
if (mAccessPoint == null) { // new network
|
if (mAccessPoint == null) { // new network
|
||||||
mConfigUi.setTitle(R.string.wifi_add_network);
|
mConfigUi.setTitle(R.string.wifi_add_network);
|
||||||
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
|
|
||||||
mSsidView = (TextView) mView.findViewById(R.id.ssid);
|
mSsidView = (TextView) mView.findViewById(R.id.ssid);
|
||||||
mSsidView.addTextChangedListener(this);
|
mSsidView.addTextChangedListener(this);
|
||||||
mSecuritySpinner = ((Spinner) mView.findViewById(R.id.security));
|
mSecuritySpinner = ((Spinner) mView.findViewById(R.id.security));
|
||||||
mSecuritySpinner.setOnItemSelectedListener(this);
|
mSecuritySpinner.setOnItemSelectedListener(this);
|
||||||
if (mInXlSetupWizard) {
|
if (mInXlSetupWizard) {
|
||||||
|
mView.findViewById(R.id.type_ssid).setVisibility(View.VISIBLE);
|
||||||
|
mView.findViewById(R.id.type_security).setVisibility(View.VISIBLE);
|
||||||
// We want custom layout. The content must be same as the other cases.
|
// We want custom layout. The content must be same as the other cases.
|
||||||
mSecuritySpinner.setAdapter(
|
mSecuritySpinner.setAdapter(
|
||||||
new ArrayAdapter<String>(context, R.layout.wifi_setup_custom_list_item_1,
|
new ArrayAdapter<String>(context, R.layout.wifi_setup_custom_list_item_1,
|
||||||
android.R.id.text1,
|
android.R.id.text1,
|
||||||
context.getResources().getStringArray(R.array.wifi_security)));
|
context.getResources().getStringArray(R.array.wifi_security)));
|
||||||
|
} else {
|
||||||
|
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
|
mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
|
||||||
} else {
|
} else {
|
||||||
@@ -512,7 +516,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mView.findViewById(R.id.eap).setVisibility(View.VISIBLE);
|
mView.findViewById(R.id.eap).setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (mEapMethodSpinner == null) {
|
if (mEapMethodSpinner == null) {
|
||||||
mEapMethodSpinner = (Spinner) mView.findViewById(R.id.method);
|
mEapMethodSpinner = (Spinner) mView.findViewById(R.id.method);
|
||||||
mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2);
|
mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2);
|
||||||
@@ -537,7 +541,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showNetworkSetupFields() {
|
private void showNetworkSetupFields() {
|
||||||
mView.findViewById(R.id.setup_fields).setVisibility(View.VISIBLE);
|
mView.findViewById(R.id.setup_fields).setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
@@ -75,7 +75,7 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusCh
|
|||||||
|
|
||||||
if (mView.findViewById(R.id.security_fields).getVisibility() == View.VISIBLE) {
|
if (mView.findViewById(R.id.security_fields).getVisibility() == View.VISIBLE) {
|
||||||
requestFocusAndShowKeyboard(R.id.password);
|
requestFocusAndShowKeyboard(R.id.password);
|
||||||
} else if (mView.findViewById(R.id.type).getVisibility() == View.VISIBLE) {
|
} else if (mView.findViewById(R.id.type_ssid).getVisibility() == View.VISIBLE) {
|
||||||
// Add Network flow.
|
// Add Network flow.
|
||||||
requestFocusAndShowKeyboard(R.id.ssid);
|
requestFocusAndShowKeyboard(R.id.ssid);
|
||||||
}
|
}
|
||||||
@@ -93,12 +93,15 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusCh
|
|||||||
Log.w(TAG, "password field is not EditText");
|
Log.w(TAG, "password field is not EditText");
|
||||||
} else {
|
} else {
|
||||||
if (viewToBeFocused.isFocused()) {
|
if (viewToBeFocused.isFocused()) {
|
||||||
mInputMethodManager.showSoftInput(viewToBeFocused, 0);
|
Log.i(TAG, "Already focused");
|
||||||
|
if (!mInputMethodManager.showSoftInput(viewToBeFocused, 0)) {
|
||||||
|
Log.w(TAG, "Failed to show SoftInput");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// After acquiring the focus, we show software keyboard.
|
// After acquiring the focus, we show software keyboard.
|
||||||
viewToBeFocused.setOnFocusChangeListener(this);
|
viewToBeFocused.setOnFocusChangeListener(this);
|
||||||
final boolean requestFocusResult = viewToBeFocused.requestFocus();
|
final boolean requestFocusResult = viewToBeFocused.requestFocus();
|
||||||
Log.i(TAG, String.format("Focus request %s.",
|
Log.i(TAG, String.format("Focus request: %s",
|
||||||
(requestFocusResult ? "successful" : "failed")));
|
(requestFocusResult ? "successful" : "failed")));
|
||||||
if (!requestFocusResult) {
|
if (!requestFocusResult) {
|
||||||
viewToBeFocused.setOnFocusChangeListener(null);
|
viewToBeFocused.setOnFocusChangeListener(null);
|
||||||
|
@@ -505,12 +505,13 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
|
|||||||
view.findViewById(R.id.ssid_layout).setVisibility(View.VISIBLE);
|
view.findViewById(R.id.ssid_layout).setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (accessPointSecurity == AccessPoint.SECURITY_EAP) {
|
if (accessPointSecurity == AccessPoint.SECURITY_EAP) {
|
||||||
|
setPaddingVisibility(View.VISIBLE);
|
||||||
hideSoftwareKeyboard();
|
hideSoftwareKeyboard();
|
||||||
|
|
||||||
// In SetupWizard for XLarge screen, we don't have enough space for showing
|
// In SetupWizard for XLarge screen, we don't have enough space for showing
|
||||||
// configurations needed for EAP. We instead disable the whole feature there and let
|
// configurations needed for EAP. We instead disable the whole feature there and let
|
||||||
// users configure those networks after the setup.
|
// users configure those networks after the setup.
|
||||||
if (view.findViewById(R.id.type).getVisibility() == View.VISIBLE) {
|
if (view.findViewById(R.id.type_ssid).getVisibility() == View.VISIBLE) {
|
||||||
view.findViewById(R.id.eap_not_supported_for_add_network)
|
view.findViewById(R.id.eap_not_supported_for_add_network)
|
||||||
.setVisibility(View.VISIBLE);
|
.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
@@ -525,11 +526,26 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mConnectButton.setVisibility(View.VISIBLE);
|
||||||
|
setPaddingVisibility(View.GONE);
|
||||||
|
|
||||||
|
// In "add network" flow, we'll see multiple initSecurityFields() calls with different
|
||||||
|
// accessPointSecurity variable. We want to show software keyboard conditionally everytime
|
||||||
|
// when this method is called.
|
||||||
|
if (mWifiConfig != null) {
|
||||||
|
if (accessPointSecurity == AccessPoint.SECURITY_PSK ||
|
||||||
|
accessPointSecurity == AccessPoint.SECURITY_WEP) {
|
||||||
|
mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
|
||||||
|
} else {
|
||||||
|
mWifiConfig.requestFocusAndShowKeyboard(R.id.ssid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Let the caller init security fields.
|
// Let the caller init security fields.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package */ void onEapNetworkSelected() {
|
private void onEapNetworkSelected() {
|
||||||
mConnectButton.setVisibility(View.GONE);
|
mConnectButton.setVisibility(View.GONE);
|
||||||
mBackButton.setText(R.string.wifi_setup_back);
|
mBackButton.setText(R.string.wifi_setup_back);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user