kimi
2021-02-18 749a5510a9f014446a3cd6ba57b3cb0cc8148dc1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
 * 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<GroupInfo> groupInfos = data.getParcelableArrayListExtra("groupInfos");
            if (groupPickListener != null) {
                groupPickListener.onGroupPicked(groupInfos);
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
 
    public interface OnGroupPickListener {
        void onGroupPicked(List<GroupInfo> groupInfos);
    }
}