package com.nuscomputing.ivle; import android.accounts.Account; import android.annotation.TargetApi; import android.content.ContentResolver; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; @TargetApi(11) public class AccountSettingsFragment extends PreferenceFragment { // {{{ properties /** TAG for logging */ public static final String TAG = "AccountSettingsFragment"; /** The account being edited */ private Account mAccount; // }}} // {{{ methods /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the account. Bundle args = getArguments(); mAccount = args.getParcelable("account"); // Set the shared preference file to use. PreferenceManager manager = getPreferenceManager(); manager.setSharedPreferencesName("account_" + mAccount.name); // Set up the preferences tree. addPreferencesFromResource(R.layout.account_settings_fragment); // Set up some options in the preference tree. setUpSyncInterval(); } /** * Method: setUpSyncInterval * Sets up the sync interval preference item. */ private void setUpSyncInterval() { // Create a new list preference item. ListPreference pref = (ListPreference) findPreference("sync_interval"); pref.setSummary(pref.getEntry()); // Set up the periodic sync when this account is changed. pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int freqHours = Integer.parseInt(newValue.toString()); if (freqHours > 0) { long freq = freqHours * 60 * 60; ContentResolver.addPeriodicSync(mAccount, Constants.PROVIDER_AUTHORITY, new Bundle(), freq); } else { // "None" has been selected. ContentResolver.removePeriodicSync(mAccount, Constants.PROVIDER_AUTHORITY, new Bundle()); } // Set the new summary. int newValueEntry = ((ListPreference) preference).findIndexOfValue(newValue.toString()); preference.setSummary(((ListPreference) preference).getEntries()[newValueEntry]); return true; } }); } // }}} }