summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/wifi/WifiConfigController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/wifi/WifiConfigController.java')
-rw-r--r--src/com/android/settings/wifi/WifiConfigController.java355
1 files changed, 216 insertions, 139 deletions
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 55dc033..e6dd9c7 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -18,24 +18,28 @@ package com.android.settings.wifi;
import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID;
+import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Resources;
+import android.net.IpConfiguration;
+import android.net.IpConfiguration.IpAssignment;
+import android.net.IpConfiguration.ProxySettings;
import android.net.LinkAddress;
-import android.net.LinkProperties;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkUtils;
-import android.net.ProxyProperties;
+import android.net.ProxyInfo;
import android.net.RouteInfo;
+import android.net.StaticIpConfiguration;
+import android.net.Uri;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.AuthAlgorithm;
-import android.net.wifi.WifiConfiguration.IpAssignment;
import android.net.wifi.WifiConfiguration.KeyMgmt;
-import android.net.wifi.WifiConfiguration.ProxySettings;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiEnterpriseConfig.Eap;
import android.net.wifi.WifiEnterpriseConfig.Phase2;
import android.net.wifi.WifiInfo;
import android.os.Handler;
+import android.os.UserHandle;
import android.security.Credentials;
import android.security.KeyStore;
import android.text.Editable;
@@ -59,6 +63,7 @@ import com.android.settings.ProxySelector;
import com.android.settings.R;
import java.net.InetAddress;
+import java.net.Inet4Address;
import java.util.Iterator;
/**
@@ -67,36 +72,12 @@ import java.util.Iterator;
*/
public class WifiConfigController implements TextWatcher,
AdapterView.OnItemSelectedListener, OnCheckedChangeListener {
+ private static final String TAG = "WifiConfigController";
+
private final WifiConfigUiBase mConfigUi;
private final View mView;
private final AccessPoint mAccessPoint;
- private boolean mEdit;
-
- private TextView mSsidView;
-
- // e.g. AccessPoint.SECURITY_NONE
- private int mAccessPointSecurity;
- private TextView mPasswordView;
-
- private String unspecifiedCert = "unspecified";
- private static final int unspecifiedCertIndex = 0;
-
- /* Phase2 methods supported by PEAP are limited */
- private final ArrayAdapter<String> PHASE2_PEAP_ADAPTER;
- /* Full list of phase2 methods */
- private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
-
- private Spinner mSecuritySpinner;
- private Spinner mEapMethodSpinner;
- private Spinner mEapCaCertSpinner;
- private Spinner mPhase2Spinner;
- // Associated with mPhase2Spinner, one of PHASE2_FULL_ADAPTER or PHASE2_PEAP_ADAPTER
- private ArrayAdapter<String> mPhase2Adapter;
- private Spinner mEapUserCertSpinner;
- private TextView mEapIdentityView;
- private TextView mEapAnonymousView;
-
/* This value comes from "wifi_ip_settings" resource array */
private static final int DHCP = 0;
private static final int STATIC_IP = 1;
@@ -104,6 +85,7 @@ public class WifiConfigController implements TextWatcher,
/* These values come from "wifi_proxy_settings" resource array */
public static final int PROXY_NONE = 0;
public static final int PROXY_STATIC = 1;
+ public static final int PROXY_PAC = 2;
/* These values come from "wifi_eap_method" resource array */
public static final int WIFI_EAP_METHOD_PEAP = 0;
@@ -116,7 +98,32 @@ public class WifiConfigController implements TextWatcher,
public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 1;
public static final int WIFI_PEAP_PHASE2_GTC = 2;
- private static final String TAG = "WifiConfigController";
+ /* Phase2 methods supported by PEAP are limited */
+ private final ArrayAdapter<String> PHASE2_PEAP_ADAPTER;
+ /* Full list of phase2 methods */
+ private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
+
+ // True when this instance is used in SetupWizard XL context.
+ private final boolean mInXlSetupWizard;
+
+ private final Handler mTextViewChangedHandler;
+
+ // e.g. AccessPoint.SECURITY_NONE
+ private int mAccessPointSecurity;
+ private TextView mPasswordView;
+
+ private String unspecifiedCert = "unspecified";
+ private static final int unspecifiedCertIndex = 0;
+
+ private Spinner mSecuritySpinner;
+ private Spinner mEapMethodSpinner;
+ private Spinner mEapCaCertSpinner;
+ private Spinner mPhase2Spinner;
+ // Associated with mPhase2Spinner, one of PHASE2_FULL_ADAPTER or PHASE2_PEAP_ADAPTER
+ private ArrayAdapter<String> mPhase2Adapter;
+ private Spinner mEapUserCertSpinner;
+ private TextView mEapIdentityView;
+ private TextView mEapAnonymousView;
private Spinner mIpSettingsSpinner;
private TextView mIpAddressView;
@@ -129,15 +136,18 @@ public class WifiConfigController implements TextWatcher,
private TextView mProxyHostView;
private TextView mProxyPortView;
private TextView mProxyExclusionListView;
+ private TextView mProxyPacView;
private IpAssignment mIpAssignment = IpAssignment.UNASSIGNED;
private ProxySettings mProxySettings = ProxySettings.UNASSIGNED;
- private LinkProperties mLinkProperties = new LinkProperties();
+ private ProxyInfo mHttpProxy = null;
+ private StaticIpConfiguration mStaticIpConfiguration = null;
- // True when this instance is used in SetupWizard XL context.
- private final boolean mInXlSetupWizard;
+ private String[] mLevels;
+ private boolean mEdit;
+ private TextView mSsidView;
- private final Handler mTextViewChangedHandler;
+ private Context mContext;
public WifiConfigController(
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
@@ -151,20 +161,21 @@ public class WifiConfigController implements TextWatcher,
mEdit = edit;
mTextViewChangedHandler = new Handler();
- final Context context = mConfigUi.getContext();
- final Resources resources = context.getResources();
+ mContext = mConfigUi.getContext();
+ final Resources res = mContext.getResources();
+ mLevels = res.getStringArray(R.array.wifi_signal);
PHASE2_PEAP_ADAPTER = new ArrayAdapter<String>(
- context, android.R.layout.simple_spinner_item,
- context.getResources().getStringArray(R.array.wifi_peap_phase2_entries));
+ mContext, android.R.layout.simple_spinner_item,
+ res.getStringArray(R.array.wifi_peap_phase2_entries));
PHASE2_PEAP_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
PHASE2_FULL_ADAPTER = new ArrayAdapter<String>(
- context, android.R.layout.simple_spinner_item,
- context.getResources().getStringArray(R.array.wifi_phase2_entries));
+ mContext, android.R.layout.simple_spinner_item,
+ res.getStringArray(R.array.wifi_phase2_entries));
PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- unspecifiedCert = context.getString(R.string.wifi_unspecified);
+ unspecifiedCert = mContext.getString(R.string.wifi_unspecified);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -182,9 +193,9 @@ public class WifiConfigController implements TextWatcher,
mView.findViewById(R.id.type_security).setVisibility(View.VISIBLE);
// We want custom layout. The content must be same as the other cases.
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
R.layout.wifi_setup_custom_list_item_1, android.R.id.text1,
- context.getResources().getStringArray(R.array.wifi_security_no_eap));
+ res.getStringArray(R.array.wifi_security_no_eap));
mSecuritySpinner.setAdapter(adapter);
} else {
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
@@ -197,54 +208,34 @@ public class WifiConfigController implements TextWatcher,
.setOnCheckedChangeListener(this);
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
} else {
mConfigUi.setTitle(mAccessPoint.ssid);
ViewGroup group = (ViewGroup) mView.findViewById(R.id.info);
- DetailedState state = mAccessPoint.getState();
- if (state != null) {
- addRow(group, R.string.wifi_status, Summary.get(mConfigUi.getContext(), state));
- }
-
- int level = mAccessPoint.getLevel();
- if (level != -1) {
- String[] signal = resources.getStringArray(R.array.wifi_signal);
- addRow(group, R.string.wifi_signal, signal[level]);
- }
-
- WifiInfo info = mAccessPoint.getInfo();
- if (info != null && info.getLinkSpeed() != -1) {
- addRow(group, R.string.wifi_speed, info.getLinkSpeed() + WifiInfo.LINK_SPEED_UNITS);
- }
-
- addRow(group, R.string.wifi_security, mAccessPoint.getSecurityString(false));
-
boolean showAdvancedFields = false;
if (mAccessPoint.networkId != INVALID_NETWORK_ID) {
WifiConfiguration config = mAccessPoint.getConfig();
- if (config.ipAssignment == IpAssignment.STATIC) {
+ if (config.getIpAssignment() == IpAssignment.STATIC) {
mIpSettingsSpinner.setSelection(STATIC_IP);
showAdvancedFields = true;
+ // Display IP address.
+ StaticIpConfiguration staticConfig = config.getStaticIpConfiguration();
+ if (staticConfig != null && staticConfig.ipAddress != null) {
+ addRow(group, R.string.wifi_ip_address,
+ staticConfig.ipAddress.getAddress().getHostAddress());
+ }
} else {
mIpSettingsSpinner.setSelection(DHCP);
}
- //Display IP addresses
- for(InetAddress a : config.linkProperties.getAddresses()) {
- addRow(group, R.string.wifi_ip_address, a.getHostAddress());
- }
- if (config.proxySettings == ProxySettings.STATIC) {
+ if (config.getProxySettings() == ProxySettings.STATIC) {
mProxySettingsSpinner.setSelection(PROXY_STATIC);
showAdvancedFields = true;
- } else if (config.proxySettings == ProxySettings.PAC) {
- mProxySettingsSpinner.setVisibility(View.GONE);
- TextView textView = (TextView)mView.findViewById(R.id.proxy_pac_info);
- textView.setVisibility(View.VISIBLE);
- textView.setText(context.getString(R.string.proxy_url) +
- config.linkProperties.getHttpProxy().getPacFileUrl());
+ } else if (config.getProxySettings() == ProxySettings.PAC) {
+ mProxySettingsSpinner.setSelection(PROXY_PAC);
showAdvancedFields = true;
} else {
mProxySettingsSpinner.setSelection(PROXY_NONE);
@@ -265,21 +256,62 @@ public class WifiConfigController implements TextWatcher,
}
if (mEdit) {
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_save));
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_save));
} else {
- if (state == null && level != -1) {
- mConfigUi.setSubmitButton(context.getString(R.string.wifi_connect));
+ final DetailedState state = mAccessPoint.getState();
+ final String signalLevel = getSignalString();
+
+ if (state == null && signalLevel != null) {
+ mConfigUi.setSubmitButton(res.getString(R.string.wifi_connect));
} else {
+ if (state != null) {
+ addRow(group, R.string.wifi_status, Summary.get(mConfigUi.getContext(),
+ state));
+ }
+
+ if (signalLevel != null) {
+ addRow(group, R.string.wifi_signal, signalLevel);
+ }
+
+ WifiInfo info = mAccessPoint.getInfo();
+ if (info != null && info.getLinkSpeed() != -1) {
+ addRow(group, R.string.wifi_speed, info.getLinkSpeed()
+ + WifiInfo.LINK_SPEED_UNITS);
+ }
+
+ if (info != null && info.getFrequency() != -1) {
+ final int frequency = info.getFrequency();
+ String band = null;
+
+ if (frequency >= AccessPoint.LOWER_FREQ_24GHZ
+ && frequency < AccessPoint.HIGHER_FREQ_24GHZ) {
+ band = res.getString(R.string.wifi_band_24ghz);
+ } else if (frequency >= AccessPoint.LOWER_FREQ_5GHZ
+ && frequency < AccessPoint.HIGHER_FREQ_5GHZ) {
+ band = res.getString(R.string.wifi_band_5ghz);
+ } else {
+ Log.e(TAG, "Unexpected frequency " + frequency);
+ }
+ if (band != null) {
+ addRow(group, R.string.wifi_frequency, band);
+ }
+ }
+
+ addRow(group, R.string.wifi_security, mAccessPoint.getSecurityString(false));
mView.findViewById(R.id.ip_fields).setVisibility(View.GONE);
}
- if (mAccessPoint.networkId != INVALID_NETWORK_ID) {
- mConfigUi.setForgetButton(context.getString(R.string.wifi_forget));
+ if (mAccessPoint.networkId != INVALID_NETWORK_ID
+ && ActivityManager.getCurrentUser() == UserHandle.USER_OWNER) {
+ mConfigUi.setForgetButton(res.getString(R.string.wifi_forget));
}
}
}
-
- mConfigUi.setCancelButton(context.getString(R.string.wifi_cancel));
+ if (mEdit || (mAccessPoint.getState() == null && mAccessPoint.getLevel() != -1)){
+ mConfigUi.setCancelButton(res.getString(R.string.wifi_cancel));
+ }else{
+ mConfigUi.setCancelButton(res.getString(R.string.wifi_display_options_done));
+ }
if (mConfigUi.getSubmitButton() != null) {
enableSubmitIfAppropriate();
}
@@ -292,6 +324,19 @@ public class WifiConfigController implements TextWatcher,
group.addView(row);
}
+ private String getSignalString(){
+ final int level = mAccessPoint.getLevel();
+
+ return (level > -1 && level < mLevels.length) ? mLevels[level] : null;
+ }
+
+ void hideSubmitButton() {
+ Button submit = mConfigUi.getSubmitButton();
+ if (submit == null) return;
+
+ submit.setVisibility(View.GONE);
+ }
+
/* show submit button if password, ip and proxy settings are valid */
void enableSubmitIfAppropriate() {
Button submit = mConfigUi.getSubmitButton();
@@ -430,31 +475,31 @@ public class WifiConfigController implements TextWatcher,
return null;
}
- config.proxySettings = mProxySettings;
- config.ipAssignment = mIpAssignment;
- config.linkProperties = new LinkProperties(mLinkProperties);
+ config.setIpConfiguration(
+ new IpConfiguration(mIpAssignment, mProxySettings,
+ mStaticIpConfiguration, mHttpProxy));
return config;
}
private boolean ipAndProxyFieldsAreValid() {
- mLinkProperties.clear();
mIpAssignment = (mIpSettingsSpinner != null &&
mIpSettingsSpinner.getSelectedItemPosition() == STATIC_IP) ?
IpAssignment.STATIC : IpAssignment.DHCP;
if (mIpAssignment == IpAssignment.STATIC) {
- int result = validateIpConfigFields(mLinkProperties);
+ mStaticIpConfiguration = new StaticIpConfiguration();
+ int result = validateIpConfigFields(mStaticIpConfiguration);
if (result != 0) {
return false;
}
}
- mProxySettings = (mProxySettingsSpinner != null &&
- mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ?
- ProxySettings.STATIC : ProxySettings.NONE;
-
- if (mProxySettings == ProxySettings.STATIC && mProxyHostView != null) {
+ final int selectedPosition = mProxySettingsSpinner.getSelectedItemPosition();
+ mProxySettings = ProxySettings.NONE;
+ mHttpProxy = null;
+ if (selectedPosition == PROXY_STATIC && mProxyHostView != null) {
+ mProxySettings = ProxySettings.STATIC;
String host = mProxyHostView.getText().toString();
String portStr = mProxyPortView.getText().toString();
String exclusionList = mProxyExclusionListView.getText().toString();
@@ -467,25 +512,41 @@ public class WifiConfigController implements TextWatcher,
result = R.string.proxy_error_invalid_port;
}
if (result == 0) {
- ProxyProperties proxyProperties= new ProxyProperties(host, port, exclusionList);
- mLinkProperties.setHttpProxy(proxyProperties);
+ mHttpProxy = new ProxyInfo(host, port, exclusionList);
} else {
return false;
}
+ } else if (selectedPosition == PROXY_PAC && mProxyPacView != null) {
+ mProxySettings = ProxySettings.PAC;
+ CharSequence uriSequence = mProxyPacView.getText();
+ if (TextUtils.isEmpty(uriSequence)) {
+ return false;
+ }
+ Uri uri = Uri.parse(uriSequence.toString());
+ if (uri == null) {
+ return false;
+ }
+ mHttpProxy = new ProxyInfo(uri);
}
return true;
}
- private int validateIpConfigFields(LinkProperties linkProperties) {
+ private Inet4Address getIPv4Address(String text) {
+ try {
+ return (Inet4Address) NetworkUtils.numericToInetAddress(text);
+ } catch (IllegalArgumentException|ClassCastException e) {
+ return null;
+ }
+ }
+
+ private int validateIpConfigFields(StaticIpConfiguration staticIpConfiguration) {
if (mIpAddressView == null) return 0;
String ipAddr = mIpAddressView.getText().toString();
if (TextUtils.isEmpty(ipAddr)) return R.string.wifi_ip_settings_invalid_ip_address;
- InetAddress inetAddr = null;
- try {
- inetAddr = NetworkUtils.numericToInetAddress(ipAddr);
- } catch (IllegalArgumentException e) {
+ Inet4Address inetAddr = getIPv4Address(ipAddr);
+ if (inetAddr == null) {
return R.string.wifi_ip_settings_invalid_ip_address;
}
@@ -495,7 +556,7 @@ public class WifiConfigController implements TextWatcher,
if (networkPrefixLength < 0 || networkPrefixLength > 32) {
return R.string.wifi_ip_settings_invalid_network_prefix_length;
}
- linkProperties.addLinkAddress(new LinkAddress(inetAddr, networkPrefixLength));
+ staticIpConfiguration.ipAddress = new LinkAddress(inetAddr, networkPrefixLength);
} catch (NumberFormatException e) {
// Set the hint as default after user types in ip address
mNetworkPrefixLengthView.setText(mConfigUi.getContext().getString(
@@ -514,13 +575,11 @@ public class WifiConfigController implements TextWatcher,
} catch (java.net.UnknownHostException u) {
}
} else {
- InetAddress gatewayAddr = null;
- try {
- gatewayAddr = NetworkUtils.numericToInetAddress(gateway);
- } catch (IllegalArgumentException e) {
+ InetAddress gatewayAddr = getIPv4Address(gateway);
+ if (gatewayAddr == null) {
return R.string.wifi_ip_settings_invalid_gateway;
}
- linkProperties.addRoute(new RouteInfo(gatewayAddr));
+ staticIpConfiguration.gateway = gatewayAddr;
}
String dns = mDns1View.getText().toString();
@@ -530,22 +589,20 @@ public class WifiConfigController implements TextWatcher,
//If everything else is valid, provide hint as a default option
mDns1View.setText(mConfigUi.getContext().getString(R.string.wifi_dns1_hint));
} else {
- try {
- dnsAddr = NetworkUtils.numericToInetAddress(dns);
- } catch (IllegalArgumentException e) {
+ dnsAddr = getIPv4Address(dns);
+ if (dnsAddr == null) {
return R.string.wifi_ip_settings_invalid_dns;
}
- linkProperties.addDns(dnsAddr);
+ staticIpConfiguration.dnsServers.add(dnsAddr);
}
if (mDns2View.length() > 0) {
dns = mDns2View.getText().toString();
- try {
- dnsAddr = NetworkUtils.numericToInetAddress(dns);
- } catch (IllegalArgumentException e) {
+ dnsAddr = getIPv4Address(dns);
+ if (dnsAddr == null) {
return R.string.wifi_ip_settings_invalid_dns;
}
- linkProperties.addDns(dnsAddr);
+ staticIpConfiguration.dnsServers.add(dnsAddr);
}
return 0;
}
@@ -756,28 +813,26 @@ public class WifiConfigController implements TextWatcher,
mDns2View.addTextChangedListener(this);
}
if (config != null) {
- LinkProperties linkProperties = config.linkProperties;
- Iterator<LinkAddress> iterator = linkProperties.getLinkAddresses().iterator();
- if (iterator.hasNext()) {
- LinkAddress linkAddress = iterator.next();
- mIpAddressView.setText(linkAddress.getAddress().getHostAddress());
- mNetworkPrefixLengthView.setText(Integer.toString(linkAddress
- .getNetworkPrefixLength()));
- }
+ StaticIpConfiguration staticConfig = config.getStaticIpConfiguration();
+ if (staticConfig != null) {
+ if (staticConfig.ipAddress != null) {
+ mIpAddressView.setText(
+ staticConfig.ipAddress.getAddress().getHostAddress());
+ mNetworkPrefixLengthView.setText(Integer.toString(staticConfig.ipAddress
+ .getNetworkPrefixLength()));
+ }
- for (RouteInfo route : linkProperties.getRoutes()) {
- if (route.isDefaultRoute()) {
- mGatewayView.setText(route.getGateway().getHostAddress());
- break;
+ if (staticConfig.gateway != null) {
+ mGatewayView.setText(staticConfig.gateway.getHostAddress());
}
- }
- Iterator<InetAddress> dnsIterator = linkProperties.getDnses().iterator();
- if (dnsIterator.hasNext()) {
- mDns1View.setText(dnsIterator.next().getHostAddress());
- }
- if (dnsIterator.hasNext()) {
- mDns2View.setText(dnsIterator.next().getHostAddress());
+ Iterator<InetAddress> dnsIterator = staticConfig.dnsServers.iterator();
+ if (dnsIterator.hasNext()) {
+ mDns1View.setText(dnsIterator.next().getHostAddress());
+ }
+ if (dnsIterator.hasNext()) {
+ mDns2View.setText(dnsIterator.next().getHostAddress());
+ }
}
}
} else {
@@ -795,8 +850,9 @@ public class WifiConfigController implements TextWatcher,
}
if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) {
- mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.VISIBLE);
- mView.findViewById(R.id.proxy_fields).setVisibility(View.VISIBLE);
+ setVisibility(R.id.proxy_warning_limited_support, View.VISIBLE);
+ setVisibility(R.id.proxy_fields, View.VISIBLE);
+ setVisibility(R.id.proxy_pac_field, View.GONE);
if (mProxyHostView == null) {
mProxyHostView = (TextView) mView.findViewById(R.id.proxy_hostname);
mProxyHostView.addTextChangedListener(this);
@@ -806,20 +862,41 @@ public class WifiConfigController implements TextWatcher,
mProxyExclusionListView.addTextChangedListener(this);
}
if (config != null) {
- ProxyProperties proxyProperties = config.linkProperties.getHttpProxy();
+ ProxyInfo proxyProperties = config.getHttpProxy();
if (proxyProperties != null) {
mProxyHostView.setText(proxyProperties.getHost());
mProxyPortView.setText(Integer.toString(proxyProperties.getPort()));
- mProxyExclusionListView.setText(proxyProperties.getExclusionList());
+ mProxyExclusionListView.setText(proxyProperties.getExclusionListAsString());
+ }
+ }
+ } else if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_PAC) {
+ setVisibility(R.id.proxy_warning_limited_support, View.GONE);
+ setVisibility(R.id.proxy_fields, View.GONE);
+ setVisibility(R.id.proxy_pac_field, View.VISIBLE);
+
+ if (mProxyPacView == null) {
+ mProxyPacView = (TextView) mView.findViewById(R.id.proxy_pac);
+ mProxyPacView.addTextChangedListener(this);
+ }
+ if (config != null) {
+ ProxyInfo proxyInfo = config.getHttpProxy();
+ if (proxyInfo != null) {
+ mProxyPacView.setText(proxyInfo.getPacFileUrl().toString());
}
}
} else {
- mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.GONE);
- mView.findViewById(R.id.proxy_fields).setVisibility(View.GONE);
+ setVisibility(R.id.proxy_warning_limited_support, View.GONE);
+ setVisibility(R.id.proxy_fields, View.GONE);
+ setVisibility(R.id.proxy_pac_field, View.GONE);
}
}
-
+ private void setVisibility(int id, int visibility) {
+ final View v = mView.findViewById(id);
+ if (v != null) {
+ v.setVisibility(visibility);
+ }
+ }
private void loadCertificates(Spinner spinner, String prefix) {
final Context context = mConfigUi.getContext();