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.UserPreviewBinding;
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> implements View.OnCreateContextMenuListener {
21
22 private MucOptions.User selectedUser = null;
23
24 public UserPreviewAdapter() {
25 super(UserAdapter.DIFF);
26 }
27
28 @NonNull
29 @Override
30 public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
31 return new ViewHolder(DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), R.layout.user_preview, viewGroup, false));
32 }
33
34 @Override
35 public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
36 final MucOptions.User user = getItem(position);
37 AvatarWorkerTask.loadAvatar(user, viewHolder.binding.avatar, R.dimen.media_size);
38 viewHolder.binding.getRoot().setOnClickListener(v -> {
39 final XmppActivity activity = XmppActivity.find(v);
40 if (activity != null) {
41 activity.highlightInMuc(user.getConversation(), user.getNick());
42 }
43 });
44 viewHolder.binding.getRoot().setOnCreateContextMenuListener(this);
45 viewHolder.binding.getRoot().setTag(user);
46 viewHolder.binding.getRoot().setOnLongClickListener(v -> {
47 selectedUser = user;
48 return false;
49 });
50 }
51
52 @Override
53 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
54 MucDetailsContextMenuHelper.onCreateContextMenu(menu, v);
55 }
56
57 public MucOptions.User getSelectedUser() {
58 return selectedUser;
59 }
60
61 class ViewHolder extends RecyclerView.ViewHolder {
62
63 private final UserPreviewBinding binding;
64
65 private ViewHolder(UserPreviewBinding binding) {
66 super(binding.getRoot());
67 this.binding = binding;
68 }
69 }
70}