Remove use of SingleServerProfile.

* changes
  + mv SingleServerEditor.java VpnProfileEditor.java
  + Add loadExtraPreferecesTo() to VpnProfileEditor
  + Make L2tpIpsecEditor extend VpnProfileEditor and use loadExtraPreferencesTo()
  + Modify VpnEditor.getEditor() accordingly
This commit is contained in:
Hung-ying Tyan
2009-06-15 12:36:04 +08:00
parent a55ae92a13
commit 84cfb0dc9b
4 changed files with 98 additions and 127 deletions

View File

@@ -29,7 +29,7 @@ import android.security.Keystore;
/**
* The class for editing {@link L2tpIpsecProfile}.
*/
class L2tpIpsecEditor extends SingleServerEditor {
class L2tpIpsecEditor extends VpnProfileEditor {
private static final String TAG = L2tpIpsecEditor.class.getSimpleName();
private ListPreference mUserCertificate;
@@ -43,17 +43,15 @@ class L2tpIpsecEditor extends SingleServerEditor {
mProfile = p;
}
//@Override
public void loadPreferencesTo(PreferenceGroup subsettings) {
super.loadPreferencesTo(subsettings);
Context c = subsettings.getContext();
subsettings.addPreference(createUserkeyPreference(c));
subsettings.addPreference(createUserCertificatePreference(c));
subsettings.addPreference(createCaCertificatePreference(c));
subsettings.addPreference(createDomainSufficesPreference(c));
@Override
protected void loadExtraPreferencesTo(PreferenceGroup subpanel) {
Context c = subpanel.getContext();
subpanel.addPreference(createUserkeyPreference(c));
subpanel.addPreference(createUserCertificatePreference(c));
subpanel.addPreference(createCaCertificatePreference(c));
}
//@Override
@Override
public String validate(Context c) {
String result = super.validate(c);
if (result != null) {

View File

@@ -1,108 +0,0 @@
/*
* Copyright (C) 2007 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.vpn;
import com.android.settings.R;
import android.content.Context;
import android.net.vpn.SingleServerProfile;
import android.net.vpn.VpnProfile;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
/**
* The class for editing {@link SingleServerProfile}.
*/
class SingleServerEditor implements VpnProfileEditor {
private EditTextPreference mServerName;
private EditTextPreference mDomainSuffices;
private SingleServerProfile mProfile;
public SingleServerEditor(SingleServerProfile p) {
mProfile = p;
}
//@Override
public VpnProfile getProfile() {
return mProfile;
}
//@Override
public void loadPreferencesTo(PreferenceGroup subpanel) {
Context c = subpanel.getContext();
subpanel.addPreference(createServerNamePreference(c));
}
//@Override
public String validate(Context c) {
return (Util.isNullOrEmpty(mServerName.getText())
? c.getString(R.string.vpn_error_server_name_empty)
: null);
}
/**
* Creates a preference for users to input domain suffices.
*/
protected EditTextPreference createDomainSufficesPreference(Context c) {
EditTextPreference pref = mDomainSuffices = new EditTextPreference(c);
pref.setTitle(R.string.vpn_dns_search_list_title);
pref.setDialogTitle(R.string.vpn_dns_search_list_title);
pref.setPersistent(true);
pref.setText(mProfile.getDomainSuffices());
pref.setSummary(mProfile.getDomainSuffices());
pref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setDomainSuffices(v);
pref.setSummary(checkNull(v, pref.getContext()));
return true;
}
});
return pref;
}
private Preference createServerNamePreference(Context c) {
EditTextPreference serverName = mServerName = new EditTextPreference(c);
String title = c.getString(R.string.vpn_server_name_title);
serverName.setTitle(title);
serverName.setDialogTitle(title);
serverName.setSummary(checkNull(mProfile.getServerName(), c));
serverName.setText(mProfile.getServerName());
serverName.setPersistent(true);
serverName.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setServerName(v);
pref.setSummary(checkNull(v, pref.getContext()));
return true;
}
});
return mServerName;
}
String checkNull(String value, Context c) {
return ((value != null && value.length() > 0)
? value
: c.getString(R.string.vpn_not_set));
}
}

View File

@@ -158,10 +158,8 @@ public class VpnEditor extends PreferenceActivity {
private VpnProfileEditor getEditor(VpnProfile p) {
if (p instanceof L2tpIpsecProfile) {
return new L2tpIpsecEditor((L2tpIpsecProfile) p);
} else if (p instanceof SingleServerProfile) {
return new SingleServerEditor((SingleServerProfile) p);
} else {
throw new RuntimeException("Unknown profile type: " + p.getType());
return new VpnProfileEditor(p);
}
}

View File

@@ -16,20 +16,48 @@
package com.android.settings.vpn;
import com.android.settings.R;
import android.content.Context;
import android.net.vpn.VpnProfile;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
/**
* The interface to set up preferences for editing a {@link VpnProfile}.
* The common class for editing {@link VpnProfile}.
*/
public interface VpnProfileEditor {
VpnProfile getProfile();
class VpnProfileEditor {
private EditTextPreference mServerName;
private EditTextPreference mDomainSuffices;
private VpnProfile mProfile;
public VpnProfileEditor(VpnProfile p) {
mProfile = p;
}
//@Override
public VpnProfile getProfile() {
return mProfile;
}
/**
* Adds the preferences to the panel.
* Adds the preferences to the panel. Subclasses should override
* {@link #loadExtraPreferencesTo(PreferenceGroup)} instead of this method.
*/
void loadPreferencesTo(PreferenceGroup subpanel);
public void loadPreferencesTo(PreferenceGroup subpanel) {
Context c = subpanel.getContext();
subpanel.addPreference(createServerNamePreference(c));
loadExtraPreferencesTo(subpanel);
subpanel.addPreference(createDomainSufficesPreference(c));
}
/**
* Adds the extra preferences to the panel. Subclasses should add
* additional preferences in this method.
*/
protected void loadExtraPreferencesTo(PreferenceGroup subpanel) {
}
/**
* Validates the inputs in the preferences.
@@ -37,5 +65,60 @@ public interface VpnProfileEditor {
* @return an error message that is ready to be displayed in a dialog; or
* null if all the inputs are valid
*/
String validate(Context c);
public String validate(Context c) {
return (Util.isNullOrEmpty(mServerName.getText())
? c.getString(R.string.vpn_error_server_name_empty)
: null);
}
/**
* Creates a preference for users to input domain suffices.
*/
protected EditTextPreference createDomainSufficesPreference(Context c) {
EditTextPreference pref = mDomainSuffices = new EditTextPreference(c);
pref.setTitle(R.string.vpn_dns_search_list_title);
pref.setDialogTitle(R.string.vpn_dns_search_list_title);
pref.setPersistent(true);
pref.setText(mProfile.getDomainSuffices());
pref.setSummary(mProfile.getDomainSuffices());
pref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setDomainSuffices(v);
pref.setSummary(checkNull(v, pref.getContext()));
return true;
}
});
return pref;
}
private Preference createServerNamePreference(Context c) {
EditTextPreference serverName = mServerName = new EditTextPreference(c);
String title = c.getString(R.string.vpn_server_name_title);
serverName.setTitle(title);
serverName.setDialogTitle(title);
serverName.setSummary(checkNull(mProfile.getServerName(), c));
serverName.setText(mProfile.getServerName());
serverName.setPersistent(true);
serverName.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
String v = ((String) newValue).trim();
mProfile.setServerName(v);
pref.setSummary(checkNull(v, pref.getContext()));
return true;
}
});
return mServerName;
}
String checkNull(String value, Context c) {
return ((value != null && value.length() > 0)
? value
: c.getString(R.string.vpn_not_set));
}
}