package kc.spark.pixels.android.storage; import java.util.ArrayList; import java.util.List; import kc.get.pixel.list.android.R; import kc.spark.pixels.android.app.DeviceState; import kc.spark.pixels.android.cloud.api.Device; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; public class Preferences extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); } public static class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); final ListPreference listPreference = (ListPreference) findPreference("pixelCore"); setListPreferenceData(listPreference); // show the current value in the settings screen for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) { initSummary(getPreferenceScreen().getPreference(i)); } } @Override public void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { updatePreferences(findPreference(key)); } private void initSummary(Preference p) { if (p instanceof PreferenceGroup) { PreferenceGroup pGrp = (PreferenceGroup) p; for (int i = 0; i < pGrp.getPreferenceCount(); i++) { initSummary(pGrp.getPreference(i)); } } else { updatePreferences(p); } } private void updatePreferences(Preference p) { if (p instanceof ListPreference) { ListPreference listPref = (ListPreference) p; p.setSummary(listPref.getEntry()); } if (p instanceof EditTextPreference) { EditTextPreference editTextPref = (EditTextPreference) p; p.setSummary(editTextPref.getText()); } } protected static void setListPreferenceData(ListPreference lp) { if(!DeviceState.getKnownDevices().isEmpty()){ int i; List<String> entries = new ArrayList<String>(); List<String> entryValues = new ArrayList<String>(); for(i=0;i<DeviceState.getKnownDevices().size();i++) { Device device = DeviceState.getKnownDevices().get(i); entries.add(device.name); entryValues.add(Integer.toString(i+1)); } final CharSequence[] entryCharSeq = entries.toArray(new CharSequence[entries.size()]); final CharSequence[] entryValsChar = entries.toArray(new CharSequence[entries.size()]); lp.setEntries(entryCharSeq); lp.setEntryValues(entryValsChar); } } } }