1package eu.siacs.conversations.ui.adapter;
2
3import android.view.ContextMenu;
4import android.view.LayoutInflater;
5import android.view.View;
6import android.view.ViewGroup;
7
8import androidx.annotation.NonNull;
9import androidx.databinding.DataBindingUtil;
10import androidx.recyclerview.widget.ListAdapter;
11import androidx.recyclerview.widget.RecyclerView;
12
13import eu.siacs.conversations.R;
14import eu.siacs.conversations.databinding.ItemUserPreviewBinding;
15import eu.siacs.conversations.entities.MucOptions;
16import eu.siacs.conversations.ui.XmppActivity;
17import eu.siacs.conversations.ui.util.AvatarWorkerTask;
18import eu.siacs.conversations.ui.util.MucDetailsContextMenuHelper;
19
20public class UserPreviewAdapter extends ListAdapter<MucOptions.User, UserPreviewAdapter.ViewHolder>
21 implements View.OnCreateContextMenuListener {
22
23 private MucOptions.User selectedUser = null;
24
25 public UserPreviewAdapter() {
26 super(UserAdapter.DIFF);
27 }
28
29 @NonNull
30 @Override
31 public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
32 return new ViewHolder(
33 DataBindingUtil.inflate(
34 LayoutInflater.from(viewGroup.getContext()),
35 R.layout.item_user_preview,
36 viewGroup,
37 false));
38 }
39
40 @Override
41 public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
42 final MucOptions.User user = getItem(position);
43 AvatarWorkerTask.loadAvatar(user, viewHolder.binding.avatar, R.dimen.media_size);
44 viewHolder
45 .binding
46 .getRoot()
47 .setOnClickListener(
48 v -> {
49 final XmppActivity activity = XmppActivity.find(v);
50 if (activity != null) {
51 activity.highlightInMuc(user.getConversation(), user.getNick());
52 }
53 });
54 viewHolder.binding.getRoot().setOnCreateContextMenuListener(this);
55 viewHolder.binding.getRoot().setTag(user);
56 viewHolder
57 .binding
58 .getRoot()
59 .setOnLongClickListener(
60 v -> {
61 selectedUser = user;
62 return false;
63 });
64 }
65
66 @Override
67 public void onCreateContextMenu(
68 ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
69 MucDetailsContextMenuHelper.onCreateContextMenu(menu, v);
70 }
71
72 public MucOptions.User getSelectedUser() {
73 return selectedUser;
74 }
75
76 class ViewHolder extends RecyclerView.ViewHolder {
77
78 private final ItemUserPreviewBinding binding;
79
80 private ViewHolder(final ItemUserPreviewBinding binding) {
81 super(binding.getRoot());
82 this.binding = binding;
83 }
84 }
85}