package com.hx.hxchat.activity;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMContactManager;
import com.easemob.chat.EMGroupManager;
import com.easemob.exceptions.EaseMobException;
import com.hx.hxchat.db.TopUserDao;
import com.hx.hxchat.domain.TopUser;
import com.hx.hxchat.domain.User;
import com.hx.hxchat.utils.CommonUtils;
import com.hx.hxchat.utils.LoadUserAvatar;
import com.hx.hxchat.utils.LoadUserAvatar.ImageDownloadedCallBack;
import com.mgw.member.R;
import com.mgw.member.manager.BaseApplication;
import com.mgw.member.ottoEvent.BusProvider;
import com.mgw.member.ottoEvent.FragmentNeedRefreshEvent;
import com.mgw.member.ottoEvent.GetOttoProduceManager;
import com.mgw.member.uitls.FileUtils;
import com.mgw.member.uitls.LogUtils;
import com.mgw.member.uitls.UIUtils;
@SuppressLint({ "SimpleDateFormat", "SdCardPath" })
public class ChatSingleSettingActivity extends HXBaseActivity implements
OnClickListener {
// 、置顶、、、、
private RelativeLayout rl_switch_chattotop;
private RelativeLayout rl_switch_block_groupmsg;
private RelativeLayout re_clear;
private RelativeLayout rl_change_person_name;
// 状态变化
private ImageView iv_switch_chattotop;
private ImageView iv_switch_unchattotop;
private ImageView iv_switch_block_groupmsg;
private ImageView iv_switch_unblock_groupmsg;
private TextView tv_comment;
private String userId;
private String userNick;
private String avatar;
String sex;
private LoadUserAvatar avatarLoader;
private List<String> blackList;
// 置顶列表
Map<String, TopUser> topMap = new HashMap<String, TopUser>();
private ProgressDialog progressDialog;
public static ChatSingleSettingActivity instance;
private static final int REQUEST_CODE_EDIT_BEIZHUINFO = 1;
private static final String TAG = ChatSingleSettingActivity.class.getSimpleName();
private String commentold;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_singlechat_setting);
avatarLoader = new LoadUserAvatar(this, FileUtils.getCacheDir());
instance = this;
// 获取传过来的userId
userId = getIntent().getStringExtra("userId");
User user = BaseApplication.getApplication().getContactList().get(userId);
// 资料错误则不显示
if (user == null) {
return;
}
userNick = user.getNick();
avatar = user.getAvatar();
// sex = user.getSex();
// 黑名单列表
blackList = EMContactManager.getInstance().getBlackListUsernames();
// 置顶列表
topMap =BaseApplication.getApplication().getTopUserList();
//
progressDialog = new ProgressDialog(this);
commentold = BaseApplication.getApplication().GetUserDao().getComment(userId);
initView();
initData();
}
private void initView() {
rl_switch_chattotop = (RelativeLayout) findViewById(R.id.rl_switch_chattotop);
rl_switch_block_groupmsg = (RelativeLayout) findViewById(R.id.rl_switch_block_groupmsg);
re_clear = (RelativeLayout) findViewById(R.id.re_clear);
rl_change_person_name = (RelativeLayout) findViewById(R.id.rl_change_person_name);
iv_switch_chattotop = (ImageView) findViewById(R.id.iv_switch_chattotop);
iv_switch_unchattotop = (ImageView) findViewById(R.id.iv_switch_unchattotop);
iv_switch_block_groupmsg = (ImageView) findViewById(R.id.iv_switch_block_groupmsg);
iv_switch_unblock_groupmsg = (ImageView) findViewById(R.id.iv_switch_unblock_groupmsg);
tv_comment = (TextView) findViewById(R.id.tv_comment);
// 初始化置顶和免打扰的状态
if (!blackList.contains(userId)) {
iv_switch_block_groupmsg.setVisibility(View.INVISIBLE);
iv_switch_unblock_groupmsg.setVisibility(View.VISIBLE);
} else {
iv_switch_block_groupmsg.setVisibility(View.VISIBLE);
iv_switch_unblock_groupmsg.setVisibility(View.INVISIBLE);
}
if (!topMap.containsKey(userId)) {
// 当前状态是w未置顶
iv_switch_chattotop.setVisibility(View.INVISIBLE);
iv_switch_unchattotop.setVisibility(View.VISIBLE);
} else {
// 当前状态是置顶
iv_switch_chattotop.setVisibility(View.VISIBLE);
iv_switch_unchattotop.setVisibility(View.INVISIBLE);
}
}
private void initData() {
rl_switch_chattotop.setOnClickListener(this);
rl_switch_block_groupmsg.setOnClickListener(this);
rl_change_person_name.setOnClickListener(this);
re_clear.setOnClickListener(this);
ImageView iv_avatar = (ImageView) this.findViewById(R.id.iv_avatar);
TextView tv_username = (TextView) this.findViewById(R.id.tv_username);
tv_username.setText(userNick);
iv_avatar.setImageResource(R.drawable.default_useravatar);
iv_avatar.setTag(avatar);
tv_comment.setText(commentold);
if (avatar != null && !avatar.equals("")) {
Bitmap bitmap = avatarLoader.loadImage(iv_avatar, avatar,
new ImageDownloadedCallBack() {
@Override
public void onImageDownloaded(ImageView imageView,
Bitmap bitmap) {
if (imageView.getTag() == avatar) {
imageView.setImageBitmap(bitmap);
}
}
});
if (bitmap != null) {
iv_avatar.setImageBitmap(bitmap);
}
}
iv_avatar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(ChatSingleSettingActivity.this,
// UserInfoActivity.class).putExtra("hxid", userId)
// .putExtra("nick", userNick).putExtra("avatar", avatar)
// .putExtra("sex", sex));
}
});
ImageView iv_avatar2 = (ImageView) this.findViewById(R.id.iv_avatar2);
iv_avatar2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(ChatSingleSettingActivity.this,
// CreatChatRoomActivity.class).putExtra("userId", userId));
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rl_switch_block_groupmsg: // 设置免打扰
progressDialog.setMessage("正在设置免打扰...");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
if (iv_switch_block_groupmsg.getVisibility() == View.VISIBLE) {
new Handler().postDelayed(new Runnable() {
public void run() {
removeOutBlacklist(userId);
progressDialog.dismiss();
}
}, 2000);
} else {
moveToBlacklist(userId);
}
break;
case R.id.re_clear: // 清空聊天记录
progressDialog.setMessage("正在清空消息...");
progressDialog.show();
// 按照你们要求必须有个提示,防止记录太少,删得太快,不提示
new Handler().postDelayed(new Runnable() {
public void run() {
EMChatManager.getInstance().clearConversation(userId);
progressDialog.dismiss();
}
}, 2000);
break;
case R.id.rl_switch_chattotop:
// 当前状态是已经置顶,点击后取消置顶
if (iv_switch_chattotop.getVisibility() == View.VISIBLE) {
iv_switch_chattotop.setVisibility(View.INVISIBLE);
iv_switch_unchattotop.setVisibility(View.VISIBLE);
if (topMap.containsKey(userId)) {
topMap.remove(userId);
TopUserDao topUserDao = new TopUserDao(
ChatSingleSettingActivity.this);
topUserDao.deleteTopUser(userId);
}
} else {
// 当前状态是未置顶点击后置顶
iv_switch_chattotop.setVisibility(View.VISIBLE);
iv_switch_unchattotop.setVisibility(View.INVISIBLE);
if (!topMap.containsKey(userId)) {
TopUser topUser = new TopUser();
topUser.setTime(System.currentTimeMillis());
// 1---表示是群组0----个人
topUser.setType(0);
topUser.setUserName(userId);
Map<String, TopUser> map = new HashMap<String, TopUser>();
map.put(userId, topUser);
topMap.putAll(map);
TopUserDao topUserDao = new TopUserDao(
ChatSingleSettingActivity.this);
topUserDao.saveTopUser(topUser);
}
}
break;
case R.id.rl_change_person_name:
if (CommonUtils.isFastDoubleClick())
break;
startActivityForResult(new Intent(this, EditActivity.class).putExtra("data", commentold).putExtra("title", UIUtils.getString(R.string.set_beizhu_info)), REQUEST_CODE_EDIT_BEIZHUINFO);
break;
default:
break;
}
}
/**
* 把user移入到免打扰(移到黑名单中)
*/
private void moveToBlacklist(final String username) {
new Thread(new Runnable() {
public void run() {
try {
// 加入到黑名单
EMContactManager.getInstance().addUserToBlackList(username,
false);
runOnUiThread(new Runnable() {
public void run() {
progressDialog.dismiss();
iv_switch_block_groupmsg
.setVisibility(View.VISIBLE);
iv_switch_unblock_groupmsg
.setVisibility(View.INVISIBLE);
}
});
} catch (final EaseMobException e) {
e.printStackTrace();
runOnUiThread(new Runnable() {
public void run() {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),
"设置失败,原因:" + e.toString(),
Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
}
/**
* 移出免打扰
*
* @param tobeRemoveUser
*/
private void removeOutBlacklist(final String tobeRemoveUser) {
try {
// 移出黑民单
EMContactManager.getInstance().deleteUserFromBlackList(
tobeRemoveUser);
iv_switch_block_groupmsg.setVisibility(View.INVISIBLE);
iv_switch_unblock_groupmsg.setVisibility(View.VISIBLE);
} catch (EaseMobException e) {
e.printStackTrace();
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "设置失败",
Toast.LENGTH_SHORT).show();
}
});
}
}
public void back(View v) {
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String st1 = getResources().getString(R.string.Is_setting);
String st5= getResources().getString(R.string.Is_setting_beizhu);
if (resultCode == RESULT_OK) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(ChatSingleSettingActivity.this);
progressDialog.setMessage(st1);
progressDialog.setCanceledOnTouchOutside(false);
}
switch (requestCode) {
case REQUEST_CODE_EDIT_BEIZHUINFO: // 修改beizhu
final String returnData = data.getStringExtra("data");
BaseApplication.getApplication().GetUserDao().setComment(userId, returnData);
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String comment = BaseApplication.getApplication().GetUserDao().getComment(userId);
tv_comment.setText(comment!=null?comment:"");
if(BaseApplication.getApplication().getContactList().get(userId)!=null){
BaseApplication.getApplication().getContactList().get(userId).setComment(comment);
}
}
});
LogUtils.i(TAG, "修改备注成功"+returnData);
break;
default:
break;
}
}
}
}