diff options
author | Amith Yamasani <yamasani@google.com> | 2011-03-02 11:25:04 -0800 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2011-03-02 16:31:38 -0800 |
commit | 84a042c6e9ff80d9ddb7b446b0507f6f576bc128 (patch) | |
tree | 9b160108c58b72795d49a9aa60509073a7c8463f /src/com/android/settings/TetherSettings.java | |
parent | 3400dda246112748643b6f68629a5cb77c611b19 (diff) | |
download | packages_apps_Settings-84a042c6e9ff80d9ddb7b446b0507f6f576bc128.zip packages_apps_Settings-84a042c6e9ff80d9ddb7b446b0507f6f576bc128.tar.gz packages_apps_Settings-84a042c6e9ff80d9ddb7b446b0507f6f576bc128.tar.bz2 |
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
Diffstat (limited to 'src/com/android/settings/TetherSettings.java')
-rw-r--r-- | src/com/android/settings/TetherSettings.java | 76 |
1 files changed, 75 insertions, 1 deletions
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.BluetoothPan; 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 @@ import java.util.Locale; /* * 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 @@ public class TetherSettings extends SettingsPreferenceFragment { 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 @@ public class TetherSettings extends SettingsPreferenceFragment { 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 @@ public class TetherSettings extends SettingsPreferenceFragment { 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 @@ public class TetherSettings extends SettingsPreferenceFragment { .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 @@ public class TetherSettings extends SettingsPreferenceFragment { } 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 @@ public class TetherSettings extends SettingsPreferenceFragment { } 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])); + } + } + } } |