/**
* Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.parttime.addresslist;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.easemob.chat.EMConversation;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.parttime.IM.ChatActivity;
import com.parttime.IM.activitysetting.ChatSendMsgHelper;
import com.parttime.pojo.SalaryUnit;
import com.parttime.publish.LabelUtils;
import com.qingmu.jianzhidaren.R;
import com.quark.citylistview.CharacterParser;
import com.quark.common.ToastUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* @ClassName: GroupsActivity
* @Description: 群列表
* @author howe
* @date 2015-2-12 上午10:43:04
*
*/
public class GroupsActivity extends BaseActivity implements TextWatcher, View.OnClickListener {
private ListView groupListView;
protected List<EMGroup> grouplist;
private GroupAdapter groupAdapter;
private InputMethodManager inputMethodManager;
public static GroupsActivity instance;
boolean isFromShare;// 是否是从分享跳转过来的
private String activityId, activityTitle, job_place, startTime;
private int pay, pay_type, leftcount;
private EMConversation conversation;// share分享的时候添加会话记录
private RelativeLayout topLayout;
private EditText search;
private TextView tvSearch;
CharacterParser characterParser;
private View clear;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_groups);
clear = findViewById(R.id.search_clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search.setText("");
}
});
topLayout = (RelativeLayout) findViewById(R.id.title);
search = (EditText) findViewById(R.id.query);
search.addTextChangedListener(this);
tvSearch = (TextView) findViewById(R.id.tv_search);
tvSearch.setOnClickListener(this);
isFromShare = getIntent().getExtras().getBoolean("isFromShare", false);
if (isFromShare) {
activityId = getIntent().getExtras().getString("activityId");
activityTitle = getIntent().getExtras().getString("title");
job_place = getIntent().getExtras().getString("job_place");
startTime = getIntent().getExtras().getString("start_time");
pay = getIntent().getExtras().getInt("pay");
pay_type = getIntent().getExtras().getInt("pay_type");
leftcount = getIntent().getExtras().getInt("left_count");
}
instance = this;
inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
grouplist = EMGroupManager.getInstance().getAllGroups();
groupListView = (ListView) findViewById(R.id.list);
groupAdapter = new GroupAdapter(this, 1);
groupAdapter.updateData(new ArrayList<>(grouplist));
groupListView.setAdapter(groupAdapter);
groupListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (!isFromShare) {
// 进入群聊
Intent intent = new Intent(GroupsActivity.this,
ChatActivity.class);
// it is group chat
intent.putExtra("chatType", ChatActivity.CHATTYPE_GROUP);
intent.putExtra("groupId",
groupAdapter.getItem(position).getGroupId());
startActivityForResult(intent, 0);
} else {
new ChatSendMsgHelper().sendShareActivity(groupAdapter.getItem(position).getGroupId(),
activityId,
job_place,
activityTitle,
LabelUtils.getSalaryLabel(GroupsActivity.this, SalaryUnit.parse(pay_type), pay));
ToastUtil.showShortToast("活动分享成功^_^");
GroupsActivity.this.finish();
// conversation = EMChatManager.getInstance()
// .getConversation(
// groupAdapter.getItem(position)
// .getGroupId());
// EMMessage message = EMMessage
// .createSendMessage(EMMessage.Type.TXT);
// // 如果是群聊,设置chattype,默认是单聊
// message.setChatType(ChatType.GroupChat);
// TextMessageBody txtBody = new TextMessageBody(
// activityTitle);
// // 设置消息body
// message.addBody(txtBody);
// // 增加自定义的拓展消息属性
// message.setAttribute("activityExtra", "1");
// message.setAttribute("activityId", activityId);
// message.setAttribute("activityTitle", activityTitle);
// String temp = null;
// // 日薪(0),时薪(1)
// if (pay_type == 0) {
// temp = "元/天";
// } else if (pay_type == 1) {
// temp = "元/小时";
// }
// message.setAttribute("activityXinZi", pay + temp);
//
// message.setAttribute("activityJobPlace", job_place);
//
// message.setAttribute("activityStartTime", startTime);
// message.setAttribute("leftCount",
// String.valueOf(leftcount));
// // 设置要发给谁,用户username或者群聊groupid
// message.setReceipt(groupAdapter.getItem(position)
// .getGroupId());
// // 把messgage加到conversation中
// conversation.addMessage(message);
// try {
// if (EMChatManager.getInstance() != null) {
// EMChatManager.getInstance()
// .sendMessage(message);
// ToastUtil.showShortToast("活动分享成功^_^");
// GroupsActivity.this.finish();
// } else {
// ToastUtil.showShortToast("当前网络状态太差,请稍后再试^_^");
// GroupsActivity.this.finish();
// }
// } catch (EaseMobException e) {
// e.printStackTrace();
// ToastUtil.showShortToast("当前网络状态太差,请稍后再试^_^");
// GroupsActivity.this.finish();
// }
//
setResult(RESULT_OK);
// 通知adapter有消息变动,adapter会根据加入的这条message显示消息和调用sdk的发送方法
// adapter.refresh();
// listView.setSelection(listView.getCount() - 1);
// mEditTextContent.setText("");
// setResult(RESULT_OK);
}
}
});
groupListView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
if (getCurrentFocus() != null)
inputMethodManager.hideSoftInputFromWindow(
getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
return false;
}
});
characterParser = CharacterParser.getInstance();
}
/**
* 进入公开群聊列表
*/
public void createGroup(View view) {
startActivityForResult(new Intent(GroupsActivity.this,
NewGroupActivity.class), 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onResume() {
super.onResume();
grouplist = EMGroupManager.getInstance().getAllGroups();
ArrayList<EMGroup> groups = new ArrayList<>(grouplist);
sortGroups(groups);
groupAdapter = new GroupAdapter(this, 1);
groupAdapter.updateData(groups);
groupListView.setAdapter(groupAdapter);
groupAdapter.notifyDataSetChanged();
}
private void sortGroups(ArrayList<EMGroup> groups) {
Collections.sort(groups, new Comparator<EMGroup>() {
@Override
public int compare(EMGroup lhs, EMGroup rhs) {
if(lhs == null || rhs == null){
return 0;
}
if(lhs.getLastModifiedTime() > rhs.getLastModifiedTime()){
return -1;
}else if(lhs.getLastModifiedTime() < rhs.getLastModifiedTime()){
return 1;
}
return 0;
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
instance = null;
}
/**
* 返回
*
* @param view View
*/
public void back(View view) {
finish();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > 0){
clear.setVisibility(View.VISIBLE);
}else {
clear.setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
Editable s = search.getText();
String enter = s.toString();
if(grouplist != null){
ArrayList<EMGroup> list = new ArrayList<>();
for (EMGroup g : grouplist){
if(g == null){
continue;
}
if(g.getGroupName() != null) {
String spell = characterParser.getSelling(g.getGroupName());
if (g.getGroupName().contains(enter) || spell.contains(s)) {
list.add(g);
}
}
}
groupAdapter.clear();
groupAdapter.addAll(list);
}
}
}