/* * Copyright (c) 2020 WildFireChat. All rights reserved. */ package cn.wildfire.chat.kit.contact.pick; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.lifecycle.ViewModelProviders; import cn.wildfire.chat.kit.contact.ContactViewModel; import cn.wildfire.chat.kit.group.GroupListActivity; import cn.wildfirechat.model.GroupInfo; import java.util.ArrayList; import java.util.List; public class PickConversationTargetFragment extends PickUserFragment { private final static int REQUEST_CODE_PICK_GROUP = 100; private boolean pickGroupForResult; private boolean multiGroupMode; private OnGroupPickListener groupPickListener; /** * @param pickGroupForResult 为true时,点击group item不直接启动群会话;否则直接启动群会话 * @param multiGroupMode {@code pickGroupForResult} 为{@code true}时,才生效,表示群多选 * @return */ public static PickConversationTargetFragment newInstance(boolean pickGroupForResult, boolean multiGroupMode) { PickConversationTargetFragment fragment = new PickConversationTargetFragment(); Bundle args = new Bundle(); args.putBoolean("pickGroupForResult", pickGroupForResult); args.putBoolean("multiGroupMode", multiGroupMode); fragment.setArguments(args); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); if (args != null) { pickGroupForResult = args.getBoolean("pickGroupForResult", false); multiGroupMode = args.getBoolean("multiGroupMode", false); } } @Override protected void setupPickFromUsers() { ContactViewModel contactViewModel = ViewModelProviders.of(getActivity()).get(ContactViewModel.class); contactViewModel.contactListLiveData().observe(this, userInfos -> { showContent(); pickUserViewModel.setUsers(userInfos); userListAdapter.setUsers(userInfos); }); } public void setOnGroupPickListener(OnGroupPickListener listener) { this.groupPickListener = listener; } @Override public void initHeaderViewHolders() { } @Override public void onHeaderClick(int index) { // 选择一个群 Intent intent = new Intent(getActivity(), GroupListActivity.class); if (pickGroupForResult) { intent.putExtra(GroupListActivity.INTENT_FOR_RESULT, true); } startActivityForResult(intent, REQUEST_CODE_PICK_GROUP); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_PICK_GROUP && resultCode == Activity.RESULT_OK) { // TODO 多选 ArrayList groupInfos = data.getParcelableArrayListExtra("groupInfos"); if (groupPickListener != null) { groupPickListener.onGroupPicked(groupInfos); } } else { super.onActivityResult(requestCode, resultCode, data); } } public interface OnGroupPickListener { void onGroupPicked(List groupInfos); } }