package com.fastaccess.ui.adapter.viewholder;
import android.graphics.Color;
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.model.PinnedRepos;
import com.fastaccess.data.dao.model.Repo;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.helper.ParseDateFormat;
import com.fastaccess.ui.widgets.AvatarLayout;
import com.fastaccess.ui.widgets.FontTextView;
import com.fastaccess.ui.widgets.LabelSpan;
import com.fastaccess.ui.widgets.SpannableBuilder;
import com.fastaccess.ui.widgets.color.ColorGenerator;
import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter;
import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder;
import java.text.NumberFormat;
import butterknife.BindColor;
import butterknife.BindString;
import butterknife.BindView;
/**
* Created by Kosh on 11 Nov 2016, 2:08 PM
*/
public class PinnedReposViewHolder extends BaseViewHolder<PinnedRepos> {
@BindView(R.id.title) FontTextView title;
@BindView(R.id.date) FontTextView date;
@BindView(R.id.stars) FontTextView stars;
@BindView(R.id.forks) FontTextView forks;
@BindView(R.id.language) FontTextView language;
@BindView(R.id.avatarLayout) AvatarLayout avatarLayout;
@BindString(R.string.forked) String forked;
@BindString(R.string.private_repo) String privateRepo;
@BindColor(R.color.material_indigo_700) int forkColor;
@BindColor(R.color.material_deep_purple_700) int privateColor;
private PinnedReposViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter) {
super(itemView, adapter);
}
public static PinnedReposViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter) {
return new PinnedReposViewHolder(getView(viewGroup, R.layout.repos_row_item), adapter);
}
@Override public void bind(@NonNull PinnedRepos pinnedRepos) {
Repo repo = pinnedRepos.getPinnedRepo();
if (repo == null) return;
if (repo.isFork()) {
title.setText(SpannableBuilder.builder()
.append(" " + forked + " ", new LabelSpan(forkColor))
.append(" ")
.append(repo.getName(), new LabelSpan(Color.TRANSPARENT)));
} else if (repo.isPrivateX()) {
title.setText(SpannableBuilder.builder()
.append(" " + privateRepo + " ", new LabelSpan(privateColor))
.append(" ")
.append(repo.getName(), new LabelSpan(Color.TRANSPARENT)));
} else {
title.setText(repo.getFullName());
}
String avatar = repo.getOwner() != null ? repo.getOwner().getAvatarUrl() : null;
String login = repo.getOwner() != null ? repo.getOwner().getLogin() : null;
boolean isOrg = repo.getOwner() != null && repo.getOwner().isOrganizationType();
if (avatarLayout != null) {
avatarLayout.setVisibility(View.VISIBLE);
avatarLayout.setUrl(avatar, login, isOrg);
}
NumberFormat numberFormat = NumberFormat.getNumberInstance();
stars.setText(numberFormat.format(repo.getStargazersCount()));
forks.setText(numberFormat.format(repo.getForks()));
date.setText(ParseDateFormat.getTimeAgo(repo.getUpdatedAt()));
if (!InputHelper.isEmpty(repo.getLanguage())) {
language.setText(repo.getLanguage());
language.setTextColor(ColorGenerator.getColor(itemView.getContext(), repo.getLanguage()));
language.setVisibility(View.VISIBLE);
}
}
}