package com.tuit.ar.activities; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.Preference.OnPreferenceClickListener; import com.tuit.ar.R; import com.tuit.ar.models.Settings; import com.tuit.ar.models.SettingsObserver; import com.tuit.ar.preferences.DialogPreference; import com.tuit.ar.preferences.DialogPreferenceListener; import com.tuit.ar.preferences.EditTextPreference; public class Preferences extends PreferenceActivity implements SettingsObserver { private ListPreference updateInterval; private CheckBoxPreference lazyMode; private CheckBoxPreference automaticUpdate; private EditTextPreference filter; private DialogPreference filterDelete; private CheckBoxPreference showAvatar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Settings.getInstance().addObserver(this); addPreferencesFromResource(R.layout.preferences); automaticUpdate = (CheckBoxPreference) findPreference(Settings.AUTOMATIC_UPDATE); automaticUpdate.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { updateInterval.setEnabled(automaticUpdate.isChecked()); updateSettings(); return false; } }); updateInterval = (ListPreference) findPreference(Settings.UPDATE_INTERVAL); updateInterval.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { updateSettings(); return false; } }); filter = (EditTextPreference)getPreferenceScreen().findPreference(Settings.FILTER); filter.setDialogPreferenceListener(new DialogPreferenceListener() { public void onDialogClosed(boolean positiveValue) { if (positiveValue) { filter.setText(filter.getEditText().getText().toString()); } updateSettings(); } }); filterDelete = (com.tuit.ar.preferences.DialogPreference)findPreference(Settings.FILTER_DELETE); filterDelete.setDialogPreferenceListener(new DialogPreferenceListener() { public void onDialogClosed(boolean positiveValue) { if (positiveValue) { filter.setText(""); updateSettings(); } } }); showAvatar = (CheckBoxPreference) findPreference(Settings.SHOW_AVATAR); showAvatar.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { updateSettings(); return false; } }); lazyMode = (CheckBoxPreference) findPreference(Settings.LAZY_MODE); lazyMode.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { updateSettings(); return false; } }); setValues(); } protected void updateSettings() { Settings settings = Settings.getInstance(); Editor editor = settings.getSharedPreferences(this).edit(); editor.putBoolean(Settings.LAZY_MODE, lazyMode.isChecked()); editor.putBoolean(Settings.AUTOMATIC_UPDATE, automaticUpdate.isChecked()); editor.putString(Settings.UPDATE_INTERVAL, updateInterval.getValue()); editor.putString(Settings.FILTER, filter.getText()); editor.putBoolean(Settings.SHOW_AVATAR, showAvatar.isChecked()); if (editor.commit()) { settings.callObservers(); } } public void settingsHasChanged(Settings settings) { setValues(); } public void setValues() { Settings settings = Settings.getInstance(); setTitle(getString(R.string.preferencesType).replaceAll("%s", settings.getSettingsName(this))); SharedPreferences preferences = settings.getSharedPreferences(this); lazyMode.setChecked(preferences.getBoolean(Settings.LAZY_MODE, Settings.LAZY_MODE_DEFAULT)); automaticUpdate.setChecked(preferences.getBoolean(Settings.AUTOMATIC_UPDATE, Settings.AUTOMATIC_UPDATE_DEFAULT)); updateInterval.setEnabled(automaticUpdate.isChecked()); updateInterval.setValue(preferences.getString(Settings.UPDATE_INTERVAL, Settings.UPDATE_INTERVAL_DEFAULT)); filter.setText(preferences.getString(Settings.FILTER, "")); showAvatar.setChecked(preferences.getBoolean(Settings.SHOW_AVATAR, Settings.SHOW_AVATAR_DEFAULT)); } public void onDestroy() { super.onDestroy(); Settings.getInstance().removeObserver(this); lazyMode.setOnPreferenceClickListener(null); automaticUpdate.setOnPreferenceClickListener(null); updateInterval.setOnPreferenceClickListener(null); filter.setDialogPreferenceListener(null); filterDelete.setDialogPreferenceListener(null); showAvatar.setOnPreferenceClickListener(null); } }