summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2010-03-10 08:27:15 -0800
committerIrfan Sheriff <isheriff@google.com>2010-03-16 16:03:13 -0700
commit47ebb7895457160c88592248a2e9049c14e2b625 (patch)
treee4cb8b5f4b96bcaa7cb873642829306d081e3915
parent233880225af70f8ec1d7722bf7bb68a730f7a281 (diff)
downloadpackages_apps_settings-47ebb7895457160c88592248a2e9049c14e2b625.zip
packages_apps_settings-47ebb7895457160c88592248a2e9049c14e2b625.tar.gz
packages_apps_settings-47ebb7895457160c88592248a2e9049c14e2b625.tar.bz2
softAp UI changes
Remove channel settings Add subtext error handling Remove WEP, keep WPA2 only for now Bug: 2413908 Change-Id: Ie867e84a0705f0d2185eeb3a4c86a8227446a338
-rw-r--r--res/values/arrays.xml5
-rw-r--r--res/xml/wifi_ap_settings.xml7
-rw-r--r--src/com/android/settings/TetherSettings.java16
-rw-r--r--src/com/android/settings/wifi/WifiApDialog.java37
-rw-r--r--src/com/android/settings/wifi/WifiApEnabler.java52
-rw-r--r--src/com/android/settings/wifi/WifiApSettings.java76
6 files changed, 70 insertions, 123 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 12eeb68..ed80892 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -228,12 +228,11 @@
</string-array>
<!-- Wi-Fi AP settings. The type of security a Wi-Fi AP supports. -->
+ <!-- Note that adding/removing/moving the items will need wifi settings code change. -->
<string-array name="wifi_ap_security" translatable="false">
<item>Open</item>
<!-- Do not translate. -->
- <item>WEP</item>
- <!-- Do not translate. -->
- <item>WPA/WPA2 PSK</item>
+ <item>WPA2 PSK</item>
</string-array>
<!-- Match this with the constants in WifiDialog. --> <skip />
diff --git a/res/xml/wifi_ap_settings.xml b/res/xml/wifi_ap_settings.xml
index 7c935da..ad21714 100644
--- a/res/xml/wifi_ap_settings.xml
+++ b/res/xml/wifi_ap_settings.xml
@@ -28,11 +28,4 @@
android:title="@string/wifi_tether_configure_ap_text"
android:persistent="false" />
- <!-- TODO: Channel setting will go away -->
- <ListPreference
- android:key="wifi_ap_channel"
- android:dependency="enable_wifi_ap"
- android:title="Channel"
- android:persistent="false" />
-
</PreferenceScreen>
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index eea45c4..5770482 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -26,6 +26,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiConfiguration;
import android.os.Environment;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -54,6 +56,7 @@ public class TetherSettings extends PreferenceActivity {
private PreferenceScreen mWifiApSettings;
private WifiApEnabler mWifiApEnabler;
private PreferenceScreen mTetherHelp;
+ private WifiManager mWifiManager;
private BroadcastReceiver mTetherChangeReceiver;
@@ -76,6 +79,8 @@ public class TetherSettings extends PreferenceActivity {
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
+
mUsbRegexs = cm.getTetherableUsbRegexs();
if (mUsbRegexs.length == 0) {
getPreferenceScreen().removePreference(mUsbTether);
@@ -221,6 +226,17 @@ public class TetherSettings extends PreferenceActivity {
mUsbTether.setEnabled(false);
mUsbTether.setChecked(false);
}
+
+ if (wifiTethered) {
+ WifiConfiguration mWifiConfig = mWifiManager.getWifiApConfiguration();
+ String s = getString(com.android.internal.R.string.wifi_tether_configure_ssid_default);
+ mEnableWifiAp.setSummary(String.format(getString(R.string.wifi_tether_enabled_subtext),
+ (mWifiConfig == null) ? s : mWifiConfig.SSID));
+ }
+
+ if (wifiErrored) {
+ mEnableWifiAp.setSummary(R.string.wifi_error);
+ }
}
@Override
diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java
index 7053d72..b8d4782 100644
--- a/src/com/android/settings/wifi/WifiApDialog.java
+++ b/src/com/android/settings/wifi/WifiApDialog.java
@@ -49,6 +49,9 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
private final DialogInterface.OnClickListener mListener;
+ private static final int OPEN_INDEX = 0;
+ private static final int WPA_INDEX = 1;
+
private View mView;
private TextView mSsid;
private int mSecurityType = AccessPoint.SECURITY_NONE;
@@ -76,22 +79,6 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
config.allowedKeyManagement.set(KeyMgmt.NONE);
return config;
- case AccessPoint.SECURITY_WEP:
- config.allowedKeyManagement.set(KeyMgmt.NONE);
- config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
- if (mPassword.length() != 0) {
- int length = mPassword.length();
- String password = mPassword.getText().toString();
- // WEP-40, WEP-104, and 256-bit WEP (WEP-232?)
- if ((length == 10 || length == 26 || length == 58) &&
- password.matches("[0-9A-Fa-f]*")) {
- config.wepKeys[0] = password;
- } else {
- config.wepKeys[0] = '"' + password + '"';
- }
- }
- return config;
-
case AccessPoint.SECURITY_PSK:
config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
@@ -130,14 +117,18 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
if (mWifiConfig != null) {
mSsid.setText(mWifiConfig.SSID);
switch (mSecurityType) {
- case AccessPoint.SECURITY_WEP:
- mPassword.setText(mWifiConfig.wepKeys[0]);
+ case AccessPoint.SECURITY_NONE:
+ mSecurity.setSelection(OPEN_INDEX);
break;
case AccessPoint.SECURITY_PSK:
- mPassword.setText(mWifiConfig.preSharedKey);
+ String str = mWifiConfig.preSharedKey;
+ if (!str.matches("[0-9A-Fa-f]{64}")) {
+ str = str.substring(1,str.length()-1);
+ }
+ mPassword.setText(str);
+ mSecurity.setSelection(WPA_INDEX);
break;
}
- mSecurity.setSelection(mSecurityType);
}
mSsid.addTextChangedListener(this);
@@ -153,7 +144,6 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
private void validate() {
if ((mSsid != null && mSsid.length() == 0) ||
- (mSecurityType == AccessPoint.SECURITY_WEP && mPassword.length() == 0) ||
(mSecurityType == AccessPoint.SECURITY_PSK && mPassword.length() < 8)) {
getButton(BUTTON_SUBMIT).setEnabled(false);
} else {
@@ -179,7 +169,10 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
}
public void onItemSelected(AdapterView parent, View view, int position, long id) {
- mSecurityType = position;
+ if(position == OPEN_INDEX)
+ mSecurityType = AccessPoint.SECURITY_NONE;
+ else
+ mSecurityType = AccessPoint.SECURITY_PSK;
showSecurityFields();
validate();
}
diff --git a/src/com/android/settings/wifi/WifiApEnabler.java b/src/com/android/settings/wifi/WifiApEnabler.java
index 922b3b2..fc52a7a 100644
--- a/src/com/android/settings/wifi/WifiApEnabler.java
+++ b/src/com/android/settings/wifi/WifiApEnabler.java
@@ -22,7 +22,6 @@ import com.android.settings.WirelessSettings;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.NetworkInfo;
@@ -36,15 +35,13 @@ import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
-public class WifiApEnabler implements Preference.OnPreferenceChangeListener,
- DialogInterface.OnClickListener {
+public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
private final Context mContext;
private final CheckBoxPreference mCheckBox;
private final CharSequence mOriginalSummary;
- private final WifiManager mWifiManager;
+ private WifiManager mWifiManager;
private final IntentFilter mIntentFilter;
- private AlertDialog mAlertDialog = null;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
@@ -75,50 +72,20 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener,
public void pause() {
mContext.unregisterReceiver(mReceiver);
mCheckBox.setOnPreferenceChangeListener(null);
- if (mAlertDialog != null) {
- mAlertDialog.dismiss();
- mAlertDialog = null;
- }
}
- public boolean onPreferenceChange(Preference preference, Object value) {
- boolean enable = (Boolean) value;
-
- if (enable && mWifiManager.isWifiEnabled()) {
- AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
- /**
- * TODO: this alert will go away.
- */
- builder.setMessage("Turning off Wifi client. Enabling Wifi tethering")
- .setCancelable(false)
- .setPositiveButton(android.R.string.ok, this)
- .setNegativeButton(android.R.string.cancel, this);
+ public boolean onPreferenceChange(Preference preference, Object enable) {
- mAlertDialog = builder.create();
- mAlertDialog.show();
+ if (mWifiManager.setWifiApEnabled(null, (Boolean)enable)) {
+ /* Disable here, enabled on receiving success broadcast */
+ mCheckBox.setEnabled(false);
} else {
- setUpAccessPoint(enable);
+ mCheckBox.setSummary(R.string.wifi_error);
}
return false;
}
- public void onClick(DialogInterface dialog, int id) {
- if(id == DialogInterface.BUTTON_POSITIVE ) {
- setUpAccessPoint(true);
- } else if (id == DialogInterface.BUTTON_NEGATIVE) {
- dialog.dismiss();
- mAlertDialog = null;
- }
- }
-
- private void setUpAccessPoint(boolean enable) {
- if (mWifiManager.setWifiApEnabled(null, enable)) {
- mCheckBox.setEnabled(false);
- } else {
- mCheckBox.setSummary(R.string.wifi_error);
- }
- }
private void handleWifiApStateChanged(int state) {
switch (state) {
@@ -127,8 +94,11 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener,
mCheckBox.setEnabled(false);
break;
case WifiManager.WIFI_AP_STATE_ENABLED:
+ /**
+ * Summary on enable is handled by tether
+ * broadcast notice
+ */
mCheckBox.setChecked(true);
- mCheckBox.setSummary(null);
mCheckBox.setEnabled(true);
break;
case WifiManager.WIFI_AP_STATE_DISABLING:
diff --git a/src/com/android/settings/wifi/WifiApSettings.java b/src/com/android/settings/wifi/WifiApSettings.java
index 17900fe..b8fb904 100644
--- a/src/com/android/settings/wifi/WifiApSettings.java
+++ b/src/com/android/settings/wifi/WifiApSettings.java
@@ -30,6 +30,8 @@ import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.util.Log;
import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiConfiguration.AuthAlgorithm;
+import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiManager;
import android.os.Bundle;
@@ -37,14 +39,17 @@ import android.os.Bundle;
* Displays preferences for Tethering.
*/
public class WifiApSettings extends PreferenceActivity
- implements DialogInterface.OnClickListener, Preference.OnPreferenceChangeListener {
+ implements DialogInterface.OnClickListener {
private static final String WIFI_AP_SSID_AND_SECURITY = "wifi_ap_ssid_and_security";
- private static final String WIFI_AP_CHANNEL = "wifi_ap_channel";
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
+ private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
+ private static final int OPEN_INDEX = 0;
+ private static final int WPA_INDEX = 1;
+
+ private String[] mSecurityType;
private Preference mCreateNetwork;
- private ListPreference mChannel;
private CheckBoxPreference mEnableWifiAp;
private WifiApDialog mDialog;
@@ -57,38 +62,26 @@ public class WifiApSettings extends PreferenceActivity
super.onCreate(savedInstanceState);
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
+ mWifiConfig = mWifiManager.getWifiApConfiguration();
+ mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);
addPreferencesFromResource(R.xml.wifi_ap_settings);
mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
- mChannel = (ListPreference) findPreference(WIFI_AP_CHANNEL);
mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
mWifiApEnabler = new WifiApEnabler(this, mEnableWifiAp);
- initChannels();
- }
-
- public void initChannels() {
- mChannel.setOnPreferenceChangeListener(this);
-
- int numChannels = mWifiManager.getNumAllowedChannels();
-
- String[] entries = new String[numChannels];
- String[] entryValues = new String[numChannels];
-
- for (int i = 1; i <= numChannels; i++) {
- entries[i-1] = "Channel "+i;
- entryValues[i-1] = i+"";
+ if(mWifiConfig == null) {
+ String s = getString(com.android.internal.R.string.wifi_tether_configure_ssid_default);
+ mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
+ s, mSecurityType[OPEN_INDEX]));
+ } else {
+ mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
+ mWifiConfig.SSID,
+ mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
+ mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
}
-
- mChannel.setEntries(entries);
- mChannel.setEntryValues(entryValues);
- mChannel.setEnabled(true);
- /**
- * TODO: randomize initial channel chosen
- */
- mChannel.setValue("2");
}
@Override
@@ -120,32 +113,15 @@ public class WifiApSettings extends PreferenceActivity
}
public void onClick(DialogInterface dialogInterface, int button) {
- /**
- * TODO: Needs work
- */
- mWifiConfig = mDialog.getConfig();
-
- if(mWifiConfig.SSID != null)
- mCreateNetwork.setSummary(mWifiConfig.SSID);
-
- /**
- * TODO: set SSID and security
- */
- }
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- /**
- * TODO: Needs work
- */
-
- String key = preference.getKey();
- if (key == null) return true;
+ mWifiConfig = mDialog.getConfig();
- if (key.equals(WIFI_AP_CHANNEL)) {
- int chosenChannel = Integer.parseInt((String) newValue);
- if(newValue != null)
- mChannel.setSummary(newValue.toString());
+ if (button == DialogInterface.BUTTON_POSITIVE && mWifiConfig != null) {
+ mWifiManager.setWifiApEnabled(mWifiConfig, true);
+ mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
+ mWifiConfig.SSID,
+ mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
+ mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
}
- return true;
}
}