1package eu.siacs.conversations.ui.adapter;
2
3import android.databinding.DataBindingUtil;
4import android.support.annotation.NonNull;
5import android.support.v7.recyclerview.extensions.ListAdapter;
6import android.support.v7.widget.RecyclerView;
7import android.view.LayoutInflater;
8import android.view.Menu;
9import android.view.ViewGroup;
10import android.widget.PopupMenu;
11
12import java.util.List;
13
14import eu.siacs.conversations.R;
15import eu.siacs.conversations.databinding.UserPreviewBinding;
16import eu.siacs.conversations.entities.Contact;
17import eu.siacs.conversations.entities.MucOptions;
18import eu.siacs.conversations.ui.XmppActivity;
19import eu.siacs.conversations.ui.util.AvatarWorkerTask;
20import eu.siacs.conversations.ui.util.MucDetailsContextMenuHelper;
21
22public class UserPreviewAdapter extends ListAdapter<MucOptions.User,UserPreviewAdapter.ViewHolder> {
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.getName());
42 }
43 });
44 viewHolder.binding.getRoot().setOnLongClickListener(v -> {
45 final XmppActivity activity = XmppActivity.find(v);
46 if (activity == null) {
47 return true;
48 }
49 final PopupMenu popupMenu = new PopupMenu(activity, v);
50 popupMenu.inflate(R.menu.muc_details_context);
51 final Menu menu = popupMenu.getMenu();
52 MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, user.getConversation(), user);
53 popupMenu.setOnMenuItemClickListener(menuItem -> MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, user.getConversation(), activity));
54 popupMenu.show();
55 return true;
56 });
57 }
58
59 public void setUserList(List<MucOptions.User> users) {
60 submitList(users);
61 }
62
63
64 class ViewHolder extends RecyclerView.ViewHolder {
65
66 private final UserPreviewBinding binding;
67
68 private ViewHolder(UserPreviewBinding binding) {
69 super(binding.getRoot());
70 this.binding = binding;
71 }
72 }
73}