package net.coding.program.maopao;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.model.UserObject;
import java.util.List;
/**
* Created by chenchao on 16/7/26.
*/
public class BaseUsersArea {
public LinearLayout likeUsersLayout;
Fragment fragment;
Activity activity;
ImageLoadTool imageLoadTool;
View.OnClickListener mOnClickUser;
View.OnClickListener onClickLikeUsrs = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), LikeUsersListActivity_.class);
intent.putExtra("id", (int) v.getTag());
startActivity(intent);
}
};
public BaseUsersArea(LinearLayout likeUsersLayout, Fragment fragment, Activity activity, View.OnClickListener mOnClickUser, ImageLoadTool imageLoadTool) {
this.fragment = fragment;
this.activity = activity;
this.likeUsersLayout = likeUsersLayout;
this.mOnClickUser = mOnClickUser;
this.imageLoadTool = imageLoadTool;
likeUsersLayout.getViewTreeObserver().addOnPreDrawListener(new MyPreDraw(likeUsersLayout));
}
protected Activity getActivity() {
if (activity != null) {
return activity;
} else {
return fragment.getActivity();
}
}
protected void startActivity(Intent intent) {
if (activity != null) {
activity.startActivity(intent);
} else {
fragment.startActivity(intent);
}
}
public void displayLikeUser() {
// Maopao.MaopaoObject maopaoData = (Maopao.MaopaoObject) likeUsersLayout.getTag(MaopaoListBaseFragment.TAG_MAOPAO);
//
// if ((maopaoData.likes + maopaoData.rewards) == 0) {
// likeUsersAllLayout.setVisibility(View.GONE);
// } else {
// likeUsersAllLayout.setVisibility(View.VISIBLE);
// }
//
// if (likeUsersLayout.getChildCount() == 0) {
// likeUsersLayout.setTag(maopaoData);
// return;
// }
if (likeUsersLayout.getChildCount() == 0) {
return;
}
List<UserObject> users = (List<UserObject>) likeUsersLayout.getTag();
final List<UserObject> displayUsers = users;
// for (Maopao.Like_user like : maopaoData.like_users) {
// boolean find = false;
// for (Maopao.Like_user reward : displayUsers) {
// if (like.global_key.equals(reward.global_key)) {
// find = true;
// break;
// }
// }
//
// if (!find) {
// displayUsers.add(like);
// }
// }
int readUserCount = users.size();
int imageCount = likeUsersLayout.getChildCount() - 1;
// Log.d("", "ddd disgood " + imageCount + "," + displayUsers.size() + "," + readUserCount);
// likeUsersLayout.getChildAt(imageCount).setTag();
if (displayUsers.size() < imageCount) {
if (readUserCount <= imageCount) {
int i = 0;
for (; i < displayUsers.size(); ++i) {
updateImageDisplay(displayUsers, i);
}
for (; i < imageCount; ++i) {
likeUsersLayout.getChildAt(i).setVisibility(View.GONE);
}
likeUsersLayout.getChildAt(i).setVisibility(View.GONE);
} else {
int i = 0;
for (; i < displayUsers.size(); ++i) {
updateImageDisplay(displayUsers, i);
}
for (; i < imageCount; ++i) {
likeUsersLayout.getChildAt(i).setVisibility(View.GONE);
}
TextView textV = (TextView) likeUsersLayout.getChildAt(imageCount);
textV.setVisibility(View.VISIBLE);
textV.setText(readUserCount + "");
}
} else {
--imageCount;
for (int i = 0; i < imageCount; ++i) {
updateImageDisplay(displayUsers, i);
}
likeUsersLayout.getChildAt(imageCount).setVisibility(View.GONE);
TextView textView = (TextView) likeUsersLayout.getChildAt(imageCount + 1);
textView.setVisibility(View.VISIBLE);
textView.setText(readUserCount + "");
}
imageCount = likeUsersLayout.getChildCount() - 1;
for (int i = 0; i < imageCount; ++i) {
View v = likeUsersLayout.getChildAt(i);
if (v.getVisibility() == View.VISIBLE) {
v.setTag(displayUsers.get(i).global_key);
} else {
break;
}
}
}
protected void updateImageDisplay(List<UserObject> likeUsers, int i) {
ImageView image = (ImageView) likeUsersLayout.getChildAt(i);
image.setVisibility(View.VISIBLE);
UserObject like_user = likeUsers.get(i);
image.setTag(LikeUserImage.TAG, like_user);
imageLoadTool.loadImage(image, like_user.avatar);
}
protected class MyPreDraw implements ViewTreeObserver.OnPreDrawListener {
private LinearLayout layout;
public MyPreDraw(LinearLayout linearLayout) {
layout = linearLayout;
}
@Override
public boolean onPreDraw() {
int width = layout.getWidth();
if (width <= 0) {
return true;
}
if (layout.getChildCount() > 0) {
layout.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
width -= (layout.getPaddingLeft() + layout.getPaddingRight());
int imageWidth = Global.dpToPx(30);
int imageMargin = Global.dpToPx(5);
int shenxia = width % (imageWidth + imageMargin);
int count = width / (imageWidth + imageMargin);
imageMargin += shenxia / count;
imageMargin /= 2;
final int MAX_DISPLAY_USERS = 10;
if (count > MAX_DISPLAY_USERS) {
count = MAX_DISPLAY_USERS;
}
for (int i = 0; i < count; ++i) {
LikeUserImage view = new LikeUserImage(getActivity());
layout.addView(view);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) view.getLayoutParams();
lp.width = imageWidth;
lp.height = imageWidth;
lp.leftMargin = imageMargin;
lp.rightMargin = imageMargin;
view.setLayoutParams(lp);
view.setOnClickListener(mOnClickUser);
}
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER);
layout.addView(textView);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) textView.getLayoutParams();
lp.width = imageWidth;
lp.height = imageWidth;
lp.leftMargin = imageMargin;
lp.rightMargin = imageMargin;
textView.setBackgroundResource(R.drawable.ic_bg_good_count);
textView.setTextColor(0xffffffff);
textView.setVisibility(View.GONE);
textView.setOnClickListener(onClickLikeUsrs);
displayLikeUser();
return true;
}
}
}