Switched to multi listener
This commit is contained in:
parent
a876a35811
commit
29670d63ff
5 changed files with 41 additions and 36 deletions
|
@ -52,6 +52,7 @@ public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder
|
|||
private final List<ChatMessage> mTransientMessages;
|
||||
|
||||
private final ChatMessageViewHolderClickListener mClickListener;
|
||||
private final ChatMessageListenerStub mListener;
|
||||
|
||||
public ChatMessagesAdapter(
|
||||
ChatMessagesFragment fragment,
|
||||
|
@ -69,6 +70,25 @@ public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder
|
|||
mParticipants = participants;
|
||||
mClickListener = clickListener;
|
||||
mTransientMessages = new ArrayList<>();
|
||||
|
||||
mListener =
|
||||
new ChatMessageListenerStub() {
|
||||
@Override
|
||||
public void onMsgStateChanged(ChatMessage message, ChatMessage.State state) {
|
||||
ChatMessageViewHolder holder =
|
||||
(ChatMessageViewHolder) message.getUserData();
|
||||
if (holder != null) {
|
||||
notifyItemChanged(holder.getAdapterPosition());
|
||||
} else {
|
||||
// Just in case, better to refresh the whole view than to miss
|
||||
// an update
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
if (state == ChatMessage.State.Displayed) {
|
||||
mTransientMessages.remove(message);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -110,25 +130,7 @@ public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder
|
|||
}
|
||||
message.setUserData(
|
||||
holder); // This only works if JAVA object is kept, hence the transient list
|
||||
message.setListener(
|
||||
new ChatMessageListenerStub() {
|
||||
@Override
|
||||
public void onMsgStateChanged(
|
||||
ChatMessage message, ChatMessage.State state) {
|
||||
ChatMessageViewHolder holder =
|
||||
(ChatMessageViewHolder) message.getUserData();
|
||||
if (holder != null) {
|
||||
notifyItemChanged(holder.getAdapterPosition());
|
||||
} else {
|
||||
// Just in case, better to refresh the whole view than to miss
|
||||
// an update
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
if (state == ChatMessage.State.Displayed) {
|
||||
mTransientMessages.remove(message);
|
||||
}
|
||||
}
|
||||
});
|
||||
message.addListener(mListener);
|
||||
}
|
||||
|
||||
LinphoneContact contact = null;
|
||||
|
@ -285,7 +287,7 @@ public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder
|
|||
for (EventLog event : mHistory) {
|
||||
if (event.getType() == EventLog.Type.ConferenceChatMessage) {
|
||||
ChatMessage message = event.getChatMessage();
|
||||
message.setListener(null);
|
||||
message.removeListener(mListener);
|
||||
}
|
||||
}
|
||||
mTransientMessages.clear();
|
||||
|
|
|
@ -191,6 +191,7 @@ public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldView
|
|||
}
|
||||
|
||||
message.setUserData(holder);
|
||||
message.addListener(mListener);
|
||||
|
||||
RelativeLayout.LayoutParams layoutParams =
|
||||
new RelativeLayout.LayoutParams(
|
||||
|
@ -203,8 +204,6 @@ public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldView
|
|||
|
||||
LinphoneContact contact = null;
|
||||
if (message.isOutgoing()) {
|
||||
message.setListener(mListener);
|
||||
|
||||
if (status == ChatMessage.State.InProgress) {
|
||||
holder.messageSendingInProgress.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
@ -379,7 +378,6 @@ public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldView
|
|||
+ filename);
|
||||
prefix += 1;
|
||||
}
|
||||
message.setListener(mListener);
|
||||
message.setFileTransferFilepath(file.getPath());
|
||||
message.downloadFile();
|
||||
|
||||
|
@ -393,7 +391,6 @@ public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldView
|
|||
});
|
||||
}
|
||||
} else if (message.isFileTransferInProgress()) { // Outgoing file transfer in progress
|
||||
message.setListener(mListener); // add the listener for file upload progress display
|
||||
holder.messageSendingInProgress.setVisibility(View.GONE);
|
||||
holder.fileTransferLayout.setVisibility(View.VISIBLE);
|
||||
holder.fileTransferAction.setText(mContext.getString(R.string.cancel));
|
||||
|
@ -541,7 +538,7 @@ public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldView
|
|||
for (EventLog event : mHistory) {
|
||||
if (event.getType() == EventLog.Type.ConferenceChatMessage) {
|
||||
ChatMessage message = event.getChatMessage();
|
||||
message.setListener(null);
|
||||
message.removeListener(mListener);
|
||||
}
|
||||
}
|
||||
mHistory.clear();
|
||||
|
|
|
@ -131,20 +131,15 @@ public class ImdnFragment extends Fragment {
|
|||
|
||||
refreshInfo();
|
||||
if (mMessage != null) {
|
||||
mMessage.setListener(
|
||||
new ChatMessageListenerStub() {
|
||||
@Override
|
||||
public void onParticipantImdnStateChanged(
|
||||
ChatMessage msg, ParticipantImdnState state) {
|
||||
refreshInfo();
|
||||
}
|
||||
});
|
||||
mMessage.addListener(mListener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
mMessage.setListener(null);
|
||||
if (mMessage != null) {
|
||||
mMessage.removeListener(mListener);
|
||||
}
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
|
|
@ -134,7 +134,6 @@ public class ImdnOldFragment extends Fragment {
|
|||
}
|
||||
};
|
||||
if (mMessage == null) return null;
|
||||
mMessage.setListener(mListener);
|
||||
|
||||
RelativeLayout.LayoutParams layoutParams =
|
||||
new RelativeLayout.LayoutParams(
|
||||
|
@ -169,10 +168,22 @@ public class ImdnOldFragment extends Fragment {
|
|||
if (LinphoneActivity.isInstanciated()) {
|
||||
LinphoneActivity.instance().selectMenu(FragmentsAvailable.MESSAGE_IMDN);
|
||||
}
|
||||
if (mMessage != null) {
|
||||
mMessage.addListener(mListener);
|
||||
}
|
||||
|
||||
refreshInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
if (mMessage != null) {
|
||||
mMessage.removeListener(mListener);
|
||||
}
|
||||
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
private void refreshInfo() {
|
||||
Address remoteSender = mMessage.getFromAddress();
|
||||
LinphoneContact contact =
|
||||
|
|
|
@ -103,7 +103,7 @@ public class NotificationBroadcastReceiver extends BroadcastReceiver {
|
|||
|
||||
ChatMessage msg = room.createMessage(reply);
|
||||
msg.send();
|
||||
msg.setListener(
|
||||
msg.addListener(
|
||||
new ChatMessageListenerStub() {
|
||||
@Override
|
||||
public void onMsgStateChanged(
|
||||
|
|
Loading…
Reference in a new issue