Revise layout for Wifi Setup in XLarge screen

- revise xml for new layout
- introduce padding View objects for resizing screen when
  software keyboard is shown.
- We now don't show the detailed status of Wi-Fi module anymore
  in SetupWizard flow (like "disconnected", "connecting", etc.)
- remove Forget button and relevant code.

Bug: 3347865
Change-Id: Ieab3246f06ee73af59e247b3f9f31c7570efc71f
This commit is contained in:
Daisuke Miyakawa
2011-01-12 21:19:24 -08:00
parent 3b9b6533a5
commit 14cbcb7fe8
7 changed files with 308 additions and 272 deletions

View File

@@ -29,10 +29,10 @@ import android.os.Handler;
import android.preference.PreferenceCategory;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
@@ -69,16 +69,31 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
private WifiManager mWifiManager;
private TextView mProgressText;
/**
* 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.
*/
private View mWifiConfigPadding;
private TextView mTitleView;
/**
* The name of a network currently connecting, or trying to connect.
* This may be empty ("") at first, and updated when configuration is changed.
*/
private CharSequence mNetworkName = "";
private CharSequence mEditingTitle;
private ProgressBar mProgressBar;
private WifiSettings mWifiSettings;
private TextView mStatusText;
private Button mAddNetworkButton;
private Button mRefreshButton;
private Button mSkipOrNextButton;
private Button mConnectButton;
private Button mForgetButton;
private Button mBackButton;
// true when a user already pressed "Connect" button and waiting for connection.
@@ -130,14 +145,11 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
}
public void setup() {
mProgressText = (TextView)findViewById(R.id.scanning_progress_text);
mTitleView = (TextView)findViewById(R.id.wifi_setup_title);
mProgressBar = (ProgressBar)findViewById(R.id.scanning_progress_bar);
mProgressBar.setMax(2);
mStatusText = (TextView)findViewById(R.id.wifi_setup_status);
mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
mProgressBar.setIndeterminate(true);
mStatusText.setText(R.string.wifi_setup_status_scanning);
mAddNetworkButton = (Button)findViewById(R.id.wifi_setup_add_network);
mAddNetworkButton.setOnClickListener(this);
@@ -147,11 +159,12 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mSkipOrNextButton.setOnClickListener(this);
mConnectButton = (Button)findViewById(R.id.wifi_setup_connect);
mConnectButton.setOnClickListener(this);
mForgetButton = (Button)findViewById(R.id.wifi_setup_forget);
mForgetButton.setOnClickListener(this);
mBackButton = (Button)findViewById(R.id.wifi_setup_cancel);
mBackButton.setOnClickListener(this);
mTopPadding = findViewById(R.id.top_padding);
mWifiConfigPadding = findViewById(R.id.wifi_config_padding);
// At first, Wifi module doesn't return SCANNING state (it's too early), so we manually
// show it.
showScanningStatus();
@@ -163,8 +176,8 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mRefreshButton.setVisibility(View.VISIBLE);
mSkipOrNextButton.setVisibility(View.VISIBLE);
mConnectButton.setVisibility(View.GONE);
mForgetButton.setVisibility(View.GONE);
mBackButton.setVisibility(View.GONE);
setPaddingVisibility(View.VISIBLE, View.GONE);
}
@Override
@@ -188,9 +201,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
} else if (view == mConnectButton) {
if (DEBUG) Log.d(TAG, "Connect button pressed");
onConnectButtonPressed();
} else if (view == mForgetButton) {
if (DEBUG) Log.d(TAG, "Forget button pressed");
onForgetButtonPressed();
} else if (view == mBackButton) {
if (DEBUG) Log.d(TAG, "Back button pressed");
onBackButtonPressed();
@@ -222,7 +232,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
// no visible network on the list.
if (mWifiSettings.getAccessPointsCount() == 0) {
mProgressBar.setIndeterminate(true);
mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
} else {
// Users already connected to a network, or see available networks.
mProgressBar.setIndeterminate(false);
@@ -234,14 +243,14 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
break;
}
case CONNECTED: {
hideSoftwareKeyboard();
// If the device is already connected to a wifi without users' "Connect" request,
// this can be false here. We want to treat it as "after connect action".
mAfterConnectAction = true;
mProgressBar.setIndeterminate(false);
mProgressBar.setProgress(2);
mProgressText.setText(Summary.get(this, state));
mStatusText.setText(R.string.wifi_setup_status_proceed_to_next);
mConnectButton.setVisibility(View.GONE);
mAddNetworkButton.setVisibility(View.GONE);
@@ -250,8 +259,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mSkipOrNextButton.setVisibility(View.VISIBLE);
mSkipOrNextButton.setEnabled(true);
mHandler.removeCallbacks(mSkipButtonEnabler);
mProgressText.setText(Summary.get(this, state));
break;
}
default: // DISCONNECTED, FAILED
@@ -264,31 +271,34 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mProgressBar.setIndeterminate(false);
mProgressBar.setProgress(0);
mProgressText.setText(stateString);
mAddNetworkButton.setEnabled(true);
mRefreshButton.setEnabled(true);
}
private void showConnectingStatus() {
// We save this title and show it when authentication failed.
mEditingTitle = mTitleView.getText();
showTitleForNetworkEditing();
mProgressBar.setIndeterminate(false);
mProgressBar.setProgress(1);
mStatusText.setText(R.string.wifi_setup_status_connecting);
mProgressText.setText(Summary.get(this, DetailedState.CONNECTING));
setPaddingVisibility(View.VISIBLE);
}
private void showTitleForNetworkEditing() {
if (TextUtils.isEmpty(mNetworkName) && mWifiConfig != null) {
mNetworkName = mWifiConfig.getController().getConfig().SSID;
}
mTitleView.setText(getString(R.string.wifi_setup_title_editing_network, mNetworkName));
}
private void showScanningStatus() {
mProgressBar.setIndeterminate(true);
((Button)findViewById(R.id.wifi_setup_add_network)).setEnabled(false);
((Button)findViewById(R.id.wifi_setup_refresh_list)).setEnabled(false);
mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
mStatusText.setText(R.string.wifi_setup_status_scanning);
}
private void onAddNetworkButtonPressed() {
// onConfigUiShown() will be called.
mWifiSettings.onAddNetworkPressed();
}
/**
@@ -318,34 +328,39 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mWifiConfig = new WifiConfigUiForSetupWizardXL(this, parent, selectedAccessPoint, edit);
final View view = mWifiConfig.getView();
if (selectedAccessPoint != null) {
view.findViewById(R.id.wifi_general_info).setVisibility(View.VISIBLE);
((TextView)view.findViewById(R.id.title)).setText(selectedAccessPoint.getTitle());
((TextView)view.findViewById(R.id.summary)).setText(selectedAccessPoint.getSummary());
mNetworkName = selectedAccessPoint.getTitle().toString();
mTitleView.setText(getString(R.string.wifi_setup_title_editing_network, mNetworkName));
} else {
mNetworkName = "";
mTitleView.setText(R.string.wifi_setup_title_add_network);
view.findViewById(R.id.wifi_general_info).setVisibility(View.GONE);
}
if (selectedAccessPoint != null &&
selectedAccessPoint.security == AccessPoint.SECURITY_NONE) {
mStatusText.setText(R.string.wifi_setup_status_unsecured_network);
// onConnectButtonPressed() will change visibility status.
mConnectButton.performClick();
} else if (selectedAccessPoint != null &&
selectedAccessPoint.security == AccessPoint.SECURITY_EAP) {
mStatusText.setText(R.string.wifi_setup_status_eap_not_supported);
mConnectButton.setVisibility(View.GONE);
mSkipOrNextButton.setVisibility(View.GONE);
mAddNetworkButton.setVisibility(View.GONE);
mRefreshButton.setVisibility(View.GONE);
mBackButton.setVisibility(View.VISIBLE);
} else {
mStatusText.setText(R.string.wifi_setup_status_edit_network);
mConnectButton.setVisibility(View.VISIBLE);
// WifiConfigController shows Connect button as "Save" when edit==true and a user
// tried to connect the network.
// In SetupWizard, we just show the button as "Connect" instead.
mConnectButton.setText(R.string.wifi_connect);
mSkipOrNextButton.setVisibility(View.GONE);
mAddNetworkButton.setVisibility(View.GONE);
mRefreshButton.setVisibility(View.GONE);
mBackButton.setVisibility(View.VISIBLE);
}
// WifiConfigController shows Connect button as "Save" when edit==true and a user
// tried to connect the network.
// In SetupWizard, we just show the button as "Connect" instead.
mConnectButton.setText(R.string.wifi_connect);
mAddNetworkButton.setVisibility(View.GONE);
mRefreshButton.setVisibility(View.GONE);
mSkipOrNextButton.setVisibility(View.GONE);
mBackButton.setVisibility(View.VISIBLE);
}
// May be called when user press "connect" button in WifiDialog
@@ -388,21 +403,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
mRefreshButton.setVisibility(View.GONE);
}
// May be called when user press "forget" button in WifiDialog
/* package */ void onForgetButtonPressed() {
mWifiSettings.forget();
refreshAccessPoints(false);
restoreFirstButtonVisibilityState();
mAddNetworkButton.setEnabled(true);
mRefreshButton.setEnabled(true);
mSkipOrNextButton.setEnabled(true);
mProgressBar.setIndeterminate(false);
mProgressBar.setProgress(0);
mProgressText.setText(getString(R.string.wifi_setup_not_connected));
}
private void onBackButtonPressed() {
if (mAfterConnectAction) {
if (DEBUG) Log.d(TAG, "Back button pressed after connect action.");
@@ -421,7 +421,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
} else { // During user's Wifi configuration.
mWifiSettings.resumeWifiScan();
mStatusText.setText(R.string.wifi_setup_status_select_network);
restoreFirstButtonVisibilityState();
mAddNetworkButton.setEnabled(true);
@@ -470,7 +469,8 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
}
/**
* Called when {@link WifiSettings} received {@link WifiManager#SUPPLICANT_CHANGED_ACTION}.
* Called when {@link WifiSettings} received
* {@link WifiManager#SUPPLICANT_STATE_CHANGED_ACTION}.
*/
/* package */ void onSupplicantStateChanged(Intent intent) {
final int errorCode = intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
@@ -485,11 +485,17 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
*/
private void onAuthenticationFailure() {
mAfterConnectAction = false;
mStatusText.setText(R.string.wifi_setup_status_edit_network);
mSkipOrNextButton.setVisibility(View.GONE);
mConnectButton.setVisibility(View.VISIBLE);
mConnectButton.setEnabled(true);
if (!TextUtils.isEmpty(mEditingTitle)) {
mTitleView.setText(mEditingTitle);
} else {
Log.w(TAG, "Title during editing/adding a network was empty.");
showTitleForNetworkEditing();
}
// Restore View status which was tweaked on connection.
final View wpsFieldView = findViewById(R.id.wps_fields);
if (wpsFieldView != null) {
@@ -502,21 +508,36 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis
final View passwordView = findViewById(R.id.password);
if (passwordView != null) {
if (passwordView.isFocused()) {
final InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(passwordView, 0);
} else {
mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
setPaddingVisibility(View.GONE);
}
mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
}
}
}
final View typeView = findViewById(R.id.type);
if (typeView != null) {
typeView.setVisibility(mPreviousTypeVisibility);
if (mPreviousTypeVisibility == View.VISIBLE && mWifiConfig != null) {
final View ssidView = findViewById(R.id.ssid);
if (ssidView != null) {
if (ssidView.isFocused()) {
setPaddingVisibility(View.GONE);
}
mWifiConfig.requestFocusAndShowKeyboard(R.id.ssid);
}
}
}
}
public void setPaddingVisibility(int visibility) {
setPaddingVisibility(visibility, visibility);
}
private void setPaddingVisibility(int topPaddingVisibility, int configVisibility) {
mTopPadding.setVisibility(topPaddingVisibility);
mWifiConfigPadding.setVisibility(configVisibility);
}
/**
* Called when WifiManager is requested to save a network. This method sholud include
* WifiManager#saveNetwork() call.