package com.umeng.comm.ui.imagepicker.widgets;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.umeng.comm.core.imageloader.ImgDisplayOption;
import com.umeng.comm.core.sdkmanager.ImageLoaderManager;
import com.umeng.comm.core.utils.ResFinder;
import com.umeng.comm.ui.imagepicker.model.PhotoModel;
/**
* 图片Item View
*/
public class PhotoItemView extends LinearLayout implements OnCheckedChangeListener,
OnLongClickListener {
private ImageView mPhotoImageView;
private CheckBox mPhotoCheckBox;
private onPhotoItemCheckedListener listener;
private PhotoModel mPhotoModel;
private boolean isCheckAll;
private onItemClickListener mItemClickListener;
private int position;
private PhotoItemView(Context context) {
super(context);
}
public PhotoItemView(Context context, onPhotoItemCheckedListener listener) {
this(context);
LayoutInflater.from(context).inflate(
ResFinder.getLayout("umeng_comm_imagepicker_photo_item"), this,
true);
this.listener = listener;
setOnLongClickListener(this);
mPhotoImageView = (ImageView) findViewById(ResFinder.getId("umeng_comm_iv_photo_lpsi"));
mPhotoCheckBox = (CheckBox) findViewById(ResFinder.getId("umeng_comm_cb_photo_lpsi"));
mPhotoCheckBox.setOnCheckedChangeListener(this); // CheckBox的监听器
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isCheckAll) {
listener.onCheckedChanged(this, mPhotoModel, isChecked);
}
}
public void updatePhotoItemState(boolean isChecked) {
if (isChecked) {
setDrawingable();
mPhotoImageView.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
} else {
mPhotoImageView.clearColorFilter();
}
mPhotoCheckBox.setChecked(isChecked);
mPhotoModel.setChecked(isChecked);
}
public void setImageDrawable(final PhotoModel photo) {
this.mPhotoModel = photo;
ImgDisplayOption option = ImgDisplayOption.getCommonDisplayOption() ;
option.requestOrigin = false ;
ImageLoaderManager.getInstance().getCurrentSDK().displayImage(
"file://" + photo.getOriginalPath(), mPhotoImageView, option);
}
private void setDrawingable() {
mPhotoImageView.setDrawingCacheEnabled(true);
mPhotoImageView.buildDrawingCache();
}
@Override
public void setSelected(boolean selected) {
if (mPhotoModel == null) {
return;
}
isCheckAll = true;
mPhotoCheckBox.setChecked(selected);
isCheckAll = false;
}
public void setOnClickListener(onItemClickListener l, int position) {
this.mItemClickListener = l;
this.position = position;
}
public static interface onPhotoItemCheckedListener {
public void onCheckedChanged(PhotoItemView photoItem, PhotoModel photoModel,
boolean isChecked);
}
public interface onItemClickListener {
public void onItemClick(int position);
}
@Override
public boolean onLongClick(View v) {
if (mItemClickListener != null)
mItemClickListener.onItemClick(position);
return true;
}
}