/*
* Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.profile.ui;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.link.UriHandler;
import me.zhanghai.android.douya.network.api.info.apiv2.User;
import me.zhanghai.android.douya.network.api.info.frodo.Review;
import me.zhanghai.android.douya.ui.FriendlyCardView;
import me.zhanghai.android.douya.util.ImageUtils;
import me.zhanghai.android.douya.util.StringUtils;
import me.zhanghai.android.douya.util.ViewUtils;
public class ProfileReviewsLayout extends FriendlyCardView {
private static final int REVIEW_COUNT_MAX = 3;
@BindView(R.id.title)
TextView mTitleText;
@BindView(R.id.review_list)
LinearLayout mReviewList;
@BindView(R.id.empty)
View mEmptyView;
@BindView(R.id.view_more)
TextView mViewMoreText;
public ProfileReviewsLayout(Context context) {
super(context);
init();
}
public ProfileReviewsLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ProfileReviewsLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
ViewUtils.inflateInto(R.layout.profile_reviews_layout, this);
ButterKnife.bind(this);
}
public void bind(final User user, List<Review> reviewList) {
final Context context = getContext();
OnClickListener viewMoreListener = new OnClickListener() {
@Override
public void onClick(View view) {
// TODO
UriHandler.open(StringUtils.formatUs("https://www.douban.com/people/%s/reviews",
user.getIdOrUid()), context);
//context.startActivity(ReviewListActivity.makeIntent(mUser, context));
}
};
mTitleText.setOnClickListener(viewMoreListener);
mViewMoreText.setOnClickListener(viewMoreListener);
int i = 0;
for (final Review review : reviewList) {
if (i >= REVIEW_COUNT_MAX) {
break;
}
if (i >= mReviewList.getChildCount()) {
LayoutInflater.from(context)
.inflate(R.layout.profile_review_item, mReviewList);
}
View reviewLayout = mReviewList.getChildAt(i);
ReviewLayoutHolder holder = (ReviewLayoutHolder) reviewLayout.getTag();
if (holder == null) {
holder = new ReviewLayoutHolder(reviewLayout);
reviewLayout.setTag(holder);
ViewUtils.setTextViewLinkClickable(holder.titleText);
}
String coverUrl = review.cover;
if (TextUtils.isEmpty(coverUrl) && review.item != null && review.item.cover != null) {
coverUrl = review.item.cover.getNormal();
}
if (!TextUtils.isEmpty(coverUrl)) {
holder.coverImage.setVisibility(VISIBLE);
ImageUtils.loadImage(holder.coverImage, coverUrl);
} else {
holder.coverImage.setVisibility(GONE);
}
holder.titleText.setText(review.title);
holder.abstractText.setText(review.abstract_);
reviewLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO
UriHandler.open(StringUtils.formatUs("https://www.douban.com/review/%d",
review.id), context);
//context.startActivity(ReviewActivity.makeIntent(review, context));
}
});
++i;
}
ViewUtils.setVisibleOrGone(mReviewList, i != 0);
ViewUtils.setVisibleOrGone(mEmptyView, i == 0);
// HACK: We don't have mUser.reviewCount, but normally we request more than
// REVIEW_COUNT_MAX.
// FIXME: Fix this hack?
//if (mUser.reviewCount > i) {
if (reviewList.size() > i) {
mViewMoreText.setText(R.string.view_more);
} else {
mViewMoreText.setVisibility(GONE);
}
for (int count = mReviewList.getChildCount(); i < count; ++i) {
ViewUtils.setVisibleOrGone(mReviewList.getChildAt(i), false);
}
}
static class ReviewLayoutHolder {
@BindView(R.id.cover)
public ImageView coverImage;
@BindView(R.id.title)
public TextView titleText;
@BindView(R.id.abstract_)
public TextView abstractText;
public ReviewLayoutHolder(View reviewLayout) {
ButterKnife.bind(this, reviewLayout);
}
}
}