package com.lqr.wechat.ui.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import com.kyleduo.switchbutton.SwitchButton; import com.lqr.optionitemview.OptionItemView; import com.lqr.recyclerview.LQRRecyclerView; import com.lqr.wechat.R; import com.lqr.wechat.app.AppConst; import com.lqr.wechat.manager.BroadcastManager; import com.lqr.wechat.ui.base.BaseActivity; import com.lqr.wechat.ui.presenter.SessionInfoAtPresenter; import com.lqr.wechat.ui.view.ISessionInfoAtView; import java.util.ArrayList; import butterknife.Bind; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; import static com.lqr.wechat.ui.activity.SessionActivity.SESSION_TYPE_GROUP; import static com.lqr.wechat.ui.activity.SessionActivity.SESSION_TYPE_PRIVATE; /** * @创建者 CSDN_LQR * @描述 会话信息界面 */ public class SessionInfoActivity extends BaseActivity<ISessionInfoAtView, SessionInfoAtPresenter> implements ISessionInfoAtView { public static int REQ_ADD_MEMBERS = 1000; public static int REQ_REMOVE_MEMBERS = 1001; public static int REQ_SET_GROUP_NAME = 1002; private String mSessionId = ""; private Conversation.ConversationType mConversationType = Conversation.ConversationType.PRIVATE; private int mSessionType; @Bind(R.id.llGroupPart1) LinearLayout mLlGroupPart1; @Bind(R.id.llGroupPart2) LinearLayout mLlGroupPart2; @Bind(R.id.rvMember) LQRRecyclerView mRvMember; @Bind(R.id.oivGroupName) OptionItemView mOivGroupName; @Bind(R.id.oivQRCordCard) OptionItemView mOivQRCordCard; @Bind(R.id.oivNickNameInGroup) OptionItemView mOivNickNameInGroup; @Bind(R.id.oivClearMsgRecord) OptionItemView mOivClearMsgRecord; @Bind(R.id.sbToTop) SwitchButton mSbToTop; @Bind(R.id.btnQuit) Button mBtnQuit; @Override public void init() { Intent intent = getIntent(); mSessionId = intent.getStringExtra("sessionId"); mSessionType = intent.getIntExtra("sessionType", SESSION_TYPE_PRIVATE); switch (mSessionType) { case SESSION_TYPE_PRIVATE: mConversationType = Conversation.ConversationType.PRIVATE; break; case SESSION_TYPE_GROUP: mConversationType = Conversation.ConversationType.GROUP; break; } registerBR(); } @Override public void initView() { switch (mSessionType) { case SESSION_TYPE_PRIVATE: mLlGroupPart1.setVisibility(View.GONE); mLlGroupPart2.setVisibility(View.GONE); mBtnQuit.setVisibility(View.GONE); break; case SESSION_TYPE_GROUP: mLlGroupPart1.setVisibility(View.VISIBLE); mLlGroupPart2.setVisibility(View.VISIBLE); mBtnQuit.setVisibility(View.VISIBLE); break; } } @Override public void initData() { mPresenter.loadMembers(); mPresenter.loadOtherInfo(mSessionType, mSessionId); } @Override public void initListener() { mOivGroupName.setOnClickListener(v -> { Intent intent = new Intent(SessionInfoActivity.this, SetGroupNameActivity.class); intent.putExtra("groupId", mSessionId); startActivityForResult(intent, REQ_SET_GROUP_NAME); }); mOivQRCordCard.setOnClickListener(v -> { Intent intent = new Intent(SessionInfoActivity.this, QRCodeCardActivity.class); intent.putExtra("groupId", mSessionId); jumpToActivity(intent); }); mOivNickNameInGroup.setOnClickListener(v -> mPresenter.setDisplayName()); mSbToTop.setOnCheckedChangeListener((buttonView, isChecked) -> RongIMClient.getInstance().setConversationToTop(mConversationType, mSessionId, isChecked)); mOivClearMsgRecord.setOnClickListener(v -> mPresenter.clearConversationMsg()); mBtnQuit.setOnClickListener(v -> mPresenter.quit()); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQ_ADD_MEMBERS) { if (resultCode == RESULT_OK) { ArrayList<String> selectedIds = data.getStringArrayListExtra("selectedIds"); mPresenter.addGroupMember(selectedIds); } } else if (requestCode == REQ_REMOVE_MEMBERS) { if (resultCode == RESULT_OK) { ArrayList<String> selectedIds = data.getStringArrayListExtra("selectedIds"); mPresenter.deleteGroupMembers(selectedIds); } } else if (requestCode == REQ_SET_GROUP_NAME) { if (resultCode == RESULT_OK) { String groupName = data.getStringExtra("group_name"); mOivGroupName.setRightText(groupName); } } } @Override protected void onDestroy() { super.onDestroy(); unRegisterBR(); } private void registerBR() { BroadcastManager.getInstance(this).register(AppConst.UPDATE_GROUP_MEMBER, new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String groupId = intent.getStringExtra("String"); if (mSessionId.equalsIgnoreCase(groupId)) { mPresenter.loadMembers(); } } }); } private void unRegisterBR() { BroadcastManager.getInstance(this).unregister(AppConst.UPDATE_GROUP_MEMBER); } @Override protected SessionInfoAtPresenter createPresenter() { return new SessionInfoAtPresenter(this, mSessionId, mConversationType); } @Override protected int provideContentViewId() { return R.layout.activity_session_info; } @Override public LQRRecyclerView getRvMember() { return mRvMember; } @Override public OptionItemView getOivGroupName() { return mOivGroupName; } @Override public OptionItemView getOivNickNameInGroup() { return mOivNickNameInGroup; } @Override public SwitchButton getSbToTop() { return mSbToTop; } @Override public Button getBtnQuit() { return mBtnQuit; } }