package com.parttime.addresslist.userdetail;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.easemob.chat.EMGroupManager;
import com.easemob.exceptions.EaseMobException;
import com.parttime.addresslist.GroupUpdateRemarkActivity;
import com.parttime.base.WithTitleActivity;
import com.parttime.constants.ActivityExtraAndKeys;
import com.qingmu.jianzhidaren.R;
import com.quark.volley.VolleySington;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
public class UserDetailActivity extends WithTitleActivity implements View.OnClickListener {
public String groupId;
public boolean isGroupOwner = false;
public FromAndStatus fromAndStatus;
public String userId;//当前显示的UserId
//0:没有获取成功 1:禁言 2:非禁言
private int forbiddenValue = 0;
public ViewPager viewPager ;
public UserDetailPagerAdapter adapter ;
private LinkedHashSet<String> set;
public RequestQueue queue;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_user_detail);
super.onCreate(savedInstanceState);
queue = VolleySington.getInstance().getRequestQueue();
initView();
bindData();
}
private void initView() {
left(TextView.class, R.string.back);
right(TextView.class, R.string.more ,new View.OnClickListener() {
@Override
public void onClick(View v) {
showMore();
}
});
center(R.string.user_detail);
viewPager = (ViewPager)findViewById(R.id.viewPager);
}
private void bindData() {
groupId = getIntent().getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
Serializable serializable = getIntent().getSerializableExtra(ActivityExtraAndKeys.UserDetail.FROM_AND_STATUS);
userId = getIntent().getStringExtra(ActivityExtraAndKeys.UserDetail.SELECTED_USER_ID);
isGroupOwner = getIntent().getBooleanExtra(ActivityExtraAndKeys.GroupSetting.GROUPOWNER,false);
ArrayList<String> userIds = getIntent().getStringArrayListExtra(ActivityExtraAndKeys.USER_ID);
if(isGroupOwner && userIds != null && userIds.size() > 0){
rightWrapper.setVisibility(View.VISIBLE);
//初始化更多的禁言管理的数据
if(!TextUtils.isEmpty(userId)){
initUserBlock(userId);
}
}else{
rightWrapper.setVisibility(View.GONE);
}
if(serializable != null && serializable instanceof FromAndStatus){
fromAndStatus = (FromAndStatus)serializable;
}
if(fromAndStatus == null){
fromAndStatus = FromAndStatus.FROM_ACTIVITY_GROUP_VIEW_RESUME;
}
int viewPagerCurrentItem = -1;
set = new LinkedHashSet<>();
if(userIds != null && userIds.size() > 0){
for(String userId : userIds){
if(TextUtils.isEmpty(userId)){
continue;
}
set.add(userId);
}
viewPagerCurrentItem = userIds.indexOf(userId);
}
adapter = new UserDetailPagerAdapter(getSupportFragmentManager(),this);
adapter.setData(set);
adapter.fromAndStatus = fromAndStatus;
viewPager.setAdapter(adapter);
//设置当前页显示的user
if(viewPagerCurrentItem > -1){
viewPager.setCurrentItem(viewPagerCurrentItem);
}
}
public void initUserBlock(final String userId){
this.userId = userId;
new Thread(new Runnable() {
public void run() {
try {
List<String> blockedList = EMGroupManager.getInstance()
.getBlockedUsers(groupId);
if (blockedList != null ) {
if(blockedList.contains(userId)){
forbiddenValue = 1;
}else{
forbiddenValue = 2;
}
}
} catch (EaseMobException e) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(),
"获取失败,请检查网络或稍后再试", Toast.LENGTH_LONG).show();
}
});
}
}
}).start();
}
@Override
protected ViewGroup getLeftWrapper() {return null;}
@Override
protected ViewGroup getRightWrapper() {return null;}
@Override
protected TextView getCenter() {return null;}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
switch (v.getId()){
}
}
private Dialog showMore() {
final Dialog more = new Dialog(this, R.style.ActionSheet);
LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(
R.layout.activity_person_detail_more, null);
final int cFullFillWidth = 10000;
layout.setMinimumWidth(cFullFillWidth);
//禁言
final TextView forbiddenTable = (TextView) layout.findViewById(R.id.forbidden_talk);
//取消禁言
TextView cancelForbiddenTalk = (TextView) layout.findViewById(R.id.cancel_forbidden_talk);
//更新群备注
TextView updateGroupNotice = (TextView) layout.findViewById(R.id.update_group_notice);
//取消
TextView cancel = (TextView) layout.findViewById(R.id.cancel);
forbiddenTable.setVisibility(View.GONE);
cancelForbiddenTalk.setVisibility(View.GONE);
if(forbiddenValue == 1){
cancelForbiddenTalk.setVisibility(View.VISIBLE);
}else if(forbiddenValue == 2){
forbiddenTable.setVisibility(View.VISIBLE);
}
// 禁言
forbiddenTable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
more.dismiss();
showWait(true);
new Thread(new Runnable() {
@Override
public void run() {
try {
EMGroupManager.getInstance().blockUser(groupId,
userId);
forbiddenValue = 1;
} catch (EaseMobException e) {
e.printStackTrace();
}
showWait(false);
}
}).start();
}
});
//取消禁言
cancelForbiddenTalk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
more.dismiss();
showWait(true);
new Thread(new Runnable() {
@Override
public void run() {
try {
EMGroupManager.getInstance().unblockUser(groupId,
userId);
forbiddenValue = 2;
} catch (EaseMobException e) {
e.printStackTrace();
}
showWait(false);
}
}).start();
}
});
//更新群备注
updateGroupNotice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(adapter.cache != null && adapter.cache.get(userId) != null) {
Intent intent = new Intent(UserDetailActivity.this, GroupUpdateRemarkActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID, groupId);
intent.putExtra(ActivityExtraAndKeys.USER_ID, userId);
intent.putExtra(ActivityExtraAndKeys.GroupUpdateRemark.USER_NAME, adapter.cache.get(userId).name);
startActivity(intent);
more.dismiss();
}
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
more.dismiss();
}
});
Window w = more.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
lp.y = -1000;
lp.gravity = Gravity.BOTTOM;
more.onWindowAttributesChanged(lp);
more.setCanceledOnTouchOutside(true);
more.setContentView(layout);
more.show();
return more;
}
public static enum FromAndStatus{
FROM_NORMAL_GROUP_AND_FRIEND, //从普通群组过来 不是好友 //从普通群组过来 是好友
FROM_ACTIVITY_GROUP_AND_NOT_FINISH, //从活动群过来 活动没有结束
FROM_ACTIVITY_GROUP_AND_IS_FINISH, //从活动群过来 活动已结束
FROM_ACTIVITY_GROUP_VIEW_RESUME, //查看简历
}
}