diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2016-10-17 09:53:32 +0200 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2016-10-17 09:53:32 +0200 |
commit | f8c21caec9b0e335cae879cc972e38ba69b5be4b (patch) | |
tree | 46529622e2b2d73e168d0121dc2175658a53cf31 /src/main/java/eu/siacs/conversations/ui/adapter | |
parent | 22d13a3dcd72bb0ed864fd54f6f62605a938d0be (diff) | |
parent | 858a32729975abab31700162a447f7541e9a3000 (diff) |
Merge branch 'feature-selection' of https://github.com/Mishiranu/Conversations into Mishiranu-feature-selection
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/adapter')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 496d8ab5..4505e632 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -54,6 +54,7 @@ import eu.siacs.conversations.entities.Transferable; import eu.siacs.conversations.persistance.FileBackend; import eu.siacs.conversations.ui.ConversationActivity; import eu.siacs.conversations.ui.widget.ClickableMovementMethod; +import eu.siacs.conversations.ui.widget.ListSelectionManager; import eu.siacs.conversations.utils.CryptoHelper; import eu.siacs.conversations.utils.GeoHelper; import eu.siacs.conversations.utils.UIHelper; @@ -87,6 +88,8 @@ public class MessageAdapter extends ArrayAdapter<Message> { private boolean mIndicateReceived = false; private boolean mUseGreenBackground = false; + private final ListSelectionManager listSelectionManager = new ListSelectionManager(); + public MessageAdapter(ConversationActivity activity, List<Message> messages) { super(activity, 0, messages); this.activity = activity; @@ -362,6 +365,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.messageBody.setText(formattedBody); viewHolder.messageBody.setTextIsSelectable(true); viewHolder.messageBody.setMovementMethod(ClickableMovementMethod.getInstance()); + listSelectionManager.onUpdate(viewHolder.messageBody, message); } else { viewHolder.messageBody.setText(""); viewHolder.messageBody.setTextIsSelectable(false); @@ -535,6 +539,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder = null; break; } + if (viewHolder.messageBody != null) listSelectionManager.onCreate(viewHolder.messageBody); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); @@ -685,6 +690,13 @@ public class MessageAdapter extends ArrayAdapter<Message> { return view; } + @Override + public void notifyDataSetChanged() { + listSelectionManager.onBeforeNotifyDataSetChanged(); + super.notifyDataSetChanged(); + listSelectionManager.onAfterNotifyDataSetChanged(); + } + public void openDownloadable(Message message) { DownloadableFile file = activity.xmppConnectionService.getFileBackend().getFile(message); if (!file.exists()) { @@ -737,6 +749,15 @@ public class MessageAdapter extends ArrayAdapter<Message> { this.mUseGreenBackground = activity.useGreenBackground(); } + public TextView getMessageBody(View view) { + final Object tag = view.getTag(); + if (tag instanceof ViewHolder) { + final ViewHolder viewHolder = (ViewHolder) tag; + return viewHolder.messageBody; + } + return null; + } + public interface OnContactPictureClicked { void onContactPictureClicked(Message message); } |