diff options
Diffstat (limited to '')
3 files changed, 31 insertions, 36 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java index a9b07052e..a5350ff60 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java @@ -75,9 +75,8 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> { } else { viewHolder = (ViewHolder) view.getTag(); } - + view.setBackground(StyledAttributes.getDrawable(view.getContext(), R.attr.list_item_background)); List<ListItem.Tag> tags = item.getTags(activity); - if (tags.size() == 0 || !this.showDynamicTags) { viewHolder.tags.setVisibility(View.GONE); } else { diff --git a/src/main/java/de/pixart/messenger/ui/adapter/UserAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/UserAdapter.java index f6a15aff4..3ca224a2a 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/UserAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/UserAdapter.java @@ -28,15 +28,24 @@ import de.pixart.messenger.ui.ConferenceDetailsActivity; import de.pixart.messenger.ui.XmppActivity; import de.pixart.messenger.ui.util.AvatarWorkerTask; import de.pixart.messenger.ui.util.MucDetailsContextMenuHelper; +import rocks.xmpp.addr.Jid; public class UserAdapter extends ListAdapter<MucOptions.User, UserAdapter.ViewHolder> implements View.OnCreateContextMenuListener { - private MucOptions.User selectedUser = null; - static final DiffUtil.ItemCallback<MucOptions.User> DIFF = new DiffUtil.ItemCallback<MucOptions.User>() { @Override public boolean areItemsTheSame(@NonNull MucOptions.User a, @NonNull MucOptions.User b) { - return a == b; + final Jid fullA = a.getFullJid(); + final Jid fullB = b.getFullJid(); + final Jid realA = a.getRealJid(); + final Jid realB = b.getRealJid(); + if (fullA != null && fullB != null) { + return fullA.equals(fullB); + } else if (realA != null && realB != null) { + return realA.equals(realB); + } else { + return false; + } } @Override @@ -45,6 +54,7 @@ public class UserAdapter extends ListAdapter<MucOptions.User, UserAdapter.ViewHo } }; private final boolean advancedMode; + private MucOptions.User selectedUser = null; public UserAdapter(final boolean advancedMode) { super(DIFF); @@ -115,23 +125,7 @@ public class UserAdapter extends ListAdapter<MucOptions.User, UserAdapter.ViewHo @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { - final XmppActivity activity = XmppActivity.find(v); - final Object tag = v.getTag(); - if (tag instanceof MucOptions.User && activity != null) { - activity.getMenuInflater().inflate(R.menu.muc_details_context, menu); - final MucOptions.User user = (MucOptions.User) tag; - String name; - final Contact contact = user.getContact(); - if (contact != null && contact.showInContactList()) { - name = contact.getDisplayName(); - } else if (user.getRealJid() != null) { - name = user.getRealJid().asBareJid().toString(); - } else { - name = user.getName(); - } - menu.setHeaderTitle(name); - MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, user.getConversation(), user); - } + MucDetailsContextMenuHelper.onCreateContextMenu(menu, v); } class ViewHolder extends RecyclerView.ViewHolder { diff --git a/src/main/java/de/pixart/messenger/ui/adapter/UserPreviewAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/UserPreviewAdapter.java index 5104ef86c..105503243 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/UserPreviewAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/UserPreviewAdapter.java @@ -4,8 +4,10 @@ import android.databinding.DataBindingUtil; import android.support.annotation.NonNull; import android.support.v7.recyclerview.extensions.ListAdapter; import android.support.v7.widget.RecyclerView; +import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; +import android.view.View; import android.view.ViewGroup; import android.widget.PopupMenu; @@ -18,7 +20,9 @@ import de.pixart.messenger.ui.XmppActivity; import de.pixart.messenger.ui.util.AvatarWorkerTask; import de.pixart.messenger.ui.util.MucDetailsContextMenuHelper; -public class UserPreviewAdapter extends ListAdapter<MucOptions.User, UserPreviewAdapter.ViewHolder> { +public class UserPreviewAdapter extends ListAdapter<MucOptions.User, UserPreviewAdapter.ViewHolder> implements View.OnCreateContextMenuListener { + + private MucOptions.User selectedUser = null; public UserPreviewAdapter() { super(UserAdapter.DIFF); @@ -40,23 +44,21 @@ public class UserPreviewAdapter extends ListAdapter<MucOptions.User, UserPreview activity.highlightInMuc(user.getConversation(), user.getName()); } }); + viewHolder.binding.getRoot().setOnCreateContextMenuListener(this); + viewHolder.binding.getRoot().setTag(user); viewHolder.binding.getRoot().setOnLongClickListener(v -> { - final XmppActivity activity = XmppActivity.find(v); - if (activity == null) { - return true; - } - final PopupMenu popupMenu = new PopupMenu(activity, v); - popupMenu.inflate(R.menu.muc_details_context); - final Menu menu = popupMenu.getMenu(); - MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, user.getConversation(), user); - popupMenu.setOnMenuItemClickListener(menuItem -> MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, user.getConversation(), activity)); - popupMenu.show(); - return true; + selectedUser = user; + return false; }); } - public void setUserList(List<MucOptions.User> users) { - submitList(users); + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { + MucDetailsContextMenuHelper.onCreateContextMenu(menu, v); + } + + public MucOptions.User getSelectedUser() { + return selectedUser; } |