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
This commit is contained in:
Amith Yamasani
2011-03-02 11:25:04 -08:00
parent 3400dda246
commit 84a042c6e9
7 changed files with 84 additions and 193 deletions

View File

@@ -1179,12 +1179,6 @@
<string name="wifi_tether_enabled_subtext">Portable hotspot <xliff:g id="network_ssid">%1$s</xliff:g> active</string> <string name="wifi_tether_enabled_subtext">Portable hotspot <xliff:g id="network_ssid">%1$s</xliff:g> active</string>
<!-- Subtext for wifi tether checkbox on failure --> <!-- Subtext for wifi tether checkbox on failure -->
<string name="wifi_tether_failed_subtext">Portable Wi-Fi hotspot error</string> <string name="wifi_tether_failed_subtext">Portable Wi-Fi hotspot error</string>
<!-- Label for Wi-fi tether settings preference -->
<string name="wifi_tether_settings_text">Portable Wi-Fi hotspot settings</string>
<!-- Subtext for Wi-fi tether settings preference -->
<string name="wifi_tether_settings_subtext">Set up &amp; manage portable Wi-Fi hotspot</string>
<!-- Title of the Wi-fi settings screen -->
<string name="wifi_tether_settings_title">Portable Wi-Fi hotspot settings</string>
<!-- Used to open the ssid and security dialog for Wifi Access Point --> <!-- Used to open the ssid and security dialog for Wifi Access Point -->
<string name="wifi_tether_configure_ap_text">Configure Wi-Fi hotspot</string> <string name="wifi_tether_configure_ap_text">Configure Wi-Fi hotspot</string>
<!-- Subtext on configuration preference to indicate SSID and security chosen --> <!-- Subtext on configuration preference to indicate SSID and security chosen -->

View File

@@ -26,12 +26,10 @@
android:title="@string/wifi_tether_checkbox_text" android:title="@string/wifi_tether_checkbox_text"
android:persistent="false" /> android:persistent="false" />
<PreferenceScreen <Preference
android:fragment="com.android.settings.wifi.WifiApSettings" android:key="wifi_ap_ssid_and_security"
android:key="wifi_ap_settings" android:title="@string/wifi_tether_configure_ap_text"
android:title="@string/wifi_tether_settings_text" android:persistent="false" />
android:summary="@string/wifi_tether_settings_subtext" >
</PreferenceScreen>
<CheckBoxPreference <CheckBoxPreference
android:key="enable_bluetooth_tethering" android:key="enable_bluetooth_tethering"

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/wifi_tether_settings_title">
<CheckBoxPreference
android:key="enable_wifi_ap"
android:title="@string/wifi_tether_checkbox_text"
android:persistent="false" />
<Preference
android:key="wifi_ap_ssid_and_security"
android:title="@string/wifi_tether_configure_ap_text"
android:persistent="false" />
</PreferenceScreen>

View File

@@ -17,6 +17,7 @@
package com.android.settings; package com.android.settings;
import com.android.settings.wifi.WifiApEnabler; import com.android.settings.wifi.WifiApEnabler;
import com.android.settings.wifi.WifiApDialog;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
@@ -26,10 +27,13 @@ import android.bluetooth.BluetoothPan;
import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
@@ -46,7 +50,8 @@ import java.util.Locale;
/* /*
* Displays preferences for Tethering. * 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 USB_TETHER_SETTINGS = "usb_tether_settings";
private static final String ENABLE_WIFI_AP = "enable_wifi_ap"; private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
@@ -59,6 +64,7 @@ public class TetherSettings extends SettingsPreferenceFragment {
private static final String HELP_PATH = "html/%y%z/tethering_help.html"; 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_TETHER_HELP = 1;
private static final int DIALOG_AP_SETTINGS = 2;
private WebView mView; private WebView mView;
private CheckBoxPreference mUsbTether; private CheckBoxPreference mUsbTether;
@@ -78,6 +84,17 @@ public class TetherSettings extends SettingsPreferenceFragment {
private String[] mBluetoothRegexs; private String[] mBluetoothRegexs;
private BluetoothPan mBluetoothPan; 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 @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
@@ -129,6 +146,30 @@ public class TetherSettings extends SettingsPreferenceFragment {
mWifiApEnabler = new WifiApEnabler(activity, enableWifiAp); mWifiApEnabler = new WifiApEnabler(activity, enableWifiAp);
mView = new WebView(activity); 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 = private BluetoothProfile.ServiceListener mProfileServiceListener =
@@ -186,7 +227,12 @@ public class TetherSettings extends SettingsPreferenceFragment {
.setTitle(R.string.tethering_help_button_text) .setTitle(R.string.tethering_help_button_text)
.setView(mView) .setView(mView)
.create(); .create();
} else if (id == DIALOG_AP_SETTINGS) {
final Activity activity = getActivity();
mDialog = new WifiApDialog(activity, this, mWifiConfig);
return mDialog;
} }
return null; return null;
} }
@@ -446,6 +492,8 @@ public class TetherSettings extends SettingsPreferenceFragment {
} else if (preference == mTetherHelp) { } else if (preference == mTetherHelp) {
showDialog(DIALOG_TETHER_HELP); showDialog(DIALOG_TETHER_HELP);
return true; return true;
} else if (preference == mCreateNetwork) {
showDialog(DIALOG_AP_SETTINGS);
} }
return super.onPreferenceTreeClick(screen, preference); return super.onPreferenceTreeClick(screen, preference);
@@ -461,4 +509,30 @@ public class TetherSettings extends SettingsPreferenceFragment {
} }
return null; 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]));
}
}
}
} }

View File

@@ -39,16 +39,16 @@ import com.android.settings.R;
* Dialog to configure the SSID and security settings * Dialog to configure the SSID and security settings
* for Access Point operation * for Access Point operation
*/ */
class WifiApDialog extends AlertDialog implements View.OnClickListener, public class WifiApDialog extends AlertDialog implements View.OnClickListener,
TextWatcher, AdapterView.OnItemSelectedListener { TextWatcher, AdapterView.OnItemSelectedListener {
static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE; static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE;
private final DialogInterface.OnClickListener mListener; private final DialogInterface.OnClickListener mListener;
static final int OPEN_INDEX = 0; public static final int OPEN_INDEX = 0;
static final int WPA_INDEX = 1; public static final int WPA_INDEX = 1;
static final int WPA2_INDEX = 2; public static final int WPA2_INDEX = 2;
private View mView; private View mView;
private TextView mSsid; private TextView mSsid;

View File

@@ -152,7 +152,7 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
return false; return false;
} }
void updateConfigSummary(WifiConfiguration wifiConfig) { public void updateConfigSummary(WifiConfiguration wifiConfig) {
String s = mContext.getString( String s = mContext.getString(
com.android.internal.R.string.wifi_tether_configure_ssid_default); com.android.internal.R.string.wifi_tether_configure_ssid_default);
mCheckBox.setSummary(String.format( mCheckBox.setSummary(String.format(

View File

@@ -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]));
}
}
}
}