Clean up for Wifi setup XL
Change-Id: I5f5c6764be244252cb91331b59d920a54cc03e86
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a8f9787..f6e063b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -139,6 +139,7 @@
android:windowBackground="@drawable/setups_bg_default"
android:clearTaskOnLaunch="true"
android:screenOrientation="sensorLandscape"
+ android:windowSoftInputMode="adjustResize"
android:exported="true" />
<activity-alias android:name=".wifi.AdvancedSettings"
diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
index 21c5d0b..f944b56 100644
--- a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
+++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
@@ -36,7 +36,6 @@
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
-import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.ProgressBar;
@@ -55,32 +54,35 @@
private static final String TAG = "SetupWizard";
private static final boolean DEBUG = true;
- private static final EnumMap<DetailedState, DetailedState> stateMap =
+ private static final EnumMap<DetailedState, DetailedState> sNetworkStateMap =
new EnumMap<DetailedState, DetailedState>(DetailedState.class);
static {
- stateMap.put(DetailedState.IDLE, DetailedState.DISCONNECTED);
- stateMap.put(DetailedState.SCANNING, DetailedState.SCANNING);
- stateMap.put(DetailedState.CONNECTING, DetailedState.CONNECTING);
- stateMap.put(DetailedState.AUTHENTICATING, DetailedState.CONNECTING);
- stateMap.put(DetailedState.OBTAINING_IPADDR, DetailedState.CONNECTING);
- stateMap.put(DetailedState.CONNECTED, DetailedState.CONNECTED);
- stateMap.put(DetailedState.SUSPENDED, DetailedState.SUSPENDED); // ?
- stateMap.put(DetailedState.DISCONNECTING, DetailedState.DISCONNECTED);
- stateMap.put(DetailedState.DISCONNECTED, DetailedState.DISCONNECTED);
- stateMap.put(DetailedState.FAILED, DetailedState.FAILED);
+ sNetworkStateMap.put(DetailedState.IDLE, DetailedState.DISCONNECTED);
+ sNetworkStateMap.put(DetailedState.SCANNING, DetailedState.SCANNING);
+ sNetworkStateMap.put(DetailedState.CONNECTING, DetailedState.CONNECTING);
+ sNetworkStateMap.put(DetailedState.AUTHENTICATING, DetailedState.CONNECTING);
+ sNetworkStateMap.put(DetailedState.OBTAINING_IPADDR, DetailedState.CONNECTING);
+ sNetworkStateMap.put(DetailedState.CONNECTED, DetailedState.CONNECTED);
+ sNetworkStateMap.put(DetailedState.SUSPENDED, DetailedState.SUSPENDED); // ?
+ sNetworkStateMap.put(DetailedState.DISCONNECTING, DetailedState.DISCONNECTED);
+ sNetworkStateMap.put(DetailedState.DISCONNECTED, DetailedState.DISCONNECTED);
+ sNetworkStateMap.put(DetailedState.FAILED, DetailedState.FAILED);
}
+ /**
+ * Used with {@link Button#setTag(Object)} to remember "Connect" button is pressed in
+ * with "add network" flow.
+ */
+ private static final int CONNECT_BUTTON_TAG_ADD_NETWORK = 1;
+
+ private WifiSettings mWifiSettings;
private WifiManager mWifiManager;
- /**
- * Used for resizing a padding above title. Hiden when software keyboard is shown.
- */
+ /** Used for resizing a padding above title. Hiden when software keyboard is shown. */
private View mTopPadding;
- /**
- * Used for resizing a padding inside Config UI. Hiden when software keyboard is shown.
- */
+ /** Used for resizing a padding inside Config UI. Hiden when software keyboard is shown. */
private View mWifiConfigPadding;
private TextView mTitleView;
@@ -93,17 +95,17 @@
private ProgressBar mProgressBar;
private View mTopDividerNoProgress;
+ /**
+ * Used for resizing a padding between WifiSettings preference and bottom bar when
+ * ProgressBar is visible as a top divider.
+ */
private View mBottomPadding;
- private WifiSettings mWifiSettings;
-
private Button mAddNetworkButton;
private Button mRefreshButton;
private Button mSkipOrNextButton;
private Button mBackButton;
- private static int CONNECT_BUTTON_TAG_ADD_NETWORK = 1;
-
private Button mConnectButton;
/**
@@ -113,24 +115,39 @@
private View mConnectingStatusLayout;
private TextView mConnectingStatusView;
+ /*
+ * States of current screen, which should be saved and restored when Activity is relaunched
+ * with orientation change, etc.
+ */
private static final int SCREEN_STATE_DISCONNECTED = 0;
private static final int SCREEN_STATE_EDITING = 1;
private static final int SCREEN_STATE_CONNECTING = 2;
private static final int SCREEN_STATE_CONNECTED = 3;
+ /** Current screen state. */
private int mScreenState = SCREEN_STATE_DISCONNECTED;
private WifiConfigUiForSetupWizardXL mWifiConfig;
private InputMethodManager mInputMethodManager;
- private final Handler mHandler = new Handler();
-
+ /**
+ * Used to store View visibility status.
+ *
+ * We store the status when we show "connecting" screen and use the stored data when the
+ * device failed to connect to the network.
+ */
private int mPreviousWpsFieldsVisibility = View.GONE;
private int mPreviousSecurityFieldsVisibility = View.GONE;
private int mPreviousTypeVisibility = View.GONE;
- private DetailedState mPreviousState = DetailedState.DISCONNECTED;
+ /**
+ * Previous network connection state reported by main Wifi module.
+ *
+ * Note that we don't use original {@link DetailedState} object but simplified one translated
+ * using sNetworkStateMap.
+ */
+ private DetailedState mPreviousNetworkState = DetailedState.DISCONNECTED;
private int mBackgroundId = R.drawable.setups_bg_default;
@@ -140,8 +157,6 @@
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.wifi_settings_for_setup_wizard_xl);
- getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
-
mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
// There's no button here enabling wifi network, so we need to enable it without
// users' request.
@@ -151,10 +166,15 @@
mWifiSettings =
(WifiSettings)getFragmentManager().findFragmentById(R.id.wifi_setup_fragment);
mInputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
- setup();
+
+ initViews();
+
+ // At first, Wifi module doesn't return SCANNING state (it's too early), so we manually
+ // show it.
+ showScanningStatus();
}
- public void setup() {
+ private void initViews() {
if (getIntent().getBooleanExtra("firstRun", false)) {
final View layoutRoot = findViewById(R.id.layout_root);
layoutRoot.setSystemUiVisibility(View.STATUS_BAR_DISABLE_BACK);
@@ -187,10 +207,6 @@
mWifiSettingsFragmentLayout = findViewById(R.id.wifi_settings_fragment_layout);
mConnectingStatusLayout = findViewById(R.id.connecting_status_layout);
mConnectingStatusView = (TextView) findViewById(R.id.connecting_status);
-
- // At first, Wifi module doesn't return SCANNING state (it's too early), so we manually
- // show it.
- showScanningStatus();
}
private class WifiServiceHandler extends Handler {
@@ -259,7 +275,7 @@
// Called from WifiSettings
/* package */ void updateConnectionState(DetailedState originalState) {
- final DetailedState state = stateMap.get(originalState);
+ final DetailedState state = sNetworkStateMap.get(originalState);
if (originalState == DetailedState.FAILED) {
// We clean up the current connectivity status and let users select another network
@@ -296,7 +312,7 @@
}
break;
}
- mPreviousState = state;
+ mPreviousNetworkState = state;
}
private void showDisconnectedState(String stateString) {
@@ -431,7 +447,7 @@
trySetBackground(R.drawable.setups_bg_default);
- // We don't want to keep scanning Wi-Fi networks during users' configuring one network.
+ // We don't want to keep scanning Wifi networks during users' configuring a network.
mWifiSettings.pauseWifiScan();
mWifiSettingsFragmentLayout.setVisibility(View.GONE);
@@ -441,7 +457,7 @@
parent.removeAllViews();
mWifiConfig = new WifiConfigUiForSetupWizardXL(this, parent, selectedAccessPoint, edit);
- // For safety, we forget the tag once. Tag will be updated in this method when needed.
+ // Tag will be updated in this method when needed.
mConnectButton.setTag(null);
if (selectedAccessPoint == null) { // "Add network" flow
showAddNetworkTitle();
@@ -473,7 +489,7 @@
}
/**
- * Called before security fields are correctly set by WifiConfigController.
+ * Called before security fields are correctly set by {@link WifiConfigController}.
*
* @param view security field view
* @param accessPointSecurity type of security. e.g. AccessPoint.SECURITY_NONE
@@ -495,7 +511,7 @@
// users configure those networks after the setup.
if (view.findViewById(R.id.type).getVisibility() == View.VISIBLE) {
view.findViewById(R.id.eap_not_supported_for_add_network)
- .setVisibility(View.VISIBLE);
+ .setVisibility(View.VISIBLE);
} else {
view.findViewById(R.id.eap_not_supported).setVisibility(View.VISIBLE);
}
@@ -503,8 +519,12 @@
view.findViewById(R.id.ssid_text).setVisibility(View.GONE);
view.findViewById(R.id.ssid_layout).setVisibility(View.GONE);
onEapNetworkSelected();
+
+ // This method did init security fields by itself. The caller must not do it.
return false;
}
+
+ // Let the caller init security fields.
return true;
}
@@ -528,10 +548,12 @@
mWifiSettings.submit(mWifiConfig.getController());
- // updateConnectionState() isn't called soon after the user's "connect" action,
- // and the user still sees "not connected" message for a while, which looks strange.
+ // updateConnectionState() isn't called soon by the main Wifi module after the user's
+ // "connect" request, and the user still sees "not connected" message for a while, which
+ // looks strange for users though legitimate from the view of the module.
+ //
// We instead manually show "connecting" message before the system gets actual
- // "connecting" message from Wi-Fi module.
+ // "connecting" message from Wifi module.
showConnectingState();
// Might be better to delay showing this button.
@@ -578,7 +600,7 @@
mScreenState = SCREEN_STATE_DISCONNECTED;
// When a user press "Back" button after pressing "Connect" button, we want to cancel
- // the "Connect" request and refresh the whole wifi status.
+ // the "Connect" request and refresh the whole Wifi status.
restoreFirstButtonVisibilityState();
mSkipOrNextButton.setEnabled(true);
@@ -655,7 +677,7 @@
((Integer)tag == CONNECT_BUTTON_TAG_ADD_NETWORK)) {
// In "Add network" flow, we won't get DetaledState available for changing ProgressBar
// state. Instead we manually show previous status here.
- showDisconnectedState(Summary.get(this, mPreviousState));
+ showDisconnectedState(Summary.get(this, mPreviousNetworkState));
} else {
showScanningStatus();
}
@@ -736,7 +758,8 @@
}
/** Note: doesn't affect bottom padding */
- public void setPaddingVisibility(int visibility) {
+ // Used by WifiConfigUiForSetupWizardXL
+ /* package */ void setPaddingVisibility(int visibility) {
setPaddingVisibility(visibility, visibility);
}
@@ -777,12 +800,10 @@
}
/**
- * Called when WifiManager is requested to save a network. This method sholud include
- * WifiManager#saveNetwork() call.
- *
- * Currently this method calls {@link WifiManager#connectNetwork(int)}.
+ * Called when WifiManager is requested to save a network.
*/
/* package */ void onSaveNetwork(WifiConfiguration config) {
+ // We want to both save and connect a network. connectNetwork() does both.
mWifiManager.connectNetwork(config);
}