package com.android.settings.vpn;
import com.android.settings.R;
import android.content.Context;
import android.net.vpn.VpnProfile;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.text.InputType;
import android.text.TextUtils;
import android.text.method.PasswordTransformationMethod;
private static final String KEY_VPN_NAME = "vpn_name";
private EditTextPreference mName;
private EditTextPreference mServerName;
private EditTextPreference mDomainSuffices;
private VpnProfile mProfile;
mProfile = p;
}
return mProfile;
}
Context c = subpanel.getContext();
mName = (EditTextPreference) subpanel.findPreference(KEY_VPN_NAME);
mName.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
Preference pref, Object newValue) {
setName((String) newValue);
return true;
}
});
setName(getProfile().getName());
mName.getEditText().setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
subpanel.addPreference(createServerNamePreference(c));
loadExtraPreferencesTo(subpanel);
subpanel.addPreference(createDomainSufficesPreference(c));
}
protected void (PreferenceGroup subpanel) {
}
String result = validate(mName, R.string.vpn_a_name);
return ((result != null)
? result
: validate(mServerName, R.string.vpn_a_vpn_server));
}
EditTextPreference pref = mDomainSuffices = createEditTextPreference(c,
R.string.vpn_dns_search_list_title,
R.string.vpn_dns_search_list,
mProfile.getDomainSuffices(),
new Preference.OnPreferenceChangeListener() {
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setDomainSuffices(v);
setSummary(pref, R.string.vpn_dns_search_list, v, false);
return true;
}
});
pref.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI);
return pref;
}
EditTextPreference pref = mServerName = createEditTextPreference(c,
R.string.vpn_vpn_server_title,
R.string.vpn_vpn_server,
mProfile.getServerName(),
new Preference.OnPreferenceChangeListener() {
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setServerName(v);
setSummary(pref, R.string.vpn_vpn_server, v);
return true;
}
});
pref.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI);
return pref;
}
int prefNameId, String value,
Preference.OnPreferenceChangeListener listener) {
EditTextPreference pref = new EditTextPreference(c);
pref.setTitle(titleId);
pref.setDialogTitle(titleId);
setSummary(pref, prefNameId, value);
pref.setText(value);
pref.setPersistent(true);
pref.setOnPreferenceChangeListener(listener);
return pref;
}
protected String
validate(Preference pref,
int fieldNameId) {
Context c = pref.getContext();
String value = (pref instanceof EditTextPreference)
? ((EditTextPreference) pref).getText()
: ((ListPreference) pref).getValue();
String formatString = (pref instanceof EditTextPreference)
? c.getString(R.string.vpn_error_miss_entering)
: c.getString(R.string.vpn_error_miss_selecting);
return (TextUtils.isEmpty(value)
? String.format(formatString, c.getString(fieldNameId))
: null);
}
protected void setSummary(Preference pref,
int fieldNameId, String v) {
setSummary(pref, fieldNameId, v, true);
}
protected void setSummary(Preference pref,
int fieldNameId, String v,
boolean required) {
Context c = pref.getContext();
String formatString = required
? c.getString(R.string.vpn_field_not_set)
: c.getString(R.string.vpn_field_not_set_optional);
pref.setSummary(TextUtils.isEmpty(v)
? String.format(formatString, c.getString(fieldNameId))
: v);
}
Context c = pref.getContext();
String formatString = c.getString(R.string.vpn_enable_field);
pref.setTitle(String.format(formatString, c.getString(fieldNameId)));
}
private void setName(String newName) {
newName = (newName == null) ? "" : newName.trim();
mName.setText(newName);
getProfile().setName(newName);
setSummary(mName, R.string.vpn_name, newName);
}
private EditTextPreference mPref;
private int mFieldNameId;
private boolean mHadSecret;
protected SecretHandler(Context c,
int titleId,
int fieldNameId) {
String value = getSecretFromProfile();
mHadSecret = !TextUtils.isEmpty(value);
mFieldNameId = fieldNameId;
EditTextPreference pref = mPref = new EditTextPreference(c);
pref.setTitle(titleId);
pref.setDialogTitle(titleId);
pref.getEditText().setInputType(
InputType.TYPE_TEXT_VARIATION_PASSWORD);
pref.getEditText().setTransformationMethod(
new PasswordTransformationMethod());
pref.setText("");
pref.getEditText().setHint(mHadSecret
? R.string.vpn_secret_unchanged
: R.string.vpn_secret_not_set);
setSecretSummary(value);
pref.setPersistent(true);
saveSecretToProfile("");
pref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
Preference pref, Object newValue) {
saveSecretToProfile((String) newValue);
setSecretSummary((String) newValue);
return true;
}
});
}
return mPref;
}
Context c = mPref.getContext();
String value = mPref.getText();
return ((TextUtils.isEmpty(value) && !mHadSecret)
? String.format(
c.getString(R.string.vpn_error_miss_entering),
c.getString(mFieldNameId))
: null);
}
EditTextPreference pref = mPref;
Context c = pref.getContext();
String formatString = (TextUtils.isEmpty(value) && !mHadSecret)
? c.getString(R.string.vpn_field_not_set)
: c.getString(R.string.vpn_field_is_set);
pref.setSummary(
String.format(formatString, c.getString(mFieldNameId)));
}
}
}