package com.parttime.IM.activitysetting;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.android.volley.RequestQueue;
import com.carson.constant.ConstantForSaveList;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMConversation;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.easemob.chatuidemo.db.MessageSetDao;
import com.easemob.exceptions.EaseMobException;
import com.parttime.common.head.ActivityHead;
import com.parttime.constants.ActionConstants;
import com.parttime.constants.ActivityExtraAndKeys;
import com.parttime.net.GroupSettingRequest;
import com.parttime.pojo.BaseUser;
import com.parttime.pojo.MessageSet;
import com.parttime.widget.SetItem;
import com.qingmu.jianzhidaren.R;
import com.quark.jianzhidaren.ApplicationControl;
import com.quark.volley.VolleySington;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class GroupSettingActivity extends BaseActivity implements View.OnClickListener {
private final String TAG = "GroupSettingActivity";
private ActivityHead headView;
private SetItem top, //置顶
undisturb, //免扰
gag; //禁言
private String groupId ;
private EMGroup group;
private String groupType = null;
private MessageSet messageSet;
private boolean isDisturb;
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
private MessageSetDao dao = new MessageSetDao(ApplicationControl.getInstance());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_setting_detail);
initView();
bindView();
}
private void initView() {
headView = new ActivityHead(this);
top = (SetItem)findViewById(R.id.top);
undisturb = (SetItem)findViewById(R.id.undisturb);
gag = (SetItem)findViewById(R.id.gag);
}
private void bindView() {
groupId = getIntent().getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
if(groupId != null) {
group = EMGroupManager.getInstance().getGroup(groupId);
//获取群组type
Hashtable<String, EMConversation> conversations = EMChatManager
.getInstance().getAllConversations();
if(conversations != null){
EMConversation conversation = conversations.get(groupId);
if(conversation != null){
groupType = conversation.getType().name();
}
}else{
groupType = EMConversation.EMConversationType.GroupChat.name();
}
if( groupType != null) {
//查询置顶
messageSet = dao.getMessageSet(groupId, groupType);
}
}
headView.setCenterTxt1(R.string.group_setting);
if(messageSet != null){
top.setRightImage(R.drawable.settings_btn_switch_on);
}
List<String> disturbListGroup = EMChatManager.getInstance()
.getChatOptions().getReceiveNoNotifyGroup();
if(disturbListGroup != null && disturbListGroup.contains(groupId)){
undisturb.setRightImage(R.drawable.settings_btn_switch_on);
isDisturb = true;
}else{
undisturb.setRightImage(R.drawable.settings_btn_switch_off);
}
top.setOnClickListener(this);
undisturb.setOnClickListener(this);
gag.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.top:
toTop();
break;
case R.id.undisturb:
disturbSet();
break;
case R.id.gag:
ConstantForSaveList.userIdUserCache.clear();
Map<String,GroupSettingRequest.AppliantResult> groupAppliantCache = ConstantForSaveList.groupAppliantCache;
GroupSettingRequest.AppliantResult appliantResult = groupAppliantCache.get(groupId);
if(appliantResult != null && appliantResult.userList != null && appliantResult.userList.size() > 0){
for(GroupSettingRequest.UserVO userVO : appliantResult.userList){
if(userVO != null){
BaseUser baseUser = new BaseUser();
baseUser.userId = String.valueOf(userVO.userId);
baseUser.name = userVO.name;
baseUser.picture = userVO.picture;
ConstantForSaveList.userIdUserCache.put(String.valueOf(userVO.userId),baseUser);
}
}
}
Intent intent = new Intent(this, GroupGagActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID, groupId);
startActivity(intent);
break;
}
}
private void toTop(){
if(group == null){
return;
}
if(messageSet == null){
messageSet = new MessageSet();
messageSet.name = group.getGroupId();
messageSet.type = groupType;
messageSet.isTop = true;
messageSet.createTime = System.currentTimeMillis();
long result = dao.save(messageSet);
if(result <= 0 ){
Log.i(TAG,"to top failed");
}
top.setRightImage(R.drawable.settings_btn_switch_on);
}else{
dao.delete(groupId, groupType);
messageSet = null;
top.setRightImage(R.drawable.settings_btn_switch_off);
}
}
public void disturbSet(){
if(isDisturb){
/* new Thread(new Runnable(){
@Override
public void run() {
try {
EMGroupManager.getInstance().unblockGroupMessage(groupId);
} catch (EaseMobException e) {
e.printStackTrace();
}
}
}).start();*/
List<String> pingbiListGroup = EMChatManager.getInstance()
.getChatOptions().getReceiveNoNotifyGroup();
if (pingbiListGroup != null) {
if (pingbiListGroup.contains(groupId)) {
pingbiListGroup.remove(groupId);
}
}
EMChatManager.getInstance().getChatOptions()
.setReceiveNotNoifyGroup(pingbiListGroup);
isDisturb = false;
undisturb.setRightImage(R.drawable.settings_btn_switch_off);
}else{
/*new Thread(new Runnable(){
@Override
public void run() {
try {
EMGroupManager.getInstance().unblockGroupMessage(groupId);
} catch (EaseMobException e) {
e.printStackTrace();
}
}
}).start();*/
List<String> pingbiListGroup = EMChatManager.getInstance()
.getChatOptions().getReceiveNoNotifyGroup();
pingbiListGroup.add(groupId);
EMChatManager.getInstance().getChatOptions()
.setReceiveNotNoifyGroup(pingbiListGroup);
isDisturb = true;
undisturb.setRightImage(R.drawable.settings_btn_switch_on);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent(ActionConstants.ACTION_MESSAGE_TO_TOP));
}
}