package com.parttime.IM;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.easemob.exceptions.EaseMobException;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.parttime.common.head.ActivityHead;
import com.parttime.constants.ActivityExtraAndKeys;
import com.parttime.net.DefaultCallback;
import com.parttime.net.GroupSettingRequest;
import com.parttime.pojo.GroupDescription;
import com.qingmu.jianzhidaren.R;
import com.quark.volley.VolleySington;
import org.apache.http.protocol.HTTP;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class EditGroupNoticeActivity extends BaseActivity implements View.OnClickListener{
private final String TAG = "EditGroupNoticeActivity";
private static final int MAX_COUNT = 140;
private EditText noticeContent;
private TextView contentCount;
private Button done;
private GroupDescription groupNotice;
private String groupId;
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_group_notice);
initValue();
bindData();
setListener();
}
private void initValue() {
//设置头部
ActivityHead activityHead = new ActivityHead(this);
activityHead.setCenterTxt1(R.string.group_notice);
noticeContent = (EditText)findViewById(R.id.notice_content);
contentCount = (TextView)findViewById(R.id.text_count);
done = (Button)findViewById(R.id.done);
}
private void bindData() {
groupId = getIntent().getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
String description = getIntent().getStringExtra(ActivityExtraAndKeys.ChatGroupNotice.GROUP_NOTICE_CONTENT);
if(! TextUtils.isEmpty(description)) {
try {
description = URLDecoder.decode(description, "UTF-8");
groupNotice = new Gson().fromJson(description, GroupDescription.class);
} catch (IllegalStateException | JsonSyntaxException | UnsupportedEncodingException ignore) {
Log.e(TAG, "description format is error , description = " + description);
}
}
if(groupNotice != null) {
noticeContent.setText(groupNotice.info);
contentCount.setText(getString(R.string.content_text_count,groupNotice.info.length(),MAX_COUNT));
}else{
contentCount.setText(getString(R.string.content_text_count,0,MAX_COUNT));
}
}
private void setListener(){
noticeContent.addTextChangedListener(editChangeListener);
done.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.done:
String info = noticeContent.getText().toString();
/*if(groupNotice != null) {
groupNotice.info = info;
String desc = new Gson().toJson(groupNotice);
try {
desc = URLEncoder.encode(desc,HTTP.UTF_8);*/
new GroupSettingRequest().updateGroupDescription(groupId, EMChatManager.getInstance().getCurrentUser(),info,null,queue, new DefaultCallback(){
@Override
public void success(Object obj) {
new Thread(new Runnable() {
@Override
public void run() {
try {
EMGroup group = EMGroupManager.getInstance().getGroupFromServer(groupId);
EMGroupManager.getInstance().createOrUpdateLocalGroup(group);
} catch (EaseMobException e) {
e.printStackTrace();
}
}
}).start();
Toast.makeText(EditGroupNoticeActivity.this,R.string.update_success , Toast.LENGTH_SHORT).show();
}
@Override
public void failed(Object obj) {
Toast.makeText(EditGroupNoticeActivity.this,R.string.action_failed , Toast.LENGTH_SHORT).show();
}
});
/* } catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}*/
}
}
private TextWatcher editChangeListener = new TextWatcher() {
private int editStart;//光标开始位置
private int editEnd;//光标结束位置
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int contentLength = start + count;
if(contentLength > MAX_COUNT){
Toast.makeText(EditGroupNoticeActivity.this, getString(R.string.group_notice_max_count_tip,MAX_COUNT),Toast.LENGTH_SHORT).show();
return ;
}
contentCount.setText(getString(R.string.content_text_count,contentLength,MAX_COUNT));
}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > MAX_COUNT) {
editStart = noticeContent.getSelectionStart();
editEnd = noticeContent.getSelectionEnd();
s.delete(editStart - 1, editEnd);
noticeContent.setText(s);
noticeContent.setSelection(MAX_COUNT);
}
}
};
}