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