Move up wifi tethering settings one level.
Bug: 3249998
Remove an extra level of menu by moving the Configure Wi-Fi hotspot preference to the Tethering settings page.
Change-Id: I20b67ae1ddd7e9967c99ff6a8039799be792382f
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index af83157..39f0535 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -17,6 +17,7 @@
package com.android.settings;
import com.android.settings.wifi.WifiApEnabler;
+import com.android.settings.wifi.WifiApDialog;
import android.app.Activity;
import android.app.AlertDialog;
@@ -26,10 +27,13 @@
import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.AssetManager;
import android.net.ConnectivityManager;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.preference.CheckBoxPreference;
@@ -46,7 +50,8 @@
/*
* Displays preferences for Tethering.
*/
-public class TetherSettings extends SettingsPreferenceFragment {
+public class TetherSettings extends SettingsPreferenceFragment
+ implements DialogInterface.OnClickListener {
private static final String USB_TETHER_SETTINGS = "usb_tether_settings";
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
@@ -59,6 +64,7 @@
private static final String HELP_PATH = "html/%y%z/tethering_help.html";
private static final int DIALOG_TETHER_HELP = 1;
+ private static final int DIALOG_AP_SETTINGS = 2;
private WebView mView;
private CheckBoxPreference mUsbTether;
@@ -78,6 +84,17 @@
private String[] mBluetoothRegexs;
private BluetoothPan mBluetoothPan;
+ private static final String WIFI_AP_SSID_AND_SECURITY = "wifi_ap_ssid_and_security";
+ private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
+
+ private String[] mSecurityType;
+ private Preference mCreateNetwork;
+ private CheckBoxPreference mEnableWifiAp;
+
+ private WifiApDialog mDialog;
+ private WifiManager mWifiManager;
+ private WifiConfiguration mWifiConfig = null;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -129,6 +146,30 @@
mWifiApEnabler = new WifiApEnabler(activity, enableWifiAp);
mView = new WebView(activity);
+
+ initWifiTethering();
+ }
+
+ private void initWifiTethering() {
+ final Activity activity = getActivity();
+ mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
+ mWifiConfig = mWifiManager.getWifiApConfiguration();
+ mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);
+
+ mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
+ mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
+
+ if (mWifiConfig == null) {
+ final String s = activity.getString(
+ com.android.internal.R.string.wifi_tether_configure_ssid_default);
+ mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
+ s, mSecurityType[WifiApDialog.OPEN_INDEX]));
+ } else {
+ int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
+ mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
+ mWifiConfig.SSID,
+ mSecurityType[index]));
+ }
}
private BluetoothProfile.ServiceListener mProfileServiceListener =
@@ -186,7 +227,12 @@
.setTitle(R.string.tethering_help_button_text)
.setView(mView)
.create();
+ } else if (id == DIALOG_AP_SETTINGS) {
+ final Activity activity = getActivity();
+ mDialog = new WifiApDialog(activity, this, mWifiConfig);
+ return mDialog;
}
+
return null;
}
@@ -446,6 +492,8 @@
} else if (preference == mTetherHelp) {
showDialog(DIALOG_TETHER_HELP);
return true;
+ } else if (preference == mCreateNetwork) {
+ showDialog(DIALOG_AP_SETTINGS);
}
return super.onPreferenceTreeClick(screen, preference);
@@ -461,4 +509,30 @@
}
return null;
}
+
+ public void onClick(DialogInterface dialogInterface, int button) {
+ if (button == DialogInterface.BUTTON_POSITIVE) {
+ mWifiConfig = mDialog.getConfig();
+ if (mWifiConfig != null) {
+ /**
+ * if soft AP is running, bring up with new config
+ * else update the configuration alone
+ */
+ if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
+ mWifiManager.setWifiApEnabled(mWifiConfig, true);
+ /**
+ * There is no tether notification on changing AP
+ * configuration. Update status with new config.
+ */
+ mWifiApEnabler.updateConfigSummary(mWifiConfig);
+ } else {
+ mWifiManager.setWifiApConfiguration(mWifiConfig);
+ }
+ int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
+ mCreateNetwork.setSummary(String.format(getActivity().getString(CONFIG_SUBTEXT),
+ mWifiConfig.SSID,
+ mSecurityType[index]));
+ }
+ }
+ }
}
diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java
index 29c1a5d..211e85d 100644
--- a/src/com/android/settings/wifi/WifiApDialog.java
+++ b/src/com/android/settings/wifi/WifiApDialog.java
@@ -39,16 +39,16 @@
* Dialog to configure the SSID and security settings
* for Access Point operation
*/
-class WifiApDialog extends AlertDialog implements View.OnClickListener,
+public class WifiApDialog extends AlertDialog implements View.OnClickListener,
TextWatcher, AdapterView.OnItemSelectedListener {
static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE;
private final DialogInterface.OnClickListener mListener;
- static final int OPEN_INDEX = 0;
- static final int WPA_INDEX = 1;
- static final int WPA2_INDEX = 2;
+ public static final int OPEN_INDEX = 0;
+ public static final int WPA_INDEX = 1;
+ public static final int WPA2_INDEX = 2;
private View mView;
private TextView mSsid;
diff --git a/src/com/android/settings/wifi/WifiApEnabler.java b/src/com/android/settings/wifi/WifiApEnabler.java
index 982e44e..e4e092c 100644
--- a/src/com/android/settings/wifi/WifiApEnabler.java
+++ b/src/com/android/settings/wifi/WifiApEnabler.java
@@ -152,7 +152,7 @@
return false;
}
- void updateConfigSummary(WifiConfiguration wifiConfig) {
+ public void updateConfigSummary(WifiConfiguration wifiConfig) {
String s = mContext.getString(
com.android.internal.R.string.wifi_tether_configure_ssid_default);
mCheckBox.setSummary(String.format(
diff --git a/src/com/android/settings/wifi/WifiApSettings.java b/src/com/android/settings/wifi/WifiApSettings.java
deleted file mode 100644
index ddc3c5c..0000000
--- a/src/com/android/settings/wifi/WifiApSettings.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2010 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 com.android.settings.SettingsPreferenceFragment;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiConfiguration.KeyMgmt;
-import android.net.wifi.WifiManager;
-import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
-
-/*
- * Displays preferences for Tethering.
- */
-public class WifiApSettings extends SettingsPreferenceFragment
- implements DialogInterface.OnClickListener {
-
- private static final String WIFI_AP_SSID_AND_SECURITY = "wifi_ap_ssid_and_security";
- 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 DIALOG_AP_SETTINGS = 1;
-
- private String[] mSecurityType;
- private Preference mCreateNetwork;
- private CheckBoxPreference mEnableWifiAp;
-
- private WifiApDialog mDialog;
- private WifiManager mWifiManager;
- private WifiApEnabler mWifiApEnabler;
- private WifiConfiguration mWifiConfig = null;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.wifi_ap_settings);
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- final Activity activity = getActivity();
-
- mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- mWifiConfig = mWifiManager.getWifiApConfiguration();
- mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);
-
-
-
- mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
- mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
-
- mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp);
-
- if(mWifiConfig == null) {
- final String s = activity.getString(
- com.android.internal.R.string.wifi_tether_configure_ssid_default);
- mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
- s, mSecurityType[WifiApDialog.OPEN_INDEX]));
- } else {
- int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
- mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
- mWifiConfig.SSID,
- mSecurityType[index]));
- }
- }
-
- @Override
- public Dialog onCreateDialog(int id) {
- if (id == DIALOG_AP_SETTINGS) {
- final Activity activity = getActivity();
- mDialog = new WifiApDialog(activity, this, mWifiConfig);
- return mDialog;
- }
- return null;
- }
-
- @Override
- public void onResume() {
- super.onResume();
- mWifiApEnabler.resume();
- }
-
- @Override
- public void onPause() {
- super.onPause();
- mWifiApEnabler.pause();
- }
-
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
- if (preference == mCreateNetwork) {
- showDialog(DIALOG_AP_SETTINGS);
- }
- return true;
- }
-
- public void onClick(DialogInterface dialogInterface, int button) {
- if (button == DialogInterface.BUTTON_POSITIVE) {
- mWifiConfig = mDialog.getConfig();
- if (mWifiConfig != null) {
- /**
- * if soft AP is running, bring up with new config
- * else update the configuration alone
- */
- if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
- mWifiManager.setWifiApEnabled(mWifiConfig, true);
- /**
- * There is no tether notification on changing AP
- * configuration. Update status with new config.
- */
- mWifiApEnabler.updateConfigSummary(mWifiConfig);
- } else {
- mWifiManager.setWifiApConfiguration(mWifiConfig);
- }
- int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
- mCreateNetwork.setSummary(String.format(getActivity().getString(CONFIG_SUBTEXT),
- mWifiConfig.SSID,
- mSecurityType[index]));
- }
- }
- }
-}