summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ApnEditor.java
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2010-12-29 15:52:41 -0800
committerLorenzo Colitti <lorenzo@google.com>2011-02-04 13:17:15 -0800
commita7e587fc8d0bcf67fd387c5f9b58b1063c217ae5 (patch)
treed169f07acca7c333ce817d5e21b6aff9cb634e55 /src/com/android/settings/ApnEditor.java
parent5ac151ccec75fc1eee4d0b606b126a5b18582c32 (diff)
downloadpackages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.zip
packages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.tar.gz
packages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.tar.bz2
Support configuring the protocol in APN settings.
Change-Id: I435061a631bdb2f58935af607abf8cd7c5d252ba
Diffstat (limited to 'src/com/android/settings/ApnEditor.java')
-rw-r--r--src/com/android/settings/ApnEditor.java44
1 files changed, 43 insertions, 1 deletions
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index 9328c14..f738823 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -48,6 +48,7 @@ public class ApnEditor extends PreferenceActivity
private final static String SAVED_POS = "pos";
private final static String KEY_AUTH_TYPE = "auth_type";
+ private final static String KEY_PROTOCOL = "apn_protocol";
private static final int MENU_DELETE = Menu.FIRST;
private static final int MENU_SAVE = Menu.FIRST + 1;
@@ -69,6 +70,7 @@ public class ApnEditor extends PreferenceActivity
private EditTextPreference mMmsPort;
private ListPreference mAuthType;
private EditTextPreference mApnType;
+ private ListPreference mProtocol;
private String mCurMnc;
private String mCurMcc;
@@ -99,6 +101,7 @@ public class ApnEditor extends PreferenceActivity
Telephony.Carriers.MMSPORT, // 13
Telephony.Carriers.AUTH_TYPE, // 14
Telephony.Carriers.TYPE, // 15
+ Telephony.Carriers.PROTOCOL, // 16
};
private static final int ID_INDEX = 0;
@@ -116,6 +119,7 @@ public class ApnEditor extends PreferenceActivity
private static final int MMSPORT_INDEX = 13;
private static final int AUTH_TYPE_INDEX = 14;
private static final int TYPE_INDEX = 15;
+ private static final int PROTOCOL_INDEX = 16;
@Override
@@ -139,9 +143,12 @@ public class ApnEditor extends PreferenceActivity
mMnc = (EditTextPreference) findPreference("apn_mnc");
mApnType = (EditTextPreference) findPreference("apn_type");
- mAuthType = (ListPreference) findPreference("auth_type");
+ mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE);
mAuthType.setOnPreferenceChangeListener(this);
+ mProtocol = (ListPreference) findPreference(KEY_PROTOCOL);
+ mProtocol.setOnPreferenceChangeListener(this);
+
mRes = getResources();
final Intent intent = getIntent();
@@ -238,6 +245,7 @@ public class ApnEditor extends PreferenceActivity
mAuthType.setValue(null);
}
+ mProtocol.setValue(mCursor.getString(PROTOCOL_INDEX));
}
mName.setSummary(checkNull(mName.getText()));
@@ -264,6 +272,28 @@ public class ApnEditor extends PreferenceActivity
} else {
mAuthType.setSummary(sNotSet);
}
+
+ mProtocol.setSummary(
+ checkNull(protocolDescription(mProtocol.getValue())));
+ }
+
+ /**
+ * Returns the UI choice (e.g., "IPv4/IPv6") corresponding to the given
+ * raw value of the protocol preference (e.g., "IPV4V6"). If unknown,
+ * return null.
+ */
+ private String protocolDescription(String raw) {
+ int protocolIndex = mProtocol.findIndexOfValue(raw);
+ if (protocolIndex == -1) {
+ return null;
+ } else {
+ String[] values = mRes.getStringArray(R.array.apn_protocol_entries);
+ try {
+ return values[protocolIndex];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ return null;
+ }
+ }
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -278,6 +308,16 @@ public class ApnEditor extends PreferenceActivity
} catch (NumberFormatException e) {
return false;
}
+ return true;
+ }
+
+ if (KEY_PROTOCOL.equals(key)) {
+ String protocol = protocolDescription((String) newValue);
+ if (protocol == null) {
+ return false;
+ }
+ mProtocol.setSummary(protocol);
+ mProtocol.setValue((String) newValue);
}
return true;
}
@@ -389,6 +429,8 @@ public class ApnEditor extends PreferenceActivity
values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal));
}
+ values.put(Telephony.Carriers.PROTOCOL, checkNotSet(mProtocol.getValue()));
+
values.put(Telephony.Carriers.TYPE, checkNotSet(mApnType.getText()));
values.put(Telephony.Carriers.MCC, mcc);