diff options
Diffstat (limited to 'src/com/android/settings/wifi/AccessPointDialog.java')
-rw-r--r-- | src/com/android/settings/wifi/AccessPointDialog.java | 807 |
1 files changed, 0 insertions, 807 deletions
diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java deleted file mode 100644 index 4804d78..0000000 --- a/src/com/android/settings/wifi/AccessPointDialog.java +++ /dev/null @@ -1,807 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.wifi; - -import com.android.settings.R; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.res.Resources; -import android.security.Credentials; -import android.security.KeyStore; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; -import android.os.Bundle; -import android.text.InputType; -import android.text.TextUtils; -import android.text.format.Formatter; -import android.text.method.PasswordTransformationMethod; -import android.text.method.TransformationMethod; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.EditText; -import android.widget.Spinner; -import android.widget.TableLayout; -import android.widget.TextView; - -public class AccessPointDialog extends AlertDialog implements DialogInterface.OnClickListener, - AdapterView.OnItemSelectedListener, View.OnClickListener { - - private static final String TAG = "AccessPointDialog"; - private static final String INSTANCE_KEY_ACCESS_POINT_STATE = - "com.android.settings.wifi.AccessPointDialog:accessPointState"; - private static final String INSTANCE_KEY_MODE = - "com.android.settings.wifi.AccessPointDialog:mode"; - private static final String INSTANCE_KEY_CUSTOM_TITLE = - "com.android.settings.wifi.AccessPointDialog:customTitle"; - private static final String INSTANCE_KEY_AUTO_SECURITY_ALLOWED = - "com.android.settings.wifi.AccessPointDialog:autoSecurityAllowed"; - - private static final int POSITIVE_BUTTON = BUTTON1; - private static final int NEGATIVE_BUTTON = BUTTON2; - private static final int NEUTRAL_BUTTON = BUTTON3; - - /** The dialog should show info connectivity functionality */ - public static final int MODE_INFO = 0; - /** The dialog should configure the detailed AP properties */ - public static final int MODE_CONFIGURE = 1; - /** The dialog should have the password field and connect/cancel */ - public static final int MODE_RETRY_PASSWORD = 2; - - // These should be matched with the XML. Both arrays in XML depend on this - // ordering! - private static final int SECURITY_AUTO = 0; - private static final int SECURITY_NONE = 1; - private static final int SECURITY_WEP = 2; - private static final int SECURITY_PSK = 3; - private static final int SECURITY_EAP = 4; - - private static final int[] WEP_TYPE_VALUES = { - AccessPointState.WEP_PASSWORD_AUTO, AccessPointState.WEP_PASSWORD_ASCII, - AccessPointState.WEP_PASSWORD_HEX - }; - private static final String NOT_APPLICABLE = "N/A"; - private static final String KEYSTORE_HEADER = "keystore://"; - - // Button positions, default to impossible values - private int mConnectButtonPos = Integer.MAX_VALUE; - private int mForgetButtonPos = Integer.MAX_VALUE; - private int mSaveButtonPos = Integer.MAX_VALUE; - - // Client configurable items. Generally, these should be saved in instance state - private int mMode = MODE_INFO; - private boolean mAutoSecurityAllowed = true; - private CharSequence mCustomTitle; - // This does not need to be saved in instance state. - private WifiLayer mWifiLayer; - private AccessPointState mState; - - // General views - private View mView; - private View mEnterpriseView; - private TextView mPasswordText; - private EditText mPasswordEdit; - private CheckBox mShowPasswordCheckBox; - - // Enterprise fields - private TextView mEapText; - private Spinner mEapSpinner; - private TextView mPhase2Text; - private Spinner mPhase2Spinner; - private TextView mIdentityText; - private EditText mIdentityEdit; - private TextView mAnonymousIdentityText; - private EditText mAnonymousIdentityEdit; - private TextView mCaCertText; - private Spinner mCaCertSpinner; - private TextView mClientCertText; - private Spinner mClientCertSpinner; - private EditText[] mEnterpriseTextFields; - - - // Info-specific views - private ViewGroup mTable; - - // Configure-specific views - private EditText mSsidEdit; - private TextView mSsidText; - private TextView mSecurityText; - private Spinner mSecuritySpinner; - private Spinner mWepTypeSpinner; - private KeyStore mKeyStore; - - public AccessPointDialog(Context context, WifiLayer wifiLayer) { - super(context); - - mWifiLayer = wifiLayer; - mKeyStore = KeyStore.getInstance(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - onLayout(); - onFill(); - - super.onCreate(savedInstanceState); - } - - @Override - public void onRestoreInstanceState(Bundle savedInstanceState) { - // Set to a class loader that can find AccessPointState - savedInstanceState.setClassLoader(getClass().getClassLoader()); - - mState = savedInstanceState.getParcelable(INSTANCE_KEY_ACCESS_POINT_STATE); - mState.setContext(getContext()); - - mMode = savedInstanceState.getInt(INSTANCE_KEY_MODE, mMode); - mAutoSecurityAllowed = savedInstanceState.getBoolean(INSTANCE_KEY_AUTO_SECURITY_ALLOWED, - mAutoSecurityAllowed); - mCustomTitle = savedInstanceState.getCharSequence(INSTANCE_KEY_CUSTOM_TITLE); - if (mCustomTitle != null) { - setTitle(mCustomTitle); - } - - // This is called last since it depends on the above values - super.onRestoreInstanceState(savedInstanceState); - - if (mShowPasswordCheckBox != null) { - // Restore the show-password-state on the edit text - setShowPassword(mShowPasswordCheckBox.isChecked()); - } - } - - @Override - public Bundle onSaveInstanceState() { - Bundle bundle = super.onSaveInstanceState(); - bundle.putParcelable(INSTANCE_KEY_ACCESS_POINT_STATE, mState); - bundle.putInt(INSTANCE_KEY_MODE, mMode); - bundle.putBoolean(INSTANCE_KEY_AUTO_SECURITY_ALLOWED, mAutoSecurityAllowed); - bundle.putCharSequence(INSTANCE_KEY_CUSTOM_TITLE, mCustomTitle); - return bundle; - } - - /** - * Sets state to show in this dialog. - * - * @param state The state. - */ - public void setState(AccessPointState state) { - mState = state; - } - - /** - * Sets the dialog mode. - * @param mode One of {@link #MODE_CONFIGURE} or {@link #MODE_INFO} - */ - public void setMode(int mode) { - mMode = mode; - } - - public void setAutoSecurityAllowed(boolean autoSecurityAllowed) { - mAutoSecurityAllowed = autoSecurityAllowed; - } - - @Override - public void setTitle(CharSequence title) { - super.setTitle(title); - mCustomTitle = title; - } - - @Override - public void setTitle(int titleId) { - setTitle(getContext().getString(titleId)); - } - - public void enableEnterpriseFields() { - setEnterpriseFieldsVisible(true); - updateCertificateSelection(); - setGenericPasswordVisible(true); - // Both WPA and WPA2 show the same caption, so either is ok - updatePasswordCaption(AccessPointState.PSK); - } - - /** Called after flags are set, the dialog's layout/etc should be set up here */ - private void onLayout() { - final Context context = getContext(); - final String ssid = mState.getHumanReadableSsid(); - - int positiveButtonResId = 0; - int negativeButtonResId = R.string.cancel; - int neutralButtonResId = 0; - - if (mCustomTitle == null) { - // Generic title is the SSID - // We don't want to trigger this as a custom title, so call super's - super.setTitle(ssid); - } - setInverseBackgroundForced(true); - - boolean defaultPasswordVisibility = true; - - if (mMode == MODE_CONFIGURE) { - setLayout(R.layout.wifi_ap_configure); - - positiveButtonResId = R.string.wifi_save_config; - mSaveButtonPos = POSITIVE_BUTTON; - - setEnterpriseFieldsVisible(false); - - } else if (mMode == MODE_INFO) { - if (mState.isEnterprise() && !mState.configured) { - setLayout(R.layout.wifi_ap_configure); - setEnterpriseFieldsVisible(true); - } else { - setLayout(R.layout.wifi_ap_info); - } - - if (mState.isConnectable()) { - if (mCustomTitle == null) { - // We don't want to trigger this as a custom title, so call super's - super.setTitle(context.getString(R.string.connect_to_blank, ssid)); - } - positiveButtonResId = R.string.connect; - mConnectButtonPos = POSITIVE_BUTTON; - } - - if (mState.isForgetable()) { - if (positiveButtonResId == 0) { - positiveButtonResId = R.string.forget_network; - mForgetButtonPos = POSITIVE_BUTTON; - } else { - neutralButtonResId = R.string.forget_network; - mForgetButtonPos = NEUTRAL_BUTTON; - } - } - } else if (mMode == MODE_RETRY_PASSWORD) { - setLayout(R.layout.wifi_ap_retry_password); - - positiveButtonResId = R.string.connect; - mConnectButtonPos = POSITIVE_BUTTON; - - setGenericPasswordVisible(true); - defaultPasswordVisibility = false; - } - - if (defaultPasswordVisibility) { - if (!mState.configured && mState.seen && mState.hasSecurity()) { - setGenericPasswordVisible(true); - } else { - setGenericPasswordVisible(false); - } - } - - setButtons(positiveButtonResId, negativeButtonResId, neutralButtonResId); - } - - /** Called when we need to set our member variables to point to the views. */ - private void onReferenceViews(View view) { - mPasswordText = (TextView) view.findViewById(R.id.password_text); - mPasswordEdit = (EditText) view.findViewById(R.id.password_edit); - mSsidText = (TextView) view.findViewById(R.id.ssid_text); - mSsidEdit = (EditText) view.findViewById(R.id.ssid_edit); - mSecurityText = (TextView) view.findViewById(R.id.security_text); - mSecuritySpinner = (Spinner) view.findViewById(R.id.security_spinner); - mWepTypeSpinner = (Spinner) view.findViewById(R.id.wep_type_spinner); - mEnterpriseView = mView.findViewById(R.id.enterprise_wrapper); - - mShowPasswordCheckBox = (CheckBox) view.findViewById(R.id.show_password_checkbox); - if (mShowPasswordCheckBox != null) { - mShowPasswordCheckBox.setOnClickListener(this); - } - if (mMode == MODE_CONFIGURE) { - mSecuritySpinner.setOnItemSelectedListener(this); - mSecuritySpinner.setPromptId(R.string.security); - setSpinnerAdapter(mSecuritySpinner, mAutoSecurityAllowed ? - R.array.wifi_security_entries - : R.array.wifi_security_without_auto_entries); - } else if (mMode == MODE_INFO) { - mTable = (ViewGroup) view.findViewById(R.id.table); - } - /* for enterprise one */ - if (mMode == MODE_CONFIGURE || - (mState.isEnterprise() && !mState.configured)) { - setEnterpriseFields(view); - updateCertificateSelection(); - } - } - - private void updateCertificateSelection() { - setSpinnerAdapter(mClientCertSpinner, getAllUserCertificateKeys()); - setSpinnerAdapter(mCaCertSpinner, getAllCaCertificateKeys()); - - mPhase2Spinner.setSelection(getSelectionIndex( - R.array.wifi_phase2_entries, mState.getPhase2())); - mEapSpinner.setSelection(getSelectionIndex( - R.array.wifi_eap_entries, mState.getEap())); - mClientCertSpinner.setSelection(getSelectionIndex( - getAllUserCertificateKeys(), mState.getEnterpriseField( - AccessPointState.CLIENT_CERT))); - mCaCertSpinner.setSelection(getSelectionIndex( - getAllCaCertificateKeys(), mState.getEnterpriseField( - AccessPointState.CA_CERT))); - } - - private String[] getAllCaCertificateKeys() { - return appendEmptyInSelection(mKeyStore.saw(Credentials.CA_CERTIFICATE)); - } - - private String[] getAllUserCertificateKeys() { - return appendEmptyInSelection(mKeyStore.saw(Credentials.USER_CERTIFICATE)); - } - - private String[] appendEmptyInSelection(String[] keys) { - if (keys == null) { - return new String[] {NOT_APPLICABLE}; - } else { - String[] selections = new String[keys.length + 1]; - System.arraycopy(keys, 0, selections, 0, keys.length); - selections[keys.length] = NOT_APPLICABLE; - return selections; - } - } - - private void setEnterpriseFields(View view) { - mIdentityText = (TextView) view.findViewById(R.id.identity_text); - mIdentityEdit = (EditText) view.findViewById(R.id.identity_edit); - mAnonymousIdentityText = - (TextView) view.findViewById(R.id.anonymous_identity_text); - mAnonymousIdentityEdit = - (EditText) view.findViewById(R.id.anonymous_identity_edit); - mClientCertText = - (TextView) view.findViewById(R.id.client_certificate_text); - mCaCertText = (TextView) view.findViewById(R.id.ca_certificate_text); - mEapText = (TextView) view.findViewById(R.id.eap_text); - mEapSpinner = (Spinner) view.findViewById(R.id.eap_spinner); - mEapSpinner.setOnItemSelectedListener(this); - mEapSpinner.setPromptId(R.string.please_select_eap); - setSpinnerAdapter(mEapSpinner, R.array.wifi_eap_entries); - - mPhase2Text = (TextView) view.findViewById(R.id.phase2_text); - mPhase2Spinner = (Spinner) view.findViewById(R.id.phase2_spinner); - mPhase2Spinner.setOnItemSelectedListener(this); - mPhase2Spinner.setPromptId(R.string.please_select_phase2); - setSpinnerAdapter(mPhase2Spinner, R.array.wifi_phase2_entries); - - mClientCertSpinner = - (Spinner) view.findViewById(R.id.client_certificate_spinner); - mClientCertSpinner.setOnItemSelectedListener(this); - mClientCertSpinner.setPromptId( - R.string.please_select_client_certificate); - setSpinnerAdapter(mClientCertSpinner, getAllUserCertificateKeys()); - - mCaCertSpinner = - (Spinner) view.findViewById(R.id.ca_certificate_spinner); - mCaCertSpinner.setOnItemSelectedListener(this); - mCaCertSpinner.setPromptId(R.string.please_select_ca_certificate); - setSpinnerAdapter(mCaCertSpinner, getAllCaCertificateKeys()); - - mEnterpriseTextFields = new EditText[] { - mIdentityEdit, mAnonymousIdentityEdit - }; - - } - - private void setSpinnerAdapter(Spinner spinner, String[] items) { - if (items != null) { - ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>( - getContext(), android.R.layout.simple_spinner_item, items); - adapter.setDropDownViewResource( - android.R.layout.simple_spinner_dropdown_item); - spinner.setAdapter(adapter); - } - } - - private void setSpinnerAdapter(Spinner spinner, int arrayResId) { - setSpinnerAdapter(spinner, - getContext().getResources().getStringArray(arrayResId)); - } - - /** Called when the widgets are in-place waiting to be filled with data */ - private void onFill() { - - // Appears in the order added - if (mMode == MODE_INFO) { - if (mState.primary) { - addInfoRow(R.string.wifi_status, mState.getSummarizedStatus()); - addInfoRow(R.string.wifi_link_speed, mState.linkSpeed + WifiInfo.LINK_SPEED_UNITS); - } - - if (mState.seen) { - addInfoRow(R.string.signal, getSignalResId(mState.signal)); - } - - if (mState.security != null) { - addInfoRow(R.string.security, mState.getHumanReadableSecurity()); - } - - if (mState.primary && mState.ipAddress != 0) { - addInfoRow(R.string.ip_address, Formatter.formatIpAddress(mState.ipAddress)); - } - - } else if (mMode == MODE_CONFIGURE) { - String ssid = mState.getHumanReadableSsid(); - if (!TextUtils.isEmpty(ssid)) { - mSsidEdit.setText(ssid); - } - if (mState.configured) { - mPasswordEdit.setHint(R.string.wifi_password_unchanged); - } - } - - updatePasswordCaption(mState.security); - } - - private void updatePasswordCaption(String security) { - if (mPasswordText != null) { - if (security != null && security.equals(AccessPointState.WEP)) { - mPasswordText.setText(R.string.please_type_hex_key); - } else { - mPasswordText.setText(R.string.please_type_passphrase); - } - } - } - - private void addInfoRow(int nameResId, String value) { - View rowView = getLayoutInflater().inflate(R.layout.wifi_ap_info_row, mTable, false); - ((TextView) rowView.findViewById(R.id.name)).setText(nameResId); - ((TextView) rowView.findViewById(R.id.value)).setText(value); - mTable.addView(rowView); - } - - private void addInfoRow(int nameResId, int valueResId) { - addInfoRow(nameResId, getContext().getString(valueResId)); - } - - private void setButtons(int positiveResId, int negativeResId, int neutralResId) { - final Context context = getContext(); - - if (positiveResId > 0) { - setButton(context.getString(positiveResId), this); - } - - if (negativeResId > 0) { - setButton2(context.getString(negativeResId), this); - } - - if (neutralResId > 0) { - setButton3(context.getString(neutralResId), this); - } - } - - private void setLayout(int layoutResId) { - setView(mView = getLayoutInflater().inflate(layoutResId, null)); - onReferenceViews(mView); - } - - public void onClick(DialogInterface dialog, int which) { - if (which == mForgetButtonPos) { - handleForget(); - } else if (which == mConnectButtonPos) { - handleConnect(); - } else if (which == mSaveButtonPos) { - handleSave(); - } - } - - private void handleForget() { - if (!replaceStateWithWifiLayerInstance()) return; - mWifiLayer.forgetNetwork(mState); - } - - private void handleConnect() { - if (!replaceStateWithWifiLayerInstance()) { - Log.w(TAG, "Assuming connecting to a new network."); - } - - if (mState.isEnterprise()) { - if(!mState.configured) { - updateEnterpriseFields(); - } - } - updatePasswordField(); - - mWifiLayer.connectToNetwork(mState); - } - - /* - * If the network is secured and they haven't entered a password, popup an - * error. Allow empty passwords if the state already has a password set - * (since in that scenario, an empty password means keep the old password). - */ - private void updatePasswordField() { - - String password = getEnteredPassword(); - boolean passwordIsEmpty = TextUtils.isEmpty(password); - /* - * When 'retry password', they can not enter a blank password. In any - * other mode, we let them enter a blank password if the state already - * has a password. - */ - if (passwordIsEmpty && (!mState.hasPassword() || - mMode == MODE_RETRY_PASSWORD) && - (mState.security != null) && - !mState.security.equals(AccessPointState.OPEN) && - !mState.isEnterprise()) { - new AlertDialog.Builder(getContext()) - .setTitle(R.string.error_title) - .setIcon(android.R.drawable.ic_dialog_alert) - .setMessage(R.string.wifi_password_incorrect_error) - .setPositiveButton(android.R.string.ok, null) - .show(); - return; - } - - if (!passwordIsEmpty) { - mState.setPassword(password); - } - } - - private void handleSave() { - replaceStateWithWifiLayerInstance(); - - String ssid = mSsidEdit.getText().toString(); - String password = mPasswordEdit.getText().toString(); - - mState.setSsid(ssid); - - int securityType = getSecurityTypeFromSpinner(); - - if (!TextUtils.isEmpty(password) && (securityType != SECURITY_WEP)) { - mState.setPassword(password); - } - - switch (securityType) { - case SECURITY_PSK: { - mState.setSecurity(AccessPointState.PSK); - break; - } - - case SECURITY_AUTO: { - break; - } - - case SECURITY_WEP: { - mState.setSecurity(AccessPointState.WEP); - mState.setPassword(password, WEP_TYPE_VALUES[ - mWepTypeSpinner.getSelectedItemPosition()]); - break; - } - - case SECURITY_EAP: - mState.setSecurity(AccessPointState.EAP); - break; - - case SECURITY_NONE: - default: - mState.setSecurity(AccessPointState.OPEN); - break; - } - - if (mState.isEnterprise() && !mState.configured) { - updateEnterpriseFields(); - } - - if (!mWifiLayer.saveNetwork(mState)) { - return; - } - - // Connect right away if they've touched it - if (!mWifiLayer.connectToNetwork(mState)) { - return; - } - - } - - private int getSelectionIndex(String[] array, String selection) { - if(selection != null) { - for (int i = 0 ; i < array.length ; i++) { - if (selection.contains(array[i])) return i; - } - } - return 0; - } - - private int getSelectionIndex(int arrayResId, String selection) { - return getSelectionIndex( - getContext().getResources().getStringArray(arrayResId), selection); - } - - private void updateEnterpriseFields() { - int i; - String value; - for (i = AccessPointState.IDENTITY ; - i <= AccessPointState.ANONYMOUS_IDENTITY ; i++) { - value = mEnterpriseTextFields[i].getText().toString(); - if (!TextUtils.isEmpty(value)) { - mState.setEnterpriseField(i, value); - } - } - Spinner spinner = mClientCertSpinner; - int index = spinner.getSelectedItemPosition(); - if (index != (spinner.getCount() - 1)) { - String key = (String) spinner.getSelectedItem(); - mState.setEnterpriseField(AccessPointState.CLIENT_CERT, - KEYSTORE_HEADER + Credentials.USER_CERTIFICATE + key); - mState.setEnterpriseField(AccessPointState.PRIVATE_KEY, - KEYSTORE_HEADER + Credentials.USER_PRIVATE_KEY + key); - } - spinner = mCaCertSpinner; - index = spinner.getSelectedItemPosition(); - if (index != (spinner.getCount() - 1)) { - String key = (String) spinner.getSelectedItem(); - mState.setEnterpriseField(AccessPointState.CA_CERT, - KEYSTORE_HEADER + Credentials.CA_CERTIFICATE + key); - } - mState.setSecurity(AccessPointState.EAP); - mState.setEap(mEapSpinner.getSelectedItemPosition()); - mState.setPhase2((String) mPhase2Spinner.getSelectedItem()); - } - - /** - * Replaces our {@link #mState} with the equal WifiLayer instance. This is useful after - * we unparceled the state previously and before we are calling methods on {@link #mWifiLayer}. - * - * @return Whether WifiLayer was able to find an equal state in its set. - */ - private boolean replaceStateWithWifiLayerInstance() { - AccessPointState state = mWifiLayer.getWifiLayerApInstance(mState); - if (state == null) { - return false; - } - - mState = state; - return true; - } - - private int getSecurityTypeFromSpinner() { - int position = mSecuritySpinner.getSelectedItemPosition(); - // If there is no AUTO choice, the position needs 1 added to get - // to the proper spinner position -> security constants mapping - return mAutoSecurityAllowed ? position : position + 1; - } - - private String getEnteredPassword() { - return mPasswordEdit != null ? mPasswordEdit.getText().toString() : null; - } - - /** - * Call the one you want to hide first. - */ - private void setWepVisible(boolean visible) { - setGenericPasswordVisible(visible); - int visibility = visible ? View.VISIBLE : View.GONE; - mWepTypeSpinner.setVisibility(visibility); - } - - /** - * @see #setWepVisible(boolean) - */ - private void setGenericPasswordVisible(boolean visible) { - int visibility = visible ? View.VISIBLE : View.GONE; - mPasswordText.setVisibility(visibility); - mPasswordEdit.setVisibility(visibility); - mShowPasswordCheckBox.setVisibility(visibility); - } - - private void setEnterpriseFieldsVisible(boolean visible) { - int visibility = visible ? View.VISIBLE : View.GONE; - mEnterpriseView.setVisibility(visibility); - if (visible) { - setWepVisible(false); - } - if (mMode != MODE_CONFIGURE) { - mSsidText.setVisibility(View.GONE); - mSsidEdit.setVisibility(View.GONE); - mSecurityText.setVisibility(View.GONE); - mSecuritySpinner.setVisibility(View.GONE); - } - } - - public void onItemSelected(AdapterView parent, View view, int position, long id) { - if (parent == mSecuritySpinner) { - handleSecurityChange(getSecurityTypeFromSpinner()); - } - } - - public void onNothingSelected(AdapterView parent) { - } - - private void handleSecurityChange(int security) { - setEnterpriseFieldsVisible(false); - switch (security) { - - case SECURITY_NONE: { - setWepVisible(false); - setGenericPasswordVisible(false); - break; - } - - case SECURITY_WEP: { - setGenericPasswordVisible(false); - setWepVisible(true); - updatePasswordCaption(AccessPointState.WEP); - break; - } - - case SECURITY_AUTO: { - setWepVisible(false); - setGenericPasswordVisible(mState.hasSecurity()); - // Shows the generic 'wireless password' - updatePasswordCaption(AccessPointState.PSK); - break; - } - - case SECURITY_PSK: { - setWepVisible(false); - setGenericPasswordVisible(true); - // Both WPA and WPA2 show the same caption, so either is ok - updatePasswordCaption(AccessPointState.PSK); - break; - } - case SECURITY_EAP: { - // Unlock the keystore if it is not unlocked yet. - if (mKeyStore.test() != KeyStore.NO_ERROR) { - Credentials.getInstance().unlock(getContext()); - return; - } - enableEnterpriseFields(); - break; - } - } - } - - private static int getSignalResId(int signal) { - switch (WifiManager.calculateSignalLevel(signal, 4)) { - case 0: { - return R.string.wifi_signal_0; - } - case 1: { - return R.string.wifi_signal_1; - } - case 2: { - return R.string.wifi_signal_2; - } - case 3: { - return R.string.wifi_signal_3; - } - } - - return 0; - } - - - public void onClick(View v) { - if (v == mShowPasswordCheckBox) { - setShowPassword(mShowPasswordCheckBox.isChecked()); - } - } - - private void setShowPassword(boolean showPassword) { - if (mPasswordEdit != null) { - mPasswordEdit.setInputType(InputType.TYPE_CLASS_TEXT | - (showPassword ? InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD - : InputType.TYPE_TEXT_VARIATION_PASSWORD)); - } - } - -} |