package net.bible.android.view.util; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; import android.preference.ListPreference; import android.util.AttributeSet; import android.widget.ListAdapter; import android.widget.ListView; import net.bible.android.control.bookmark.BookmarkStyle; /** * Allow selection of default Bookmark colour preference. * * @author Martin Denham [mjdenham at gmail dot com] * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's author. */ public class BookmarkColourPreference extends ListPreference { public BookmarkColourPreference(Context context, AttributeSet attrs) { super(context, attrs); initialise(); } public BookmarkColourPreference(Context context) { super(context); initialise(); } private void initialise() { final int numValues = BookmarkStyle.values().length; CharSequence[] styles = new CharSequence[numValues]; for (int i=0; i<numValues; i++) { BookmarkStyle bookmarkStyle = BookmarkStyle.values()[i]; styles[i] = bookmarkStyle.name(); } setEntries(styles); setEntryValues(styles); setDefaultValue(styles[0]); } @Override protected void showDialog(Bundle state) { super.showDialog(state); AlertDialog dialog = (AlertDialog) getDialog(); ListView listView = dialog.getListView(); ListAdapter adapter = listView.getAdapter(); final BookmarkColourListPrefWrapperAdapter fontTypeAdapter = createWrapperAdapter(adapter); // Adjust the selection because resetting the adapter loses the selection. int selectedPosition = findIndexOfValue(getValue()); listView.setAdapter(fontTypeAdapter); if (selectedPosition != -1) { listView.setItemChecked(selectedPosition, true); listView.setSelection(selectedPosition); } } protected BookmarkColourListPrefWrapperAdapter createWrapperAdapter(ListAdapter origAdapter) { return new BookmarkColourListPrefWrapperAdapter(getContext(), origAdapter); } }