package org.aisen.weibo.sina.ui.fragment.comment;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.Html;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.common.utils.Utils;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import org.aisen.android.support.inject.ViewInject;
import org.aisen.android.ui.fragment.ABaseFragment;
import org.aisen.android.ui.fragment.adapter.ARecycleViewItemView;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.base.AppContext;
import org.aisen.weibo.sina.base.AppSettings;
import org.aisen.weibo.sina.sinasdk.bean.Group;
import org.aisen.weibo.sina.sinasdk.bean.Groups;
import org.aisen.weibo.sina.sinasdk.bean.StatusComment;
import org.aisen.weibo.sina.sinasdk.bean.StatusContent;
import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser;
import org.aisen.weibo.sina.support.utils.AisenUtils;
import org.aisen.weibo.sina.support.utils.ImageConfigUtils;
import org.aisen.weibo.sina.ui.fragment.base.BizFragment;
import org.aisen.weibo.sina.ui.widget.AisenTextView;
import org.aisen.weibo.sina.ui.widget.TimelinePicsView;
import java.util.HashMap;
import java.util.Map;
/**
* Created by wangdan on 16/1/9.
*/
public class CommentHeaderItemView extends ARecycleViewItemView<StatusComment> implements View.OnClickListener {
public static final int COMMENT_HEADER_01 = 1001;
public static final int COMMENT_HEADER_01_RES = R.layout.item_timeline_comment_header;
@ViewInject(id = R.id.imgPhoto)
ImageView imgPhoto;
@ViewInject(id = R.id.txtName)
TextView txtName;
@ViewInject(id = R.id.imgVerified)
ImageView imgVerified;
@ViewInject(id = R.id.txtDesc)
TextView txtDesc;
@ViewInject(id = R.id.txtContent)
AisenTextView txtContent;
@ViewInject(id = R.id.layRe)
View layRe;
@ViewInject(id = R.id.txtReContent)
AisenTextView txtReContent;
@ViewInject(id = R.id.layPicturs)
public TimelinePicsView layPicturs;
@ViewInject(id = R.id.txtPics)
TextView txtPics;
@ViewInject(id = R.id.txtVisiable)
TextView txtVisiable;
@ViewInject(id = R.id.layReStatusContainer)
View layReStatusContainer;
private int textSize = 0;
private static Map<String, String> groupMap;
private int vPadding;
private ABaseFragment fragment;
private StatusContent statusContent;
public CommentHeaderItemView(ABaseFragment fragment, View itemView, StatusContent statusContent) {
super(fragment.getActivity(), itemView);
this.fragment = fragment;
this.statusContent = statusContent;
textSize = AppSettings.getTextSize();
vPadding = GlobalContext.getInstance().getResources().getDimensionPixelSize(R.dimen.comm_v_gap);
Groups groups = AppContext.getAccount().getGroups();
if (groups != null && (groupMap == null || groupMap.size() != groups.getLists().size())) {
groupMap = new HashMap<>();
for (Group group : groups.getLists())
groupMap.put(group.getIdstr(), group.getName());
}
onBindView(itemView);
onBindData(itemView, null, 0);
}
@Override
public void onBindData(View convertView, StatusComment comment, int position) {
WeiBoUser user = statusContent.getUser();
// userInfo
setUserInfo(user, txtName, imgPhoto, imgVerified);
// desc
String createAt = "";
if (!TextUtils.isEmpty(statusContent.getCreated_at()))
createAt = AisenUtils.convDate(statusContent.getCreated_at());
String from = "";
if (!TextUtils.isEmpty(statusContent.getSource()))
from = String.format("%s", Html.fromHtml(statusContent.getSource()));
String desc = String.format("%s %s", createAt, from);
txtDesc.setText(desc);
// 文本
txtContent.setContent(statusContent.getText());
setTextSize(txtContent, textSize);
// reContent
StatusContent reContent = statusContent.getRetweeted_status();
if (reContent == null) {
layRe.setVisibility(View.GONE);
}
else {
layRe.setVisibility(View.VISIBLE);
layRe.setTag(reContent);
WeiBoUser reUser = reContent.getUser();
String reUserName = "";
if (reUser != null && !TextUtils.isEmpty(reUser.getScreen_name()))
reUserName = String.format("@%s :", reUser.getScreen_name());
txtReContent.setContent(reUserName + reContent.getText());
// 正文
setTextSize(txtReContent, textSize);
}
// pictures
StatusContent s = statusContent.getRetweeted_status() != null ? statusContent.getRetweeted_status() : statusContent;
if (AppSettings.isPicNone() && !(fragment instanceof TimelineDetailPagerFragment)) {
layPicturs.setVisibility(View.GONE);
if (s.getPic_urls() != null && s.getPic_urls().length > 0) {
txtPics.setText(String.format("%dPics", s.getPic_urls().length));
txtPics.setVisibility(View.VISIBLE);
txtPics.setTag(s);
txtPics.setOnClickListener(this);
}
else
txtPics.setVisibility(View.GONE);
}
else {
txtPics.setVisibility(View.GONE);
layPicturs.setPics(s, fragment);
}
// group visiable
txtVisiable.setVisibility(View.GONE);
if (statusContent.getVisible() != null && groupMap != null) {
String name = groupMap.get(statusContent.getVisible().getList_id());
if (!TextUtils.isEmpty(name)) {
txtVisiable.setText(String.format(fragment.getString(R.string.publish_group_visiable), name));
txtVisiable.setVisibility(View.VISIBLE);
if (layPicturs.getVisibility() == View.GONE) {
txtVisiable.setPadding(0, 0, 0, 0);
}
else {
txtVisiable.setPadding(0, vPadding, 0, 0);
}
}
}
// 有转发微博时,设置查看原微博评论的事件
if (statusContent.getRetweeted_status() != null && statusContent.getRetweeted_status().getUser() != null) {
layReStatusContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TimelineDetailPagerFragment.launch(fragment.getActivity(), statusContent.getRetweeted_status());
}
});
}
// 如果没有原微博和图片,把bottom的间隙都去掉
if (statusContent.getRetweeted_status() == null &&
(statusContent.getPic_urls() == null || statusContent.getPic_urls().length == 0)) {
txtContent.setPadding(txtContent.getPaddingLeft(), txtContent.getPaddingTop(), txtContent.getPaddingRight(), 0);
layReStatusContainer.setVisibility(View.GONE);
}
// 如果没有图片,有原微博,底部加点空隙
if (statusContent.getRetweeted_status() != null &&
(statusContent.getPic_urls() == null || statusContent.getPic_urls().length == 0)) {
txtReContent.setPadding(txtReContent.getPaddingLeft(), txtReContent.getPaddingTop(), txtReContent.getPaddingRight(), Utils.dip2px(getContext(), 8));
}
}
private void setUserInfo(WeiBoUser user, TextView txtName, ImageView imgPhoto, ImageView imgVerified) {
if (user != null) {
txtName.setText(AisenUtils.getUserScreenName(user));
if (imgPhoto != null) {
BitmapLoader.getInstance().display(fragment, AisenUtils.getUserPhoto(user), imgPhoto, ImageConfigUtils.getLargePhotoConfig());
BizFragment.createBizFragment(fragment).userShow(imgPhoto, user);
}
AisenUtils.setImageVerified(imgVerified, user);
}
else {
if (imgPhoto != null) {
imgPhoto.setImageDrawable(new ColorDrawable(Color.GRAY));
BizFragment.createBizFragment(fragment).userShow(imgPhoto, user);
}
imgVerified.setVisibility(View.GONE);
}
}
public static void setTextSize(TextView textView, float size) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
}
@Override
public void onClick(View v) {
}
}