package org.aisen.weibo.sina.ui.fragment.mention;
import android.content.DialogInterface;
import android.text.Html;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import org.aisen.android.component.bitmaploader.core.ImageConfig;
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.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.compress.TimelineThumbBitmapCompress;
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.fragment.comment.TimelineDetailPagerFragment;
import org.aisen.weibo.sina.ui.widget.AisenTextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by wangdan on 16/1/24.
*/
public class MentionCmtItemView extends ARecycleViewItemView<StatusComment> implements View.OnClickListener {
public static final int RES_LAYOUT_ID = R.layout.item_mention_cmt;
@ViewInject(id = R.id.imgPhoto)
ImageView imgPhoto;
@ViewInject(id = R.id.txtName)
TextView txtName;
@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.imgRePhoto)
ImageView imgRePhoto;
@ViewInject(id = R.id.txtReContent)
AisenTextView txtReContent;
@ViewInject(id = R.id.layStatus)
View layStatus;
@ViewInject(id = R.id.layDivider)
View layDivider;
@ViewInject(id = R.id.txtStatusContent)
AisenTextView txtStatusContent;
@ViewInject(id = R.id.img)
ImageView imgView;
@ViewInject(id = R.id.btnMenus)
protected View btnMenus;
private BizFragment bizFragment;
private ABaseFragment fragment;
public MentionCmtItemView(View itemView, ABaseFragment fragment, BizFragment bizFragment) {
super(fragment.getActivity(), itemView);
this.fragment = fragment;
this.bizFragment = bizFragment;
}
@Override
public void onBindData(View convertView, StatusComment data, int position) {
WeiBoUser user = data.getUser();
if (user != null) {
BitmapLoader.getInstance().display(fragment,
AisenUtils.getUserPhoto(user),
imgPhoto, ImageConfigUtils.getLargePhotoConfig());
bizFragment.userShow(imgPhoto, user);
txtName.setText(AisenUtils.getUserScreenName(user));
}
else {
bizFragment.userShow(imgPhoto, null);
txtName.setText(R.string.error_cmts);
imgPhoto.setImageResource(R.drawable.user_placeholder);
}
txtContent.setContent(AisenUtils.getCommentText(data.getText()));
AisenUtils.setTextSize(txtContent);
String createAt = AisenUtils.convDate(data.getCreated_at());
String from = String.format("%s", Html.fromHtml(data.getSource()));
String desc = String.format("%s %s", createAt, from);
txtDesc.setText(desc);
// 源评论
if (data.getReply_comment() != null) {
layRe.setVisibility(View.VISIBLE);
txtReContent.setContent(AisenUtils.getCommentText(data.getReply_comment().getText()));
AisenUtils.setTextSize(txtReContent);
if (data.getReply_comment().getUser() != null) {
BitmapLoader.getInstance().display(fragment,
AisenUtils.getUserPhoto(data.getReply_comment().getUser()),
imgRePhoto, ImageConfigUtils.getLargePhotoConfig());
bizFragment.userShow(imgRePhoto, data.getReply_comment().getUser());
}
else {
bizFragment.userShow(imgRePhoto, null);
}
}
else {
layRe.setVisibility(View.GONE);
}
if (layStatus != null) {
if (data.getStatus() != null) {
layDivider.setVisibility(View.VISIBLE);
layStatus.setVisibility(View.VISIBLE);
layStatus.setTag(data.getStatus());
layStatus.setOnClickListener(this);
txtStatusContent.setContent(data.getStatus().getText());
AisenUtils.setTextSize(txtStatusContent);
String image = null;
// 先取微博的第一张图
StatusContent status = data.getStatus();
if (status != null && status.getRetweeted_status() != null)
status = status.getRetweeted_status();
if (status == null || status.getPic_urls() == null || status.getPic_urls().length == 0) {
}
else {
image = status.getPic_urls()[0].getThumbnail_pic();
}
// 没图就取头像
if (TextUtils.isEmpty(image) && status.getUser() != null) {
image = status.getUser().getAvatar_large();
}
if (!TextUtils.isEmpty(image)) {
imgView.setVisibility(View.VISIBLE);
ImageConfig config = new ImageConfig();
config.setId("comments");
config.setLoadfaildRes(R.drawable.bg_timeline_loading);
config.setLoadingRes(R.drawable.bg_timeline_loading);
config.setMaxWidth(300);
config.setMaxHeight(300);
config.setBitmapCompress(TimelineThumbBitmapCompress.class);
BitmapLoader.getInstance().display(fragment, image, imgView, config);
}
else {
imgView.setVisibility(View.GONE);
}
bizFragment.bindOnTouchListener(txtStatusContent);
}
else {
layDivider.setVisibility(View.GONE);
layStatus.setVisibility(View.GONE);
}
}
if (btnMenus != null) {
btnMenus.setTag(data);
btnMenus.setOnClickListener(this);
}
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.layStatus) {
final StatusContent status = (StatusContent) v.getTag();
TimelineDetailPagerFragment.launch(fragment.getActivity(), status);
}
else if (v.getId() == R.id.btnMenus) {
final String[] commentMenuArr = GlobalContext.getInstance().getResources().getStringArray(R.array.cmt_menus);
final StatusComment comment = (StatusComment) v.getTag();
List<String> menuList = new ArrayList<String>();
// 转发
if (comment.getStatus() != null &&
(comment.getUser() != null && !comment.getUser().getIdstr().equals(AppContext.getAccount().getUser().getIdstr())))
menuList.add(commentMenuArr[1]);
// 复制
menuList.add(commentMenuArr[0]);
// 删除
if (comment.getUser() != null && AppContext.getAccount().getUser().getIdstr().equals(comment.getUser().getIdstr()))
menuList.add(commentMenuArr[2]);
final String[] menus = new String[menuList.size()];
for (int i = 0; i < menuList.size(); i++)
menus[i] = menuList.get(i);
AisenUtils.showMenuDialog(fragment,
v,
menus,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AisenUtils.commentMenuSelected(fragment, menus[which], comment);
}
});
}
}
}