aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/adapter
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java3
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/UserAdapter.java34
-rw-r--r--src/main/java/de/pixart/messenger/ui/adapter/UserPreviewAdapter.java30
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;
}