/*
* 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.util.AttributeSet;
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.followship.ui.FollowerListActivity;
import me.zhanghai.android.douya.followship.ui.FollowingListActivity;
import me.zhanghai.android.douya.network.api.info.apiv2.SimpleUser;
import me.zhanghai.android.douya.network.api.info.apiv2.User;
import me.zhanghai.android.douya.ui.FriendlyCardView;
import me.zhanghai.android.douya.util.ImageUtils;
import me.zhanghai.android.douya.util.ViewUtils;
public class ProfileFollowshipLayout extends FriendlyCardView {
private static final int USER_COUNT_MAX = 5;
@BindView(R.id.title)
TextView mTitleText;
@BindView(R.id.following_list)
LinearLayout mFollowingList;
@BindView(R.id.empty)
View mEmptyView;
@BindView(R.id.view_more)
TextView mViewMoreText;
@BindView(R.id.follower)
TextView mFollwerText;
public ProfileFollowshipLayout(Context context) {
super(context);
init();
}
public ProfileFollowshipLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ProfileFollowshipLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
ViewUtils.inflateInto(R.layout.profile_followship_layout, this);
ButterKnife.bind(this);
}
public void bind(final User userInfo, List<SimpleUser> followingList) {
final Context context = getContext();
OnClickListener viewFollowingListListener = new OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(FollowingListActivity.makeIntent(userInfo.getIdOrUid(),
context));
}
};
mTitleText.setOnClickListener(viewFollowingListListener);
mViewMoreText.setOnClickListener(viewFollowingListListener);
int i = 0;
for (final SimpleUser user : followingList) {
if (i >= USER_COUNT_MAX) {
break;
}
if (i >= mFollowingList.getChildCount()) {
ViewUtils.inflateInto(R.layout.profile_user_item, mFollowingList);
}
View userLayout = mFollowingList.getChildAt(i);
UserLayoutHolder holder = (UserLayoutHolder) userLayout.getTag();
if (holder == null) {
holder = new UserLayoutHolder(userLayout);
userLayout.setTag(holder);
}
ImageUtils.loadAvatar(holder.avatarImage, user.avatar);
holder.nameText.setText(user.name);
userLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(ProfileActivity.makeIntent(user, context));
}
});
++i;
}
ViewUtils.setVisibleOrGone(mFollowingList, i != 0);
ViewUtils.setVisibleOrGone(mEmptyView, i == 0);
if (userInfo.followingCount > i) {
mViewMoreText.setText(context.getString(R.string.view_more_with_count_format,
userInfo.followingCount));
} else {
mViewMoreText.setVisibility(GONE);
}
for (int count = mFollowingList.getChildCount(); i < count; ++i) {
ViewUtils.setVisibleOrGone(mFollowingList.getChildAt(i), false);
}
if (userInfo.followerCount > 0) {
mFollwerText.setText(context.getString(R.string.profile_follower_count_format,
userInfo.followerCount));
mFollwerText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(FollowerListActivity.makeIntent(userInfo.getIdOrUid(),
context));
}
});
} else {
mFollwerText.setVisibility(GONE);
}
}
static class UserLayoutHolder {
@BindView(R.id.avatar)
public ImageView avatarImage;
@BindView(R.id.name)
public TextView nameText;
public UserLayoutHolder(View broadcastLayout) {
ButterKnife.bind(this, broadcastLayout);
}
}
}