package com.ztspeech.simutalk2.qa;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import cn.ac.ia.directtrans.json.JsonEditLinkman;
import cn.ac.ia.directtrans.json.JsonRequestResult;
import com.ztspeech.simutalk2.R;
import com.ztspeech.simutalk2.data.FriendData;
import com.ztspeech.simutalk2.data.FriendDataList;
import com.ztspeech.simutalk2.data.MsgDataList;
import com.ztspeech.simutalk2.data.MsgGroupList;
import com.ztspeech.simutalk2.data.MsgInfoData;
import com.ztspeech.simutalk2.data.UserInfo;
import com.ztspeech.simutalk2.net.ListViewImageEngine;
import com.ztspeech.simutalk2.net.PostPackageEngine;
import com.ztspeech.simutalk2.net.ResultPackage;
import com.ztspeech.simutalk2.qa.message.ProcessMessage;
import com.ztspeech.simutalk2.qa.view.AdapterItemView;
import com.ztspeech.simutalk2.qa.view.DataListAdapter;
import com.ztspeech.simutalk2.qa.view.FriendItemView;
@SuppressLint("HandlerLeak")
public class FriendActivity extends UpdateBaseActivity implements OnClickListener, OnTouchListener {
// view control
private ListView mListView;
private ListViewImageEngine listViewImageLoaderEngine;
private Button mBtnFind;
// �����˵�
private PopupWindow mPopMenu;
private Button mBtnDelete;
private Button mBtnAddFriend;
private TextView mTvLine2;
// data
private FriendDataList mFriends = FriendDataList.getInstance();
private FriendData mSelectedItemData;
private JsonEditLinkman mJsonFriend = new JsonEditLinkman();
// private PostPackage mPostPackage;
private static boolean isShow = false;
private Context context;
private PostPackageEngine mPostPackageEngine;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 200:
postPackageCallBack((ResultPackage) msg.obj);
break;
case 404:
Toast.makeText(context, (String) msg.obj, Toast.LENGTH_LONG).show();
break;
default:
break;
}
};
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_friend);
context = this.getParent();
// getWindow().setFormat(PixelFormat.RGBA_8888);
mListView = (ListView) findViewById(R.id.lvQuestion);
mBtnFind = (Button) findViewById(R.id.btnFind);
mBtnFind.setOnClickListener(this);
initListView();
}
private View mPopMenuView;
private View getPopMenuView(){
if(mPopMenuView == null){
mPopMenuView = LayoutInflater.from(this).inflate(R.layout.pop_qa_msg, null);
mBtnDelete = (Button) mPopMenuView.findViewById(R.id.btnDel);
mBtnAddFriend = (Button) mPopMenuView.findViewById(R.id.btnAdd);
mTvLine2 = (TextView) mPopMenuView.findViewById(R.id.tvLine2);
mBtnAddFriend.setVisibility(View.GONE);
mTvLine2.setVisibility(View.GONE);
mPopMenu = new PopupWindow(mPopMenuView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mPopMenu.setBackgroundDrawable(new BitmapDrawable());
mBtnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopMenu.dismiss();
deleteFriend();
}
});
}
return mPopMenuView;
}
public void showPopMenu(View parentView) {
closePM();
getPopMenuView();
// pop λ���Ż�
int yoff = -15;
if((parentView.getBottom()+53) > mListView.getHeight() ) {
yoff = mListView.getHeight() - parentView.getBottom() - 53;
}
mPopMenu.showAsDropDown(parentView, 300, yoff);
mPopMenu.setFocusable(true);
mPopMenu.setOutsideTouchable(true);
mPopMenu.update();
}
public void closePM() {
if (mPopMenu != null) {
mPopMenu.dismiss();
}
}
@Override
protected void onPause() {
super.onPause();
isShow = false;
}
@Override
protected void onResume() {
super.onResume();
mFriends.setChanged(true);
isShow = true;
}
public static boolean isShowNotifitionTip(MsgDataList msgList) {
if (msgList.type == MsgInfoData.Define.TYPE_QA) {
return true;
}
FriendDataList.getInstance().setChanged(true);
if (isShow) {
// return false;
}
return true;
}
private DataListAdapter mListViewAdapter = new DataListAdapter(this, mFriends) {
@Override
public AdapterItemView getAdapterItemView(Context context) {
return new FriendItemView(context, listViewImageLoaderEngine);
}
};
private void initListView() {
listViewImageLoaderEngine = new ListViewImageEngine(mListView);
mListViewAdapter.setDataList(mFriends);
mListView.setOnItemClickListener(mAdapterLinstener);
mListView.setOnItemLongClickListener(mAdapterLongLinstener);
mListView.setDividerHeight(0);
mListView.setAdapter(mListViewAdapter);
}
private OnItemClickListener mAdapterLinstener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
FriendItemView v = (FriendItemView) arg1;
mSelectedItemData = (FriendData) v.getData();
showMesage();
}
};
protected void showMesage() {
Intent intent = new Intent(FriendActivity.this, MessageActivity.class);
intent.putExtra(MsgGroupList.PARAM_ID, mSelectedItemData.linkId);
intent.putExtra(MsgGroupList.PARAM_TYPE, MsgInfoData.Define.TYPE_MSG);
startActivityForResult(intent, 0);
}
private OnItemLongClickListener mAdapterLongLinstener = new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
FriendItemView v = (FriendItemView) arg1;
mSelectedItemData = (FriendData) v.getData();
showPopMenu(arg1);
return true;
}
};
private void deleteFriend() {
if (mSelectedItemData == null) {
return;
}
// mPostPackage = new PostPackage(this.getParent(),
// mDeleteFriendListener);
mJsonFriend.setDeleteLinkman(mSelectedItemData.id);
mPostPackageEngine = new PostPackageEngine(context, mJsonFriend, handler);
mPostPackageEngine.post();
// if (mPostPackage.post(mJsonFriend, getString(R.string.host_ip),
// true)) {
//
// mListView.setEnabled(false);
// WaitingActivity.waiting(this, 0);
// }
}
private void postPackageCallBack(ResultPackage result) {
JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
if (ret != null) {
if (ret.succeed == true) {
Toast.makeText(FriendActivity.this, getString(R.string.friend_delete_tip), Toast.LENGTH_SHORT).show();
ProcessMessage pro = ProcessMessage.getInstance();
pro.process(ret, false);
updateMesage();
} else {
new AlertDialog.Builder(FriendActivity.this.getParent()).setTitle("��ʾ").setMessage(ret.explain)
.setPositiveButton("ȷ��", null).show();
}
}
}
// public IHttpPostListener mDeleteFriendListener = new IHttpPostListener()
// {
//
// @Override
// public void onNetPostResult(PostPackage owner, ResultPackage result) {
//
// if (result.isNetSucceed()) {
//
// JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
// if (ret != null) {
// if (ret.succeed == true) {
//
// Toast.makeText(FriendActivity.this,
// getString(R.string.friend_delete_tip), Toast.LENGTH_SHORT)
// .show();
//
// ProcessMessage pro = ProcessMessage.getInstance();
// pro.process(ret);
// updateMesage();
// } else {
// new
// AlertDialog.Builder(FriendActivity.this.getParent()).setTitle("��ʾ").setMessage(ret.explain)
// .setPositiveButton("ȷ��", null).show();
// }
// }
// }
// mListView.setEnabled(true);
// WaitingActivity.stop();
// }
// };
private void updateListView() {
mListViewAdapter.notifyDataSetChanged();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
InteractionActivity.isQANewsUpdate = true;
updateListView();
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void updateMesage() {
if (mFriends.isChanged()) {
mFriends.setChanged(false);
updateListView();
}
}
@Override
public void onClick(View arg0) {
Intent intent = new Intent(FriendActivity.this, FindUserActivity.class);
startActivityForResult(intent, 0);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Intent intent = new Intent(FriendActivity.this, FindUserActivity.class);
startActivityForResult(intent, 0);
}
return false;
}
}