package net.coding.program.common.enter;
import android.app.Activity;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import net.coding.program.R;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.common.photopick.ImageInfo;
import net.coding.program.common.photopick.PhotoPickActivity;
import net.coding.program.common.photopick.PhotoPickDetailActivity;
import net.coding.program.maopao.MaopaoAddActivity;
import net.coding.program.maopao.item.ContentAreaMuchImages;
import java.util.ArrayList;
/**
* Created by chenchao on 15/3/30.
* 可以发图片的评论输入框
*/
public class ImageCommentLayout {
public static final int RESULT_REQUEST_COMMENT_IMAGE = 1100;
public static final int RESULT_REQUEST_COMMENT_IMAGE_DETAIL = 1101;
private EnterLayout mEnterLayout;
private View mRootLayout;
private ViewGroup mFlowLayout;
private ArrayList<ImageView> mImageViews = new ArrayList<>();
private Activity mActivity;
private ImageLoadTool mImageLoader;
private ArrayList<ImageInfo> mArrayImages = new ArrayList<>();
private View.OnClickListener mClickImage = new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (int) v.getTag(R.id.image);
Intent intent = new Intent(mActivity, PhotoPickDetailActivity.class);
intent.putExtra(PhotoPickDetailActivity.PHOTO_BEGIN, pos);
intent.putExtra(PhotoPickDetailActivity.EXTRA_MAX, MaopaoAddActivity.PHOTO_MAX_COUNT);
intent.putExtra(PhotoPickDetailActivity.PICK_DATA, mArrayImages);
intent.putExtra(PhotoPickDetailActivity.ALL_DATA, mArrayImages);
mActivity.startActivityForResult(intent, RESULT_REQUEST_COMMENT_IMAGE_DETAIL);
}
};
public ImageCommentLayout(Activity activity, View.OnClickListener onClickSend, ImageLoadTool imageLoader) {
mEnterLayout = new EnterLayout(activity, onClickSend, EnterLayout.Type.TextOnly) {
@Override
protected boolean sendButtonEnable() {
return getContent().length() > 0 ||
!mArrayImages.isEmpty();
}
};
mImageLoader = imageLoader;
mActivity = activity;
View v = activity.findViewById(R.id.commonEnterRoot);
mRootLayout = v;
v.findViewById(R.id.commentImageButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mActivity, PhotoPickActivity.class);
intent.putExtra(PhotoPickActivity.EXTRA_PICKED, mArrayImages);
mActivity.startActivityForResult(intent, RESULT_REQUEST_COMMENT_IMAGE);
}
});
mFlowLayout = (ViewGroup) v.findViewById(R.id.imageLayout);
mFlowLayout.setVisibility(View.GONE);
}
public EnterLayout getEnterLayout() {
return mEnterLayout;
}
public void hide() {
mRootLayout.setVisibility(View.GONE);
}
public void onActivityResult(int RESULT_TYPE, Intent data) {
if (data == null) {
return;
}
if (RESULT_TYPE == RESULT_REQUEST_COMMENT_IMAGE) {
@SuppressWarnings("unchecked")
ArrayList<ImageInfo> images = (ArrayList) data.getSerializableExtra("data");
mArrayImages.clear();
mArrayImages.addAll(images);
updateCommentImage();
} else if (RESULT_TYPE == RESULT_REQUEST_COMMENT_IMAGE_DETAIL) {
@SuppressWarnings("unchecked")
ArrayList<ImageInfo> images = (ArrayList) data.getSerializableExtra("data");
mArrayImages = images;
updateCommentImage();
}
}
public void clearContent() {
mEnterLayout.hideKeyboard();
mEnterLayout.clearContent();
mArrayImages.clear();
updateCommentImage();
}
private void updateCommentImage() {
final int imageUrlCount = mArrayImages.size();
if (imageUrlCount == 0) {
mFlowLayout.setVisibility(View.GONE);
mFlowLayout.removeAllViews();
return;
}
mFlowLayout.setVisibility(View.VISIBLE);
int count = mFlowLayout.getChildCount();
if (imageUrlCount > count) {
int need = imageUrlCount - count;
LayoutInflater inflater = LayoutInflater.from(mFlowLayout.getContext());
for (int i = 0; i < need; ++i) {
inflater.inflate(R.layout.comment_image, mFlowLayout);
}
} else if (imageUrlCount < count) {
int release = count - imageUrlCount;
for (int i = 0; i < release; ++i) {
mFlowLayout.removeViewAt(count - 1 - i);
}
}
for (int i = 0; i < imageUrlCount; ++i) {
ImageView image = (ImageView) mFlowLayout.getChildAt(i);
image.setOnClickListener(mClickImage);
image.setTag(R.id.image, i);
mImageLoader.loadImage(image, mArrayImages.get(i).path, ContentAreaMuchImages.imageOptions);
}
mEnterLayout.updateSendButtonStyle();
}
public ArrayList<ImageInfo> getPickPhotos() {
return mArrayImages;
}
}