FriendSettingActivity.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package jiguang.chat.activity;
  2. import android.app.Dialog;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.text.TextUtils;
  6. import android.view.View;
  7. import android.view.WindowManager;
  8. import android.widget.Button;
  9. import android.widget.RelativeLayout;
  10. import android.widget.TextView;
  11. import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. import cn.jpush.im.android.api.JMessageClient;
  15. import cn.jpush.im.android.api.callback.GetUserInfoCallback;
  16. import cn.jpush.im.android.api.model.Conversation;
  17. import cn.jpush.im.android.api.model.UserInfo;
  18. import cn.jpush.im.android.eventbus.EventBus;
  19. import cn.jpush.im.api.BasicCallback;
  20. import jiguang.chat.application.JGApplication;
  21. import jiguang.chat.database.FriendEntry;
  22. import jiguang.chat.database.FriendRecommendEntry;
  23. import jiguang.chat.entity.Event;
  24. import jiguang.chat.entity.EventType;
  25. import jiguang.chat.utils.DialogCreator;
  26. import jiguang.chat.utils.ToastUtil;
  27. import jiguang.chat.utils.dialog.LoadDialog;
  28. import jiguang.chat.view.SlipButton;
  29. /**
  30. * Created by ${chenyn} on 2017/5/7.
  31. */
  32. public class FriendSettingActivity extends BaseActivity implements SlipButton.OnChangedListener, View.OnClickListener {
  33. private RelativeLayout mSetNoteName;
  34. private SlipButton mBtn_addBlackList;
  35. private Button mBtn_deleteFriend;
  36. private TextView mTv_noteName;
  37. private Dialog mDialog;
  38. private UserInfo mFriendInfo;
  39. private RelativeLayout mRl_business;
  40. @Override
  41. protected void onCreate(Bundle savedInstanceState) {
  42. super.onCreate(savedInstanceState);
  43. setContentView(R.layout.activity_friend_setting);
  44. initView();
  45. initData();
  46. }
  47. private void initData() {
  48. //设置黑名单
  49. mBtn_addBlackList.setOnChangedListener(R.id.btn_addBlackList, this);
  50. mBtn_deleteFriend.setOnClickListener(this);
  51. mSetNoteName.setOnClickListener(this);
  52. mRl_business.setOnClickListener(this);
  53. }
  54. @Override
  55. public void onClick(View v) {
  56. switch (v.getId()) {
  57. case R.id.setNoteName:
  58. Intent intent = new Intent(FriendSettingActivity.this, SetNoteNameActivity.class);
  59. intent.putExtra("user", getIntent().getStringExtra("userName"));
  60. intent.putExtra("note", getIntent().getStringExtra("noteName"));
  61. startActivityForResult(intent, 1);
  62. break;
  63. case R.id.btn_deleteFriend:
  64. View.OnClickListener listener = new View.OnClickListener() {
  65. @Override
  66. public void onClick(View v) {
  67. switch (v.getId()) {
  68. case R.id.jmui_cancel_btn:
  69. mDialog.dismiss();
  70. break;
  71. case R.id.jmui_commit_btn:
  72. final Dialog dialog = DialogCreator.createLoadingDialog(FriendSettingActivity.this, getString(R.string.processing));
  73. dialog.show();
  74. mFriendInfo.removeFromFriendList(new BasicCallback() {
  75. @Override
  76. public void gotResult(int responseCode, String responseMessage) {
  77. dialog.dismiss();
  78. if (responseCode == 0) {
  79. //将好友删除时候还原黑名单设置
  80. List<String> name = new ArrayList<>();
  81. name.add(mFriendInfo.getUserName());
  82. JMessageClient.delUsersFromBlacklist(name, null);
  83. FriendEntry friend = FriendEntry.getFriend(JGApplication.getUserEntry(),
  84. mFriendInfo.getUserName(), mFriendInfo.getAppKey());
  85. if (friend != null) {
  86. friend.delete();
  87. }
  88. FriendRecommendEntry entry = FriendRecommendEntry
  89. .getEntry(JGApplication.getUserEntry(),
  90. mFriendInfo.getUserName(), mFriendInfo.getAppKey());
  91. if (entry != null) {
  92. entry.delete();
  93. }
  94. ToastUtil.shortToast(FriendSettingActivity.this, "移除好友");
  95. mDialog.dismiss();
  96. delConvAndReturnMainActivity();
  97. } else {
  98. mDialog.dismiss();
  99. ToastUtil.shortToast(FriendSettingActivity.this, "移除失败");
  100. }
  101. }
  102. });
  103. break;
  104. }
  105. }
  106. };
  107. mDialog = DialogCreator.createBaseDialogWithTitle(this,
  108. getString(R.string.delete_friend_dialog_title), listener);
  109. mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
  110. mDialog.show();
  111. break;
  112. //发送好友名片
  113. case R.id.rl_business:
  114. Intent businessIntent = new Intent(FriendSettingActivity.this, ForwardMsgActivity.class);
  115. businessIntent.setFlags(1);
  116. businessIntent.putExtra("userName", mFriendInfo.getUserName());
  117. businessIntent.putExtra("appKey", mFriendInfo.getAppKey());
  118. if (mFriendInfo.getAvatarFile() != null) {
  119. businessIntent.putExtra("avatar", mFriendInfo.getAvatarFile().getAbsolutePath());
  120. }
  121. startActivity(businessIntent);
  122. break;
  123. default:
  124. break;
  125. }
  126. }
  127. public void delConvAndReturnMainActivity() {
  128. Conversation conversation = JMessageClient.getSingleConversation(mFriendInfo.getUserName(), mFriendInfo.getAppKey());
  129. EventBus.getDefault().post(new Event.Builder().setType(EventType.deleteConversation)
  130. .setConversation(conversation)
  131. .build());
  132. JMessageClient.deleteSingleConversation(mFriendInfo.getUserName(), mFriendInfo.getAppKey());
  133. Intent intent = new Intent(this, MainActivity.class);
  134. startActivity(intent);
  135. finish();
  136. }
  137. private void initView() {
  138. initTitle(true, true, "设置", "", false, "");
  139. mSetNoteName = (RelativeLayout) findViewById(R.id.setNoteName);
  140. mBtn_addBlackList = (SlipButton) findViewById(R.id.btn_addBlackList);
  141. mBtn_deleteFriend = (Button) findViewById(R.id.btn_deleteFriend);
  142. mTv_noteName = (TextView) findViewById(R.id.tv_noteName);
  143. mRl_business = (RelativeLayout) findViewById(R.id.rl_business);
  144. final Dialog dialog = DialogCreator.createLoadingDialog(FriendSettingActivity.this,
  145. FriendSettingActivity.this.getString(R.string.jmui_loading));
  146. dialog.show();
  147. if (!TextUtils.isEmpty(getIntent().getStringExtra("noteName"))) {
  148. mTv_noteName.setText(getIntent().getStringExtra("noteName"));
  149. }
  150. JMessageClient.getUserInfo(getIntent().getStringExtra("userName"), new GetUserInfoCallback() {
  151. @Override
  152. public void gotResult(int responseCode, String responseMessage, UserInfo info) {
  153. dialog.dismiss();
  154. if (responseCode == 0) {
  155. mFriendInfo = info;
  156. mBtn_addBlackList.setChecked(info.getBlacklist() == 1);
  157. if (info.isFriend()) {
  158. mBtn_deleteFriend.setVisibility(View.VISIBLE);
  159. mSetNoteName.setVisibility(View.VISIBLE);
  160. }else {
  161. mBtn_deleteFriend.setVisibility(View.GONE);
  162. mSetNoteName.setVisibility(View.GONE);
  163. }
  164. }
  165. }
  166. });
  167. }
  168. @Override
  169. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  170. super.onActivityResult(requestCode, resultCode, data);
  171. if (requestCode == 1 && data != null) {
  172. mTv_noteName.setText(data.getStringExtra("updateName"));
  173. }
  174. }
  175. @Override
  176. public void onChanged(int id, boolean checkState) {
  177. switch (id) {
  178. case R.id.btn_addBlackList:
  179. final LoadDialog dialog = new LoadDialog(FriendSettingActivity.this, false, "正在设置");
  180. dialog.show();
  181. String userName = getIntent().getStringExtra("userName");
  182. List<String> name = new ArrayList<>();
  183. name.add(userName);
  184. if (checkState) {
  185. JMessageClient.addUsersToBlacklist(name, new BasicCallback() {
  186. @Override
  187. public void gotResult(int responseCode, String responseMessage) {
  188. dialog.dismiss();
  189. if (responseCode == 0) {
  190. ToastUtil.shortToast(FriendSettingActivity.this, "添加成功");
  191. } else {
  192. mBtn_addBlackList.setChecked(false);
  193. ToastUtil.shortToast(FriendSettingActivity.this, "添加失败" + responseMessage);
  194. }
  195. }
  196. });
  197. } else {
  198. JMessageClient.delUsersFromBlacklist(name, new BasicCallback() {
  199. @Override
  200. public void gotResult(int responseCode, String responseMessage) {
  201. dialog.dismiss();
  202. if (responseCode == 0) {
  203. ToastUtil.shortToast(FriendSettingActivity.this, "移除成功");
  204. } else {
  205. mBtn_addBlackList.setChecked(true);
  206. ToastUtil.shortToast(FriendSettingActivity.this, "移除失败" + responseMessage);
  207. }
  208. }
  209. });
  210. }
  211. break;
  212. default:
  213. break;
  214. }
  215. }
  216. }