package org.commcare.preferences; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.ListPreference; import android.preference.PreferenceManager; import org.commcare.activities.SessionAwarePreferenceActivity; import org.commcare.dalvik.R; import org.commcare.google.services.analytics.GoogleAnalyticsFields; import org.commcare.google.services.analytics.GoogleAnalyticsUtils; /** * @author yanokwa */ public class FormEntryPreferences extends SessionAwarePreferenceActivity implements OnSharedPreferenceChangeListener { public static final String KEY_FONT_SIZE = "font_size"; public static final String KEY_HELP_MODE_TRAY = "help_mode_tray"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); GoogleAnalyticsUtils.reportPrefActivityEntry(GoogleAnalyticsFields.CATEGORY_FORM_PREFS); setTitle(getString(R.string.application_name) + " > " + getString(R.string.form_entry_settings)); updateFontSize(); createPreferenceOnClickListeners(); } private void createPreferenceOnClickListeners() { PreferenceManager prefMgr = getPreferenceManager(); GoogleAnalyticsUtils.createPreferenceOnClickListener(prefMgr, KEY_FONT_SIZE, GoogleAnalyticsFields.CATEGORY_FORM_PREFS, GoogleAnalyticsFields.LABEL_FONT_SIZE); GoogleAnalyticsUtils.createPreferenceOnClickListener(prefMgr, KEY_HELP_MODE_TRAY, GoogleAnalyticsFields.CATEGORY_FORM_PREFS, GoogleAnalyticsFields.LABEL_INLINE_HELP); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener( this); } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); updateFontSize(); } @Override public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) { switch (key) { case KEY_FONT_SIZE: reportEditPreference(GoogleAnalyticsFields.LABEL_FONT_SIZE); updateFontSize(); break; case KEY_HELP_MODE_TRAY: reportEditPreference(GoogleAnalyticsFields.LABEL_INLINE_HELP); } } private static void reportEditPreference(String label) { GoogleAnalyticsUtils.reportEditPref(GoogleAnalyticsFields.CATEGORY_FORM_PREFS, label); } private void updateFontSize() { ListPreference lp = (ListPreference)findPreference(KEY_FONT_SIZE); lp.setSummary(lp.getEntry()); } }