package com.theksmith.android.car_bus_interface; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.util.Log; /** * a Settings screen PreferenceActivity, the app's primary UI * this is shown when user taps on the persistent notification created by CBIServiceMain * * @author Kristoffer Smith <[email protected]> */ public class CBIActvitySettings extends PreferenceActivity { private static final String TAG = "CBIActvitySettings"; private static final boolean D = BuildConfig.SHOW_DEBUG_LOG_LEVEL > 0; @Override protected boolean isValidFragment(final String ignored) { return true; } @Override protected void onCreate(final Bundle savedInstanceState) { if (D) Log.d(TAG, "onCreate()"); super.onCreate(savedInstanceState); setTitle(getString(R.string.app_name) + " " + BuildConfig.VERSION_NAME); } @Override protected void onPostCreate(Bundle savedInstanceState) { if (D) Log.d(TAG, "onPostCreate()"); super.onPostCreate(savedInstanceState); setupSimplePreferencesScreen(); } @Override public boolean onIsMultiPane() { return false; } private void setupSimplePreferencesScreen() { if (D) Log.d(TAG, "setupSimplePreferencesScreen()"); addPreferencesFromResource(R.xml.pref_general); //action type prefs acting as buttons final Preference prefRestart = findPreference("action_restart"); prefRestart.setOnPreferenceClickListener(mPrefOnClickListener); final Preference prefExit = findPreference("action_exit"); prefExit.setOnPreferenceClickListener(mPrefOnClickListener); //bind values to summaries for list and string type prefs bindPreferenceSummaryToValue(findPreference("bluetooth_mac")); bindPreferenceSummaryToValue(findPreference("elm_commands")); //todo: the way we are storing these preferences is a quick hack, we need a custom preference screen to configure any number of these for (int m = 1; m <= 10; m++) { bindPreferenceSummaryToValue(findPreference("elm_monitor" + m)); } } private Preference.OnPreferenceClickListener mPrefOnClickListener = new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(final Preference preference) { if (D) Log.d(TAG, "onPreferenceClick()"); finish(); return false; } }; private static void bindPreferenceSummaryToValue(final Preference preference) { if (D) Log.d(TAG, "bindPreferenceSummaryToValue()"); preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager.getDefaultSharedPreferences(preference.getContext()).getString(preference.getKey(), "")); } private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(final Preference preference, final Object value) { if (D) Log.d(TAG, "onPreferenceChange()"); final String stringValue = value.toString(); if (preference instanceof ListPreference) { final ListPreference listPreference = (ListPreference) preference; final int index = listPreference.findIndexOfValue(stringValue); preference.setSummary(index >= 0 ? listPreference.getEntries()[index] : null); } else { preference.setSummary(stringValue); } return true; } }; }