package com.alorma.github.ui.adapter.issues;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.alorma.github.R;
import com.alorma.github.sdk.bean.dto.response.Issue;
import com.alorma.github.sdk.bean.dto.response.IssueState;
import com.alorma.github.sdk.bean.dto.response.Milestone;
import com.alorma.github.ui.adapter.base.RecyclerArrayAdapter;
import com.alorma.github.ui.view.LabelView;
import com.alorma.github.utils.TextUtils;
import com.alorma.github.utils.TimeUtils;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.typeface.IIcon;
import com.mikepenz.octicons_typeface_library.Octicons;
import com.wefika.flowlayout.FlowLayout;
import core.issues.Label;
@Deprecated
public class OldIssuesAdapter extends RecyclerArrayAdapter<Issue, OldIssuesAdapter.ViewHolder> {
private IssuesAdapterListener issuesAdapterListener;
public OldIssuesAdapter(LayoutInflater inflater) {
super(inflater);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(getInflater().inflate(R.layout.row_issue, parent, false));
}
@Override
protected void onBindViewHolder(ViewHolder holder, Issue issue) {
holder.title.setText(issue.title);
String timeAgo = TimeUtils.getTimeAgoString(issue.created_at);
String info = holder.info.getContext().getResources().getString(R.string.issue_info, issue.number, timeAgo, issue.user.getLogin());
holder.info.setText(info);
int colorState = getColorState(issue);
IconicsDrawable iconDrawable = new IconicsDrawable(holder.itemView.getContext(), getIconStateDrawable(issue));
iconDrawable.colorRes(colorState);
holder.imageState.setImageDrawable(iconDrawable);
if (issue.labels != null) {
holder.labelsLayout.removeAllViews();
if (issue.labels.size() > 0) {
holder.labelsLayout.setVisibility(View.VISIBLE);
int margin = holder.labelsLayout.getContext().getResources().getDimensionPixelOffset(R.dimen.gapSmall);
for (Label label : issue.labels) {
LabelView labelView = new LabelView(holder.labelsLayout.getContext());
labelView.setLabel(label);
holder.labelsLayout.addView(labelView);
if (labelView.getLayoutParams() != null && labelView.getLayoutParams() instanceof FlowLayout.LayoutParams) {
FlowLayout.LayoutParams layoutParams = (FlowLayout.LayoutParams) labelView.getLayoutParams();
layoutParams.height = FlowLayout.LayoutParams.WRAP_CONTENT;
layoutParams.width = FlowLayout.LayoutParams.WRAP_CONTENT;
layoutParams.setMargins(margin, margin, margin, margin);
labelView.setLayoutParams(layoutParams);
}
}
} else {
holder.labelsLayout.setVisibility(View.GONE);
}
} else {
holder.labelsLayout.setVisibility(View.GONE);
}
Milestone milestone = issue.milestone;
if (milestone != null) {
String milestoneText = milestone.title + " " + milestone.openIssues + "/" + (milestone.openIssues + milestone.closedIssues);
holder.textMilestone.setText(milestoneText);
holder.milestoneLy.setVisibility(View.VISIBLE);
} else {
holder.milestoneLy.setVisibility(View.GONE);
}
TextUtils.applyNumToTextView(holder.numComments, Octicons.Icon.oct_comment_discussion, issue.comments);
}
@NonNull
protected IIcon getIconStateDrawable(Issue issue) {
IIcon iconDrawable;
if (issue.state == IssueState.closed) {
iconDrawable = Octicons.Icon.oct_issue_closed;
} else {
iconDrawable = Octicons.Icon.oct_issue_opened;
}
return iconDrawable;
}
protected int getColorState(Issue issue) {
int colorState = R.color.issue_state_close;
if (IssueState.open == issue.state) {
colorState = R.color.issue_state_open;
}
return colorState;
}
public void setIssuesAdapterListener(IssuesAdapterListener issuesAdapterListener) {
this.issuesAdapterListener = issuesAdapterListener;
}
public interface IssuesAdapterListener {
void onIssueOpenRequest(Issue issue);
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final TextView title;
private final TextView info;
private final ImageView imageState;
private final TextView numComments;
private final TextView textMilestone;
private FlowLayout labelsLayout;
private ViewGroup milestoneLy;
public ViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.textTitle);
info = (TextView) itemView.findViewById(R.id.textInfo);
numComments = (TextView) itemView.findViewById(R.id.numComments);
textMilestone = (TextView) itemView.findViewById(R.id.textMilestone);
imageState = (ImageView) itemView.findViewById(R.id.imageState);
labelsLayout = (FlowLayout) itemView.findViewById(R.id.labelsLayout);
milestoneLy = (ViewGroup) itemView.findViewById(R.id.milestoneLy);
itemView.setOnClickListener(v -> {
Issue item = getItem(getAdapterPosition());
if (issuesAdapterListener != null) {
issuesAdapterListener.onIssueOpenRequest(item);
}
});
}
}
}