package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import com.fastaccess.R; import com.fastaccess.data.dao.TimelineModel; import com.fastaccess.data.dao.model.IssueEvent; import com.fastaccess.data.dao.types.IssueEventType; import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.timeline.TimelineProvider; import com.fastaccess.ui.widgets.AvatarLayout; import com.fastaccess.ui.widgets.FontTextView; import com.fastaccess.ui.widgets.ForegroundImageView; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import butterknife.BindView; /** * Created by Kosh on 13 Dec 2016, 1:42 AM */ public class IssueTimelineViewHolder extends BaseViewHolder<TimelineModel> { @BindView(R.id.stateImage) ForegroundImageView stateImage; @BindView(R.id.avatarLayout) AvatarLayout avatarLayout; @BindView(R.id.stateText) FontTextView stateText; private boolean isMerged; private IssueTimelineViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, boolean isMerged) { super(itemView, adapter); this.isMerged = isMerged; } public static IssueTimelineViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter, boolean isMerged) { return new IssueTimelineViewHolder(getView(viewGroup, R.layout.issue_timeline_row_item), adapter, isMerged); } @Override public void bind(@NonNull TimelineModel timelineModel) { IssueEvent issueEventModel = timelineModel.getEvent(); IssueEventType event = issueEventModel.getEvent(); if (issueEventModel.getAssignee() != null && issueEventModel.getAssigner() != null) { avatarLayout.setUrl(issueEventModel.getAssigner().getAvatarUrl(), issueEventModel.getAssigner().getLogin()); } else { if (issueEventModel.getActor() != null) { avatarLayout.setUrl(issueEventModel.getActor().getAvatarUrl(), issueEventModel.getActor().getLogin()); } } if (event != null) { if (isMerged && event == IssueEventType.closed) { stateImage.setContentDescription(IssueEventType.merged.name()); stateImage.setImageResource(IssueEventType.merged.getIconResId()); } else { stateImage.setContentDescription(event.name()); stateImage.setImageResource(event.getIconResId()); } } if (issueEventModel.getLabels() == null) { if (event != null) { stateText.setText(TimelineProvider.getStyledEvents(issueEventModel, itemView.getContext(), isMerged)); } else { stateText.setText(""); stateImage.setImageResource(R.drawable.ic_label); } } else { stateText.setText(issueEventModel.getLabels()); } itemView.setEnabled(!InputHelper.isEmpty(issueEventModel.getCommitUrl())); } }