package edu.minggo.chat.adapters;
import java.io.IOException;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import edu.minggo.chat.R;
import edu.minggo.chat.model.MessageEntity;
import edu.minggo.chat.ui.ChattingMessageImageActivity;
import edu.minggo.chat.ui.PersonnelLocation;
import edu.minggo.chat.util.ClippingPicture;
import edu.minggo.chat.util.ClippingSounds;
import edu.minggo.chat.util.PlaySound;
import edu.minggo.chat.util.PlaySound.FinishListen;
import edu.minggo.chat.util.SmileyParser;
public class ChatMessageAdapter extends BaseAdapter {
private Context ctx;
private List<MessageEntity> entitys;
private MessageEntity entity;
@SuppressWarnings("unused")
private TextView tvName;
@SuppressWarnings("unused")
private TextView tvDate;
private TextView tvText;
private TextView time;
@SuppressWarnings("unused")
private ImageView userImage;
private ImageButton voiceBtn;
private TextView voiceTime;
private ImageButton locationBtn;
private Bitmap bmpDefaultPics;
private View view;
private ImageView talkImage;
private SmileyParser parser;
private String picPath;
@SuppressWarnings("unused")
private ImageView talkImages;
public static boolean isClick = false;
private Handler hdl;//������Ƶ��ʱ��Ƶ����
private boolean isRepeat0 = true;//������Ƶ��ʱ��Ƶ����
private boolean isRepeat1 = true;//������Ƶ��ʱ��Ƶ����
@SuppressWarnings("unused")
private boolean canPlay0 = true;
private List<MessageEntity> messageList;
public ChatMessageAdapter(Context context, List<MessageEntity> entitys,String TFuid) {
ctx = context;
this.entitys = entitys;
this.messageList = entitys;
/*messageList = MessageSQLService.getInstance(context).getdatas(
Integer.valueOf(UserInfomation.getUserID(ctx)),
Integer.valueOf(TFuid));*/
hdl = new Handler();
}
@Override
public int getCount() {
return entitys.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
entity = entitys.get(position);
int itemLayout = entity.getLayoutID();
/*if("".equals(entity.getText())){
view = LayoutInflater.from(ctx).inflate(R.layout.list_say_null, null);
return view;
}*/
switch(itemLayout){
case R.layout.chatting_item_msg_text_right:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
tvText = (TextView) view.findViewById(R.id.chatcontent_tv_right);
SmileyParser.init(ctx);
parser = SmileyParser.getInstance();
tvText.setText(parser.addSmileySpans(entity.getTtmContent()));
break;
case R.layout.chatting_item_msg_text_left:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
tvText = (TextView) view.findViewById(R.id.chatcontent_tv_left);
SmileyParser.init(ctx);
parser = SmileyParser.getInstance();
tvText.setText(parser.addSmileySpans(entity.getTtmContent()));
break;
case R.layout.chatting_item_msg_image_right:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
talkImage = (ImageView) view.findViewById(R.id.chatcontent_iv_right);
picPath = ClippingPicture.TALK_FILES2+entity.getTtmContent();
bmpDefaultPics = BitmapFactory.decodeFile(picPath);
talkImage.setImageBitmap(bmpDefaultPics);
talkImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if("".equals(messageList.get(position).getTtmContent())){
Toast.makeText(ctx, "ͼƬ�����ڻ���ɾ��", 300).show();
}else{
Toast.makeText(ctx, "�鿴ͼƬ", 300).show();
Intent intent = new Intent(ctx,ChattingMessageImageActivity.class);
intent.putExtra("picPath", picPath);
ctx.startActivity(intent);
}
}
});
break;
case R.layout.chatting_item_msg_image_left:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
talkImage = (ImageView)view.findViewById(R.id.chatcontent_iv_left);
picPath = ClippingPicture.TALK_FILES2+entity.getTtmContent();
bmpDefaultPics = BitmapFactory.decodeFile(picPath);
talkImage.setImageBitmap(bmpDefaultPics);
talkImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if("".equals(messageList.get(position).getTtmContent())||messageList.get(position).getTtmContent()==null){
Toast.makeText(ctx, "ͼƬ�����ڻ���ɾ��", 300).show();
}else{
Toast.makeText(ctx, "�鿴ͼƬ", 300).show();
Intent intent = new Intent(ctx,ChattingMessageImageActivity.class);
intent.putExtra("picPath", picPath);
ctx.startActivity(intent);
}
}
});
break;
case R.layout.chatting_item_msg_voice_right:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
voiceBtn = (ImageButton)view.findViewById(R.id.chatcontent_ib_right);
voiceTime = (TextView)view.findViewById(R.id.chatto_voice_time_tv);
voiceBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
try {
hdl.post(new Runnable() {
int i = 0;
@Override
public void run() {
if (isRepeat0==true) {
if (i==0) {
((ImageButton)v).setImageResource(R.drawable.chatto_voice_playing_f1);
}else if(i==1){
((ImageButton)v).setImageResource(R.drawable.chatto_voice_playing_f2);
}else if(i==3){
((ImageButton)v).setImageResource(R.drawable.chatto_voice_playing_f3);
i=-1;
}
i++;
hdl.postDelayed(this,250);
}else{
isRepeat0 = true;
((ImageButton)v).setImageResource(R.drawable.chatto_voice_playing);
}
}
});
new PlaySound().setOnFinishListen(new FinishListen() {
@Override
public void onFinish() {
isRepeat0 = false;
}
});
PlaySound.playVoice(ClippingSounds.TALKSOUND_FILE+messageList.get(position).getTtmContent(),ctx.getResources().getAssets());
} catch (IOException e) {
e.printStackTrace();
}
}
});
voiceTime.setText(entity.getVoiceTime()+"''");
break;
case R.layout.chatting_item_msg_voice_left:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
voiceBtn = (ImageButton)view.findViewById(R.id.chatcontent_ib_left);
voiceTime = (TextView)view.findViewById(R.id.chatfrom_voice_time_tv);
voiceTime.setText(entity.getVoiceTime()+"''");
voiceBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
if(entity.getTtmContent()!=null){
bmpDefaultPics = ((BitmapDrawable)(ctx.getResources().getDrawable(R.drawable.download_image_icon))).getBitmap();
try {
hdl.post(new Runnable() {
int i = 0;
@Override
public void run() {
if (isRepeat1==true) {
if (i==0) {
((ImageButton)v).setImageResource(R.drawable.chatfrom_group_voice_playing_f1);
}else if(i==1){
((ImageButton)v).setImageResource(R.drawable.chatfrom_group_voice_playing_f2);
}else if(i==3){
((ImageButton)v).setImageResource(R.drawable.chatfrom_group_voice_playing_f3);
i=-1;
}
i++;
hdl.postDelayed(this,250);
}else{
isRepeat1 = true;
((ImageButton)v).setImageResource(R.drawable.chatfrom_voice_playing);
}
}
});
new PlaySound().setOnFinishListen(new FinishListen() {
@Override
public void onFinish() {
isRepeat1 = false;
}
});
PlaySound.playVoice(ClippingSounds.TALKSOUND_FILE+messageList.get(position).getTtmContent(),ctx.getResources().getAssets());
} catch (IOException e) {
e.printStackTrace();
}
}else{
Toast.makeText(ctx, "��������..", 3000).show();
}
}
});
break;
case R.layout.chatting_item_msg_location_right:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
locationBtn = (ImageButton)view.findViewById(R.id.chatto_location_iv_right);
final String[] location = entity.getTtmContent().split(",");
locationBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intentss = new Intent(ctx,PersonnelLocation.class);
intentss.putExtra("Lon", location[1]);
intentss.putExtra("Lat", location[0]);
ctx.startActivity(intentss);
}
});
break;
case R.layout.chatting_item_msg_location_left:
view = LayoutInflater.from(ctx).inflate(itemLayout, null);
locationBtn = (ImageButton)view.findViewById(R.id.chatfrom_location_iv_left);
final String[] locationsx = entity.getTtmContent().split(",");
locationBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intentss = new Intent(ctx,PersonnelLocation.class);
intentss.putExtra("Lon", locationsx[1]);
intentss.putExtra("Lat", locationsx[0]);
ctx.startActivity(intentss);
}
});
break;
}
time = (TextView)view.findViewById(R.id.tv_sendtime);
time.setText(entity.getTtmTime());
userImage = (ImageView)view.findViewById(R.id.iv_userhead);
return view;
}
}