Fix secret EditText display and other fixes.

+ Now it shows shadowed "(unchanged)" (as in wifi settings) and "(not set)"
  instead of two dots.

Patch Set 2:
+ Show cancellation confirmation dialog only when there's change in
  profile.

Patch Set 3:
+ Re-enable profile preferences when the reconnect dialog is cancelled.
This commit is contained in:
Hung-ying Tyan
2009-07-23 07:36:23 +08:00
parent c25f8955be
commit 38a9daffa5
6 changed files with 171 additions and 106 deletions

View File

@@ -30,9 +30,7 @@ import android.preference.PreferenceGroup;
*/
class L2tpEditor extends VpnProfileEditor {
private CheckBoxPreference mSecret;
private EditTextPreference mSecretString;
private String mOriginalSecret;
private boolean mOriginalSecretEnabled;
private SecretHandler mSecretHandler;
public L2tpEditor(L2tpProfile p) {
super(p);
@@ -43,11 +41,8 @@ class L2tpEditor extends VpnProfileEditor {
Context c = subpanel.getContext();
subpanel.addPreference(createSecretPreference(c));
subpanel.addPreference(createSecretStringPreference(c));
mSecretString.setEnabled(mSecret.isChecked());
L2tpProfile profile = (L2tpProfile) getProfile();
mOriginalSecret = profile.getSecretString();
mOriginalSecretEnabled = profile.isSecretEnabled();
}
@Override
@@ -55,9 +50,7 @@ class L2tpEditor extends VpnProfileEditor {
String result = super.validate();
if (!mSecret.isChecked()) return result;
return ((result != null)
? result
: validate(mSecretString, R.string.vpn_a_l2tp_secret));
return ((result != null) ? result : mSecretHandler.validate());
}
private Preference createSecretPreference(Context c) {
@@ -73,7 +66,7 @@ class L2tpEditor extends VpnProfileEditor {
Preference pref, Object newValue) {
boolean enabled = (Boolean) newValue;
profile.setSecretEnabled(enabled);
mSecretString.setEnabled(enabled);
mSecretHandler.getPreference().setEnabled(enabled);
setSecretTitle(mSecret, R.string.vpn_l2tp_secret,
enabled);
setSecretSummary(mSecret, enabled);
@@ -84,22 +77,22 @@ class L2tpEditor extends VpnProfileEditor {
}
private Preference createSecretStringPreference(Context c) {
final L2tpProfile profile = (L2tpProfile) getProfile();
mSecretString = createSecretPreference(c,
SecretHandler sHandler = mSecretHandler = new SecretHandler(c,
R.string.vpn_l2tp_secret_string_title,
R.string.vpn_l2tp_secret,
profile.getSecretString(),
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
profile.setSecretString((String) newValue);
setSecretSummary(mSecretString,
R.string.vpn_l2tp_secret,
(String) newValue);
return true;
}
});
return mSecretString;
R.string.vpn_l2tp_secret) {
@Override
protected String getSecretFromProfile() {
return ((L2tpProfile) getProfile()).getSecretString();
}
@Override
protected void saveSecretToProfile(String secret) {
((L2tpProfile) getProfile()).setSecretString(secret);
}
};
Preference pref = sHandler.getPreference();
pref.setEnabled(mSecret.isChecked());
return pref;
}
private void setSecretSummary(CheckBoxPreference secret, boolean enabled) {