package it.slyce.messaging.message.messageItem.master.text;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Vibrator;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import it.slyce.messaging.R;
import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.message.TextMessage;
import it.slyce.messaging.utils.DateUtils;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.MessageItemType;
import it.slyce.messaging.message.messageItem.MessageViewHolder;
/**
* Created by matthewpage on 6/27/16.
*/
public class MessageTextItem extends MessageItem {
private Context context;
private String avatarUrl;
public MessageTextItem(TextMessage textMessage, Context context) {
super(textMessage);
this.context = context;
}
@Override
public void buildMessageItem(
MessageViewHolder messageViewHolder) {
if (message != null && messageViewHolder != null && messageViewHolder instanceof MessageTextViewHolder) {
final MessageTextViewHolder messageTextViewHolder = (MessageTextViewHolder) messageViewHolder;
// Get content
String date = DateUtils.getTimestamp(context, message.getDate());
String text = ((TextMessage)message).getText();
this.avatarUrl = message.getAvatarUrl();
this.initials = message.getInitials();
// Populate views with content
messageTextViewHolder.initials.setText(initials != null ? initials : "");
messageTextViewHolder.text.setText(text != null ? text : "");
messageTextViewHolder.timestamp.setText(date != null ? date : "");
messageTextViewHolder.bubble.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
ClipboardManager clipboard = (ClipboardManager)
context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("simple text", ((TextMessage)MessageTextItem.this.message).getText());
clipboard.setPrimaryClip(clip);
Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(150);
String toastMessage = (String) context.getText(R.string.message_text_copied);
Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show();
return false;
}
});
messageViewHolder.avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (messageTextViewHolder.customSettings.userClicksAvatarPictureListener != null)
messageTextViewHolder.customSettings.userClicksAvatarPictureListener.userClicksAvatarPhoto(message.getUserId());
}
});
if (isFirstConsecutiveMessageFromSource) {
Glide.with(context).load(avatarUrl).into(messageTextViewHolder.avatar);
}
messageTextViewHolder.avatar.setVisibility(isFirstConsecutiveMessageFromSource && !TextUtils.isEmpty(avatarUrl) ? View.VISIBLE : View.INVISIBLE);
messageTextViewHolder.avatarContainer.setVisibility(isFirstConsecutiveMessageFromSource ? View.VISIBLE : View.INVISIBLE);
messageTextViewHolder.carrot.setVisibility(isFirstConsecutiveMessageFromSource ? View.VISIBLE : View.INVISIBLE);
messageTextViewHolder.initials.setVisibility(isFirstConsecutiveMessageFromSource && TextUtils.isEmpty(avatarUrl) ? View.VISIBLE : View.GONE);
messageTextViewHolder.timestamp.setVisibility(isLastConsecutiveMessageFromSource ? View.VISIBLE : View.GONE);
}
}
@Override
public MessageItemType getMessageItemType() {
if (message.getSource() == MessageSource.EXTERNAL_USER) {
return MessageItemType.INCOMING_TEXT;
} else {
return MessageItemType.OUTGOING_TEXT;
}
}
@Override
public MessageSource getMessageSource() {
return message.getSource();
}
}