| /* |
| * Copyright (C) 2009 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.L2tpProfile; |
| import android.preference.CheckBoxPreference; |
| import android.preference.EditTextPreference; |
| import android.preference.Preference; |
| import android.preference.PreferenceGroup; |
| |
| /** |
| * The class for editing {@link L2tpProfile}. |
| */ |
| class L2tpEditor extends VpnProfileEditor { |
| private CheckBoxPreference mSecret; |
| private SecretHandler mSecretHandler; |
| |
| public L2tpEditor(L2tpProfile p) { |
| super(p); |
| } |
| |
| @Override |
| protected void loadExtraPreferencesTo(PreferenceGroup subpanel) { |
| Context c = subpanel.getContext(); |
| subpanel.addPreference(createSecretPreference(c)); |
| subpanel.addPreference(createSecretStringPreference(c)); |
| |
| L2tpProfile profile = (L2tpProfile) getProfile(); |
| } |
| |
| @Override |
| public String validate() { |
| String result = super.validate(); |
| if (!mSecret.isChecked()) return result; |
| |
| return ((result != null) ? result : mSecretHandler.validate()); |
| } |
| |
| private Preference createSecretPreference(Context c) { |
| final L2tpProfile profile = (L2tpProfile) getProfile(); |
| CheckBoxPreference secret = mSecret = new CheckBoxPreference(c); |
| boolean enabled = profile.isSecretEnabled(); |
| setCheckBoxTitle(secret, R.string.vpn_l2tp_secret); |
| secret.setChecked(enabled); |
| setSecretSummary(secret, enabled); |
| secret.setOnPreferenceChangeListener( |
| new Preference.OnPreferenceChangeListener() { |
| public boolean onPreferenceChange( |
| Preference pref, Object newValue) { |
| boolean enabled = (Boolean) newValue; |
| profile.setSecretEnabled(enabled); |
| mSecretHandler.getPreference().setEnabled(enabled); |
| setSecretSummary(mSecret, enabled); |
| return true; |
| } |
| }); |
| return secret; |
| } |
| |
| private Preference createSecretStringPreference(Context c) { |
| SecretHandler sHandler = mSecretHandler = new SecretHandler(c, |
| R.string.vpn_l2tp_secret_string_title, |
| 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) { |
| Context c = secret.getContext(); |
| String formatString = c.getString(enabled |
| ? R.string.vpn_is_enabled |
| : R.string.vpn_is_disabled); |
| secret.setSummary(String.format( |
| formatString, c.getString(R.string.vpn_l2tp_secret))); |
| } |
| } |