package org.wordpress.android.ui.posts.adapters; import android.content.Context; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import org.wordpress.android.R; import org.wordpress.android.fluxc.model.PostModel; import org.wordpress.android.fluxc.model.post.PostStatus; import org.wordpress.android.widgets.PostListButton; import java.util.ArrayList; import java.util.List; /* * adapter for the popup menu that appears when clicking "..." in the pages list - each item * in the menu item array is an integer that matches a specific PostListButton button type */ public class PageMenuAdapter extends BaseAdapter { private final LayoutInflater mInflater; private final List<Integer> mMenuItems = new ArrayList<>(); public PageMenuAdapter(Context context, @NonNull PostModel page) { super(); mInflater = LayoutInflater.from(context); boolean showViewItem = !page.isLocalDraft() && PostStatus.fromPost(page) == PostStatus.PUBLISHED; boolean showStatsItem = !page.isLocalDraft() && PostStatus.fromPost(page) == PostStatus.PUBLISHED; boolean showTrashItem = !page.isLocalDraft(); boolean showDeleteItem = !showTrashItem; // edit item always appears mMenuItems.add(PostListButton.BUTTON_EDIT); if (showViewItem) { mMenuItems.add(PostListButton.BUTTON_VIEW); } if (showStatsItem) { mMenuItems.add(PostListButton.BUTTON_STATS); } if (showTrashItem) { mMenuItems.add(PostListButton.BUTTON_TRASH); } if (showDeleteItem) { mMenuItems.add(PostListButton.BUTTON_DELETE); } } @Override public int getCount() { return mMenuItems.size(); } @Override public Object getItem(int position) { return mMenuItems.get(position); } @Override public long getItemId(int position) { return mMenuItems.get(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { PageMenuHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.popup_menu_item, parent, false); holder = new PageMenuHolder(convertView); convertView.setTag(holder); } else { holder = (PageMenuHolder) convertView.getTag(); } int buttonType = mMenuItems.get(position); holder.text.setText(PostListButton.getButtonTextResId(buttonType)); holder.icon.setImageResource(PostListButton.getButtonIconResId(buttonType)); return convertView; } class PageMenuHolder { private final TextView text; private final ImageView icon; PageMenuHolder(View view) { text = (TextView) view.findViewById(R.id.text); icon = (ImageView) view.findViewById(R.id.image); } } }