summaryrefslogtreecommitdiff
path: root/src/com/android/messaging/ui/conversationlist/ShareIntentAdapter.java
blob: 6d465ee353725fe9ebc346e8bc7f2f7f2fb614ae (plain)
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.messaging.ui.conversationlist;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;

import com.android.messaging.R;
import com.android.messaging.datamodel.data.ConversationListItemData;
import com.android.messaging.datamodel.data.ParticipantData;
import com.android.messaging.datamodel.data.PersonItemData;
import com.android.messaging.ui.CursorRecyclerAdapter;
import com.android.messaging.ui.PersonItemView;
import com.android.messaging.ui.PersonItemView.PersonItemViewListener;
import com.android.messaging.util.PhoneUtils;

/**
 * Turn conversation rows into PeopleItemViews
 */
public class ShareIntentAdapter
        extends CursorRecyclerAdapter<ShareIntentAdapter.ShareIntentViewHolder> {

    public interface HostInterface {
        void onConversationClicked(final ConversationListItemData conversationListItemData);
    }

    private final HostInterface mHostInterface;

    public ShareIntentAdapter(final Context context, final Cursor cursor,
            final HostInterface hostInterface) {
        super(context, cursor, 0);
        mHostInterface = hostInterface;
        setHasStableIds(true);
    }

    @Override
    public void bindViewHolder(final ShareIntentViewHolder holder, final Context context,
            final Cursor cursor) {
        holder.bind(cursor);
    }

    @Override
    public ShareIntentViewHolder createViewHolder(final Context context,
            final ViewGroup parent, final int viewType) {
        final PersonItemView itemView = (PersonItemView) LayoutInflater.from(context).inflate(
                R.layout.people_list_item_view, null);
        return new ShareIntentViewHolder(itemView);
    }

    /**
     * Holds a PersonItemView and keeps it synced with a ConversationListItemData.
     */
    public class ShareIntentViewHolder extends RecyclerView.ViewHolder implements
            PersonItemView.PersonItemViewListener {
        private final ConversationListItemData mData = new ConversationListItemData();
        private final PersonItemData mItemData = new PersonItemData() {
            @Override
            public Uri getAvatarUri() {
                return mData.getIcon() == null ? null : Uri.parse(mData.getIcon());
            }

            @Override
            public String getDisplayName() {
                return mData.getName();
            }

            @Override
            public String getDetails() {
                final String conversationName = mData.getName();
                final String conversationPhone = PhoneUtils.getDefault().formatForDisplay(
                        mData.getOtherParticipantNormalizedDestination());
                if (conversationPhone == null || conversationPhone.equals(conversationName)) {
                    return null;
                }
                return conversationPhone;
            }

            @Override
            public Intent getClickIntent() {
                return null;
            }

            @Override
            public long getContactId() {
                return ParticipantData.PARTICIPANT_CONTACT_ID_NOT_RESOLVED;
            }

            @Override
            public String getLookupKey() {
                return null;
            }

            @Override
            public String getNormalizedDestination() {
                return null;
            }
        };

        public ShareIntentViewHolder(final PersonItemView itemView) {
            super(itemView);
            itemView.setListener(this);
        }

        public void bind(Cursor cursor) {
            mData.bind(cursor);
            ((PersonItemView) itemView).bind(mItemData);
        }

        @Override
        public void onPersonClicked(PersonItemData data) {
            mHostInterface.onConversationClicked(mData);
        }

        @Override
        public boolean onPersonLongClicked(PersonItemData data) {
            return false;
        }
    }
}