diff --git a/res/values/strings.xml b/res/values/strings.xml index ff04cf73f28..c867cc2a5d3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1179,12 +1179,6 @@ Portable hotspot %1$s active Portable Wi-Fi hotspot error - - Portable Wi-Fi hotspot settings - - Set up & manage portable Wi-Fi hotspot - - Portable Wi-Fi hotspot settings Configure Wi-Fi hotspot diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml index f16200db4f2..6c1fa37beb3 100644 --- a/res/xml/tether_prefs.xml +++ b/res/xml/tether_prefs.xml @@ -26,12 +26,10 @@ android:title="@string/wifi_tether_checkbox_text" android:persistent="false" /> - - + - - - - - - - - - diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java index af831576b2d..39f05356ffb 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])); + } + } + } } diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java index 29c1a5df2b2..211e85db857 100644 --- a/src/com/android/settings/wifi/WifiApDialog.java +++ b/src/com/android/settings/wifi/WifiApDialog.java @@ -39,16 +39,16 @@ import com.android.settings.R; * 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 982e44e3c05..e4e092cac0a 100644 --- a/src/com/android/settings/wifi/WifiApEnabler.java +++ b/src/com/android/settings/wifi/WifiApEnabler.java @@ -152,7 +152,7 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener { 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 ddc3c5c145b..00000000000 --- 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])); - } - } - } -}