package com.jakewharton.u2020.ui.trending;
import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import com.jakewharton.u2020.R;
import com.jakewharton.u2020.data.api.model.Repository;
import com.jakewharton.u2020.ui.misc.Truss;
import com.jakewharton.u2020.ui.transform.CircleStrokeTransformation;
import com.squareup.picasso.Picasso;
public final class TrendingItemView extends RelativeLayout {
@BindView(R.id.trending_repository_avatar) ImageView avatarView;
@BindView(R.id.trending_repository_name) TextView nameView;
@BindView(R.id.trending_repository_description) TextView descriptionView;
@BindView(R.id.trending_repository_stars) TextView starsView;
@BindView(R.id.trending_repository_forks) TextView forksView;
private final CircleStrokeTransformation avatarTransformation;
private final int descriptionColor;
public TrendingItemView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.textColorSecondary, outValue, true);
descriptionColor = outValue.data;
// TODO: Make this a singleton.
avatarTransformation =
new CircleStrokeTransformation(context, ContextCompat.getColor(context, R.color.avatar_stroke), 1);
}
@Override protected void onFinishInflate() {
super.onFinishInflate();
ButterKnife.bind(this);
}
public void bindTo(Repository repository, Picasso picasso) {
picasso.load(repository.owner.avatar_url)
.placeholder(R.drawable.avatar)
.fit()
.transform(avatarTransformation)
.into(avatarView);
nameView.setText(repository.name);
starsView.setText(String.valueOf(repository.watchers));
forksView.setText(String.valueOf(repository.forks));
Truss description = new Truss();
description.append(repository.owner.login);
if (!TextUtils.isEmpty(repository.description)) {
description.pushSpan(new ForegroundColorSpan(descriptionColor));
description.append(" — ");
description.append(repository.description);
description.popSpan();
}
descriptionView.setText(description.build());
}
}