From 76e45f0b0b534ae08a4d96b660ff0a8e941a5f29 Mon Sep 17 00:00:00 2001 From: Brieuc Viel Date: Tue, 21 Mar 2017 15:05:34 +0100 Subject: [PATCH] [imdm] fix listener remove on delivered --- res/layout/chat_bubble.xml | 12 +++++---- res/values/strings.xml | 2 +- src/org/linphone/ChatFragment.java | 40 ++++++++++++++++-------------- submodules/linphone | 2 +- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/res/layout/chat_bubble.xml b/res/layout/chat_bubble.xml index 929e88cd1..39692013a 100644 --- a/res/layout/chat_bubble.xml +++ b/res/layout/chat_bubble.xml @@ -111,11 +111,11 @@ + android:paddingRight="3dp"/> diff --git a/res/values/strings.xml b/res/values/strings.xml index e8009c3ea..eaf22ccee 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -185,7 +185,7 @@ You are unable to decrypt this message. You are trying to send a message using LIME to a contact not verified by ZRTP.\nPlease call this contact and verify his ZRTP key before sending your messages. Processing image, can take up to a few seconds depending on the size of the file - Displayed + Read Delivered Resend diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index 3b4409878..c21ff7ece 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -229,7 +229,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { LinphoneAddress from = cr.getPeerAddress(); if (from.asStringUriOnly().equals(sipUri)) { - LinphoneService.instance().removeMessageNotification(); + //LinphoneService.instance().removeMessageNotification(); cr.markAsRead(); LinphoneActivity.instance().updateMissedChatCount(); adapter.addMessage(message); @@ -376,6 +376,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (adapter != null) { adapter.notifyDataSetChanged(); } + //messagesList.invalidateViews(); } private void displayMessageList() { @@ -1047,7 +1048,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC @Override public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, State state) { - + Log.e(" /////////====>> onLinphoneChatMessageStateChanged - state = "+state.toString()); } @Override @@ -1094,6 +1095,10 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC messagesList.setSelection(getCount() - 1); } + public void refreshMessageCell(LinphoneChatMessage msg){ + + } + @Override public int getCount() { return history.size(); @@ -1119,13 +1124,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (convertView != null) { view = convertView; holder = (ViewHolder) view.getTag(); - LinphoneManager.removeListener(holder); + //LinphoneManager.removeListener(holder); } else { view = LayoutInflater.from(context).inflate(R.layout.chat_bubble, null); holder = new ViewHolder(view); view.setTag(holder); } + LinphoneManager.addListener(holder); if (holder.id == message.getStorageId()) { // Horrible workaround to not reload image on edit chat list if (holder.messageImage.getTag() != null @@ -1184,10 +1190,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC } holder.contactName.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName); - /*if (status == LinphoneChatMessage.State.NotDelivered) { - holder.messageStatus.setVisibility(View.VISIBLE); - holder.messageStatus.setImageResource(R.drawable.chat_message_not_delivered); - } else*/ if (status == LinphoneChatMessage.State.InProgress) { holder.messageSendingInProgress.setVisibility(View.VISIBLE); } else if (!message.isSecured() && !message.isOutgoing() && @@ -1195,24 +1197,25 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC holder.messageStatus.setVisibility(View.VISIBLE); holder.messageStatus.setImageResource(R.drawable.lime_ko); } - else if(status == State.DeliveredToUser && message.isOutgoing()){ + if(status == State.DeliveredToUser && message.isOutgoing()){ holder.imdmLayout.setVisibility(View.VISIBLE); - holder.imdmIcon.setImageResource(R.drawable.valid_disabled); + holder.imdmIcon.setImageResource(R.drawable.chat_delivered); holder.imdmLabel.setText(R.string.delivered); - holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorA)); + holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorD)); } else if(status == State.Displayed && message.isOutgoing()){ holder.imdmLayout.setVisibility(View.VISIBLE); - holder.imdmIcon.setImageResource(R.drawable.valid); + holder.imdmIcon.setImageResource(R.drawable.chat_read); holder.imdmLabel.setText(R.string.displayed); - holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorA)); + holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorK)); } else if(status == State.NotDelivered && message.isOutgoing()){ holder.imdmLayout.setVisibility(View.VISIBLE); - holder.imdmIcon.setImageResource(R.drawable.chat_message_not_delivered); + holder.imdmIcon.setImageResource(R.drawable.chat_error); holder.imdmLabel.setText(R.string.resend); holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorI)); - } + }else + holder.imdmLayout.setVisibility(View.INVISIBLE); if(!message.isOutgoing()){ holder.imdmLayout.setVisibility(View.INVISIBLE); } @@ -1230,7 +1233,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (LinphoneManager.getInstance().getMessageUploadPending() != null && LinphoneManager.getInstance().getMessageUploadPending().getStorageId() == message.getStorageId()) { holder.messageSendingInProgress.setVisibility(View.GONE); holder.fileTransferLayout.setVisibility(View.VISIBLE); - LinphoneManager.addListener(holder); + //LinphoneManager.addListener(holder); } } else { if (appData != null && !LinphoneManager.getInstance().isMessagePending(message) && appData.contains(context.getString(R.string.temp_photo_name_with_date).split("%s")[0])) { @@ -1238,15 +1241,15 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC } if (appData == null) { - LinphoneManager.addListener(holder); + //LinphoneManager.addListener(holder); holder.fileTransferLayout.setVisibility(View.VISIBLE); } else { if (LinphoneManager.getInstance().isMessagePending(message)) { - LinphoneManager.addListener(holder); + //LinphoneManager.addListener(holder); holder.fileTransferAction.setEnabled(false); holder.fileTransferLayout.setVisibility(View.VISIBLE); } else { - LinphoneManager.removeListener(holder); + //LinphoneManager.removeListener(holder); holder.fileTransferLayout.setVisibility(View.GONE); holder.messageImage.setVisibility(View.VISIBLE); if (!sameMessage) { @@ -1631,6 +1634,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC //LinphoneChatMessage Listener @Override public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, State state) { + Log.e(" =======>>>>>>> onLinphoneChatMessageStateChanged - state = "+state.toString()); redrawMessageList(); } diff --git a/submodules/linphone b/submodules/linphone index a570c27e1..f74e37bec 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit a570c27e172ea65166d2ef815fda4db40f24ee65 +Subproject commit f74e37becfc6377bd7124b72aca129310dff8e15