/* * Copyright 2011 yingxinwu.g@gmail.com * * 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 xink.vpn; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.ListPreference; import android.preference.PreferenceActivity; /** * Modifing / storing user settings. */ public class Settings extends PreferenceActivity implements OnSharedPreferenceChangeListener { private ListPreference periodList; private ListPreference connErrThresholdList; /** Called when the activity is first created. */ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); periodList = (ListPreference) getPreferenceScreen().findPreference(KeepAlive.PREF_HEARTBEAT_PERIOD); connErrThresholdList = (ListPreference) getPreferenceScreen().findPreference( getString(R.string.pref_crash_conn_broken_threshold_key)); } @Override protected void onResume() { super.onResume(); updateListPrefSum(periodList, R.string.keepalive_period_sum); updateListPrefSum(connErrThresholdList, R.string.pref_crash_conn_broken_threshold_sum); // Set up a listener whenever a key changes getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); // Unregister the listener whenever a key changes getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } /* * (non-Javadoc) * * @see * android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences * , java.lang.String) */ @Override public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { if (key.equals(KeepAlive.PREF_HEARTBEAT_PERIOD)) { updateListPrefSum(periodList, R.string.keepalive_period_sum); } else if (key.equals(getString(R.string.pref_crash_conn_broken_threshold_key))) { updateListPrefSum(connErrThresholdList, R.string.pref_crash_conn_broken_threshold_sum); } } private void updateListPrefSum(final ListPreference pref, final int sumRes) { pref.setSummary(getString(sumRes, pref.getEntry())); } }