package net.bible.android.view.activity.bookmark; import android.content.Context; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import net.bible.android.activity.R; import net.bible.android.control.bookmark.BookmarkStyle; import net.bible.android.view.util.widget.BookmarkStyleAdapterHelper; import net.bible.service.common.CommonUtils; import java.util.ArrayList; import java.util.List; /** * Manage the Spinner content for Label Bookmark-stle * The list includes all the BookMarkstyle enums styles plus a Default value at the top * * @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 BookmarkStyleAdapter extends ArrayAdapter<String> { private BookmarkStyleAdapterHelper bookmarkStyleAdapterHelper = new BookmarkStyleAdapterHelper(); private Context context; private static final String DEFAULT_TEXT = CommonUtils.getResourceString(R.string.default_value); private static final String TAG = "BookmarkItemAdapter"; public BookmarkStyleAdapter(Context context, int resource) { super(context, resource, getBookmarkStylesList()); this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view = (TextView) super.getView(position, convertView, parent); return styleView(position, view); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { TextView view = (TextView) super.getDropDownView(position, convertView, parent); return styleView(position, view); } private View styleView(int position, TextView view) { // textAppearanceMedium represents 18sp view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); if (position == 0) { view.setText(DEFAULT_TEXT); } else { final BookmarkStyle bookmarkStyle = BookmarkStyle.values()[position - 1]; bookmarkStyleAdapterHelper.styleView(view, bookmarkStyle, context, true, false); } return view; } private static List<String> getBookmarkStylesList() { List<String> styles = new ArrayList<>(); styles.add(DEFAULT_TEXT); for (BookmarkStyle style : BookmarkStyle.values()) { styles.add(style.name()); } return styles; } public int getBookmarkStyleOffset(BookmarkStyle style) { if (style == null) { return 0; } return style.ordinal() + 1; } public BookmarkStyle getBookmarkStyleForOffset(int offset) { if (offset == 0) { return null; } return BookmarkStyle.values()[offset - 1]; } }