/**
*
*/
package com.d3.d3xmpp.fragments;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.d3.d3xmpp.R;
import com.d3.d3xmpp.activites.ChatActivity;
import com.d3.d3xmpp.adapter.MsgAdapter;
import com.d3.d3xmpp.constant.MyApplication;
import com.d3.d3xmpp.d3View.D3Fragment;
import com.d3.d3xmpp.d3View.D3View;
import com.d3.d3xmpp.dao.MsgDbHelper;
import com.d3.d3xmpp.dao.NewMsgDbHelper;
import com.d3.d3xmpp.model.ChatItem;
/**
* @author MZH
*
*/
public class MsgFragment extends D3Fragment{
@D3View TextView emptyView;
@D3View EditText searchText;
@D3View ImageView searchBtn,searchImg;
@D3View ListView listView;
public List<ChatItem> lastMsgs = new ArrayList<ChatItem>();
private MsgDbHelper msgDbHelper;
private MsgAdapter adapter;
private NewMsgReceiver newMsgReceiver;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = setContentView(inflater, R.layout.acti_msg);
initView();
initData();
return view;
}
public void initView() {
msgDbHelper = MsgDbHelper.getInstance(getActivity());
adapter = new MsgAdapter(getActivity());
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ChatItem chatItem = lastMsgs.get(position);
Intent intent = new Intent();
intent.setClass(getActivity(), ChatActivity.class);
intent.putExtra("chatName", chatItem.chatName);
intent.putExtra("chatType", chatItem.chatType);
getActivity().startActivity(intent);
}
});
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
final int position, long id) {
new AlertDialog.Builder(getActivity())
.setTitle("��ʾ")
.setMessage("ȷ��ɾ����Ϣ��ɾ���ɻָ���")
.setPositiveButton("��", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String username = adapter.getItem(position).chatName;
NewMsgDbHelper.getInstance(getActivity()).delNewMsg(username);
MyApplication.getInstance().sendBroadcast(new Intent("ChatNewMsg"));
MsgDbHelper.getInstance(getActivity()).delChatMsg(username);
adapter.notifyDataSetChanged();
}
})
.setNegativeButton("��", null)
.show();
return true;
}
});
// ���յ�����Ϣ���¼�����
newMsgReceiver = new NewMsgReceiver();
getActivity().registerReceiver(newMsgReceiver,new IntentFilter("ChatNewMsg"));
searchText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
initData();
}
else {
lastMsgs = msgDbHelper.getLastMsg(s.toString());
adapter.clear();
adapter.addAll(lastMsgs);
}
}
});
}
public void initData() {
lastMsgs = msgDbHelper.getLastMsg();
adapter.clear();
adapter.addAll(lastMsgs);
if (adapter.getCount()==0) {
listView.setVisibility(View.GONE);
}
else {
listView.setVisibility(View.VISIBLE);
}
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.searchText:
break;
default:
break;
}
}
private class NewMsgReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ���½���
initData();
}
}
@Override
public void onDestroy() {
try {
if (newMsgReceiver != null)
getActivity().unregisterReceiver(newMsgReceiver);
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
@Override
public void onResume() {
searchText.clearFocus();
super.onResume();
}
}