package com.netease.nim.demo.session.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.netease.nim.demo.DemoCache;
import com.netease.nim.demo.R;
import com.netease.nim.demo.contact.activity.UserProfileActivity;
import com.netease.nim.demo.team.TeamCreateHelper;
import com.netease.nim.uikit.NimUIKit;
import com.netease.nim.uikit.cache.NimUserInfoCache;
import com.netease.nim.uikit.common.activity.UI;
import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
import com.netease.nim.uikit.common.ui.widget.SwitchButton;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
import com.netease.nim.uikit.model.ToolBarOptions;
import com.netease.nim.uikit.team.helper.TeamHelper;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.friend.FriendService;
import java.util.ArrayList;
/**
* Created by hzxuwen on 2015/10/13.
*/
public class MessageInfoActivity extends UI {
private final static String EXTRA_ACCOUNT = "EXTRA_ACCOUNT";
private static final int REQUEST_CODE_NORMAL = 1;
// data
private String account;
// view
private SwitchButton switchButton;
public static void startActivity(Context context, String account) {
Intent intent = new Intent();
intent.setClass(context, MessageInfoActivity.class);
intent.putExtra(EXTRA_ACCOUNT, account);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.message_info_activity);
ToolBarOptions options = new ToolBarOptions();
options.titleId = R.string.message_info;
options.navigateId = R.drawable.actionbar_dark_back_icon;
setToolBar(R.id.toolbar, options);
account = getIntent().getStringExtra(EXTRA_ACCOUNT);
findViews();
}
@Override
protected void onResume() {
super.onResume();
updateSwitchBtn();
}
private void findViews() {
HeadImageView userHead = (HeadImageView) findViewById(R.id.user_layout).findViewById(R.id.imageViewHeader);
TextView userName = (TextView) findViewById(R.id.user_layout).findViewById(R.id.textViewName);
userHead.loadBuddyAvatar(account);
userName.setText(NimUserInfoCache.getInstance().getUserDisplayName(account));
userHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openUserProfile();
}
});
((TextView)findViewById(R.id.create_team_layout).findViewById(R.id.textViewName)).setText(R.string.create_normal_team);
HeadImageView addImage = (HeadImageView) findViewById(R.id.create_team_layout).findViewById(R.id.imageViewHeader);
addImage.setBackgroundResource(com.netease.nim.uikit.R.drawable.nim_team_member_add_selector);
addImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createTeamMsg();
}
});
((TextView)findViewById(R.id.toggle_layout).findViewById(R.id.user_profile_title)).setText(R.string.msg_notice);
switchButton = (SwitchButton) findViewById(R.id.toggle_layout).findViewById(R.id.user_profile_toggle);
switchButton.setOnChangedListener(onChangedListener);
}
private void updateSwitchBtn() {
boolean notice = NIMClient.getService(FriendService.class).isNeedMessageNotify(account);
switchButton.setCheck(notice);
}
private SwitchButton.OnChangedListener onChangedListener = new SwitchButton.OnChangedListener() {
@Override
public void OnChanged(View v, final boolean checkState) {
if (!NetworkUtil.isNetAvailable(MessageInfoActivity.this)) {
Toast.makeText(MessageInfoActivity.this, R.string.network_is_not_available, Toast.LENGTH_SHORT).show();
switchButton.setCheck(!checkState);
return;
}
NIMClient.getService(FriendService.class).setMessageNotify(account, checkState).setCallback(new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
if (checkState) {
Toast.makeText(MessageInfoActivity.this, "开启消息提醒成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MessageInfoActivity.this, "关闭消息提醒成功", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailed(int code) {
if (code == 408) {
Toast.makeText(MessageInfoActivity.this, R.string.network_is_not_available, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MessageInfoActivity.this, "on failed:" + code, Toast.LENGTH_SHORT).show();
}
switchButton.setCheck(!checkState);
}
@Override
public void onException(Throwable exception) {
}
});
}
};
private void openUserProfile() {
UserProfileActivity.start(this, account);
}
/**
* 创建群聊
*/
private void createTeamMsg() {
ArrayList<String> memberAccounts = new ArrayList<>();
memberAccounts.add(account);
ContactSelectActivity.Option option = TeamHelper.getCreateContactSelectOption(memberAccounts, 50);
NimUIKit.startContactSelect(this, option, REQUEST_CODE_NORMAL);// 创建群
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_NORMAL) {
final ArrayList<String> selected = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
if (selected != null && !selected.isEmpty()) {
TeamCreateHelper.createNormalTeam(MessageInfoActivity.this, selected, true, new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
finish();
}
@Override
public void onFailed(int code) {
}
@Override
public void onException(Throwable exception) {
}
});
} else {
Toast.makeText(DemoCache.getContext(), "请选择至少一个联系人!", Toast.LENGTH_SHORT).show();
}
}
}
}
}