More work on message's IMDN view

This commit is contained in:
Sylvain Berfini 2018-03-28 15:35:25 +02:00
parent 9e3edcbf5f
commit eca9abcdc6
5 changed files with 56 additions and 9 deletions

View file

@ -725,8 +725,10 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
changeCurrentFragment(FragmentsAvailable.INFO_GROUP_CHAT, extras);
}
public void goToChatMessageImdnInfos() {
public void goToChatMessageImdnInfos(String sipUri, String messageId) {
Bundle extras = new Bundle();
extras.putSerializable("SipUri", sipUri);
extras.putString("MessageId", messageId);
changeCurrentFragment(FragmentsAvailable.MESSAGE_IMDN, extras);
}

View file

@ -255,7 +255,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
holder.imdmLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinphoneActivity.instance().goToChatMessageImdnInfos();
LinphoneActivity.instance().goToChatMessageImdnInfos(mFragment.getRemoteSipUri(), message.getMessageId());
}
});

View file

@ -461,6 +461,10 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
}
}
public String getRemoteSipUri() {
return mRemoteSipUri;
}
/**
* File transfer related
*/

View file

@ -39,12 +39,17 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import org.linphone.LinphoneManager;
import org.linphone.LinphoneUtils;
import org.linphone.R;
import org.linphone.activities.LinphoneActivity;
import org.linphone.compatibility.Compatibility;
import org.linphone.contacts.ContactsManager;
import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom;
import org.linphone.core.Core;
import org.linphone.mediastream.Log;
import java.io.FileNotFoundException;
@ -56,10 +61,30 @@ public class ImdnFragment extends Fragment {
private ImageView mBackButton;
private ChatBubbleViewHolder mBubble;
private String mMessageId;
private Address mRoomAddr;
private ChatRoom mRoom;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String roomUri;
if (getArguments() != null) {
roomUri = getArguments().getString("SipUri");
mRoomAddr = LinphoneManager.getLc().createAddress(roomUri);
mMessageId = getArguments().getString("MessageId");
}
Core core = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
Address proxyConfigContact = core.getDefaultProxyConfig().getContact();
if (proxyConfigContact != null) {
mRoom = core.findOneToOneChatRoom(proxyConfigContact, mRoomAddr);
}
if (mRoom == null) {
mRoom = core.getChatRoomFromUri(mRoomAddr.asStringUriOnly());
}
mInflater = inflater;
View view = mInflater.inflate(R.layout.chat_imdn, container, false);
@ -98,7 +123,28 @@ public class ImdnFragment extends Fragment {
mBubble.fileTransferAction.setBackgroundResource(R.drawable.resizable_confirm_delete_button);
mBubble.contactPictureMask.setImageResource(R.drawable.avatar_chat_mask_outgoing);
ChatMessage message = null; //TODO
ChatMessage message = mRoom.findMessage(mMessageId);
Address remoteSender = message.getFromAddress();
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(remoteSender);
String displayName;
if (contact != null) {
if (contact.getFullName() != null) {
displayName = contact.getFullName();
} else {
displayName = LinphoneUtils.getAddressDisplayName(remoteSender);
}
mBubble.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
if (contact.hasPhoto()) {
LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), mBubble.contactPicture, contact.getThumbnailUri());
}
} else {
displayName = LinphoneUtils.getAddressDisplayName(remoteSender);
mBubble.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
}
mBubble.contactName.setText(LinphoneUtils.timestampToHumanDate(getActivity(), message.getTime(), R.string.messages_date_format) + " - " + displayName);
if (message.hasTextContent()) {
String msg = message.getTextContent();
Spanned text = LinphoneUtils.getTextWithHttpLinks(msg);
@ -140,11 +186,6 @@ public class ImdnFragment extends Fragment {
v.findViewById(R.id.separator).setVisibility(View.GONE);
((TextView)v.findViewById(R.id.name)).setText("Heloïse");
mUndelivered.addView(v);
mBubble.contactName.setText("10/07/2017 - 17h35 - Violaine");
mBubble.messageText.setText("Lorem ipsum dolor sit aet patetris");
mBubble.messageText.setMovementMethod(LinkMovementMethod.getInstance());
mBubble.messageText.setVisibility(View.VISIBLE);
// End of todo
return view;

@ -1 +1 @@
Subproject commit 6c7c56271a261af359a587a06916d8309f47003f
Subproject commit cd08c6e2fee6c99ead64dde6783337714c5aedc8