package org.dodgybits.shuffle.android.list.activity;
import org.dodgybits.android.shuffle.R;
import org.dodgybits.shuffle.android.core.util.Constants;
import org.dodgybits.shuffle.android.preference.model.ListPreferenceSettings;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.util.Log;
public class ListPreferenceActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener {
private static final String cTag = "ListPreferenceActivity";
private ListPreferenceSettings settings;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = ListPreferenceSettings.fromIntent(getIntent());
setupScreen();
}
private void setupScreen() {
PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this);
int screenId = getStringId("title_" + settings.getPrefix());
String title = getString(screenId) + " " + getString(R.string.list_settings_title);
screen.setTitle(title);
screen.addPreference(createList(
R.array.list_preferences_active_labels,
R.string.active_items_title,
settings.getActive(this).name(),
ListPreferenceSettings.LIST_FILTER_ACTIVE,
settings.getDefaultActive().name()));
screen.addPreference(createList(
R.array.list_preferences_pending_labels,
R.string.pending_items_title,
settings.getPending(this).name(),
ListPreferenceSettings.LIST_FILTER_PENDING,
settings.getDefaultPending().name()));
screen.addPreference(createList(
R.array.list_preferences_completed_labels,
R.string.completed_items_title,
settings.getCompleted(this).name(),
ListPreferenceSettings.LIST_FILTER_COMPLETED,
settings.getDefaultCompleted().name()));
screen.addPreference(createList(
R.array.list_preferences_deleted_labels,
R.string.deleted_items_title,
settings.getDeleted(this).name(),
ListPreferenceSettings.LIST_FILTER_DELETED,
settings.getDefaultDeleted().name()));
setPreferenceScreen(screen);
}
private int getStringId(String id) {
return getResources().getIdentifier(id, Constants.cStringType, Constants.cPackage);
}
private ListPreference createList(int entries, int title, String value, String keySuffix, Object defaultValue) {
ListPreference listPreference = new ListPreference(this);
listPreference.setEntryValues(R.array.list_preferences_flag_values);
listPreference.setEntries(entries);
listPreference.setTitle(title);
String key = settings.getPrefix() + keySuffix;
listPreference.setKey(key);
listPreference.setDefaultValue(defaultValue);
listPreference.setOnPreferenceChangeListener(this);
CharSequence[] entryStrings = listPreference.getEntries();
int index = listPreference.findIndexOfValue(value);
if (index > -1) {
listPreference.setSummary(entryStrings[index]);
}
Log.d(cTag, "Creating list perference key=" + key + " value=" + value + " default=" + defaultValue + " title=" + title);
return listPreference;
}
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
ListPreference listPreference = (ListPreference)preference;
int index = listPreference.findIndexOfValue((String)o);
preference.setSummary(listPreference.getEntries()[index]);
return true;
}
}