Search in sources :

Example 1 with EMMessage

use of com.hyphenate.chat.EMMessage in project SmartCampus by Vegen.

the class EaseConversationAdapter method getView.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.ease_row_chat_history, parent, false);
    }
    ViewHolder holder = (ViewHolder) convertView.getTag();
    if (holder == null) {
        holder = new ViewHolder();
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.unreadLabel = (TextView) convertView.findViewById(R.id.unread_msg_number);
        holder.message = (TextView) convertView.findViewById(R.id.message);
        holder.time = (TextView) convertView.findViewById(R.id.time);
        holder.avatar = (ImageView) convertView.findViewById(R.id.avatar);
        holder.msgState = convertView.findViewById(R.id.msg_state);
        holder.list_itease_layout = (RelativeLayout) convertView.findViewById(R.id.list_itease_layout);
        holder.motioned = (TextView) convertView.findViewById(R.id.mentioned);
        convertView.setTag(holder);
    }
    holder.list_itease_layout.setBackgroundResource(R.drawable.ease_mm_listitem);
    // get conversation
    EMConversation conversation = getItem(position);
    // get username or group id
    String username = conversation.conversationId();
    if (conversation.getType() == EMConversationType.GroupChat) {
        String groupId = conversation.conversationId();
        if (EaseAtMessageHelper.get().hasAtMeMsg(groupId)) {
            holder.motioned.setVisibility(View.VISIBLE);
        } else {
            holder.motioned.setVisibility(View.GONE);
        }
        // group message, show group avatar
        holder.avatar.setImageResource(R.drawable.ease_group_icon);
        EMGroup group = EMClient.getInstance().groupManager().getGroup(username);
        holder.name.setText(group != null ? group.getGroupName() : username);
    } else if (conversation.getType() == EMConversationType.ChatRoom) {
        holder.avatar.setImageResource(R.drawable.ease_group_icon);
        EMChatRoom room = EMClient.getInstance().chatroomManager().getChatRoom(username);
        holder.name.setText(room != null && !TextUtils.isEmpty(room.getName()) ? room.getName() : username);
        holder.motioned.setVisibility(View.GONE);
    } else {
        EaseUserUtils.setUserAvatar(getContext(), username, holder.avatar);
        EaseUserUtils.setUserNick(username, holder.name);
        holder.motioned.setVisibility(View.GONE);
    }
    EaseAvatarOptions avatarOptions = EaseUI.getInstance().getAvatarOptions();
    if (avatarOptions != null && holder.avatar instanceof EaseImageView) {
        EaseImageView avatarView = ((EaseImageView) holder.avatar);
        if (avatarOptions.getAvatarShape() != 0)
            avatarView.setShapeType(avatarOptions.getAvatarShape());
        if (avatarOptions.getAvatarBorderWidth() != 0)
            avatarView.setBorderWidth(avatarOptions.getAvatarBorderWidth());
        if (avatarOptions.getAvatarBorderColor() != 0)
            avatarView.setBorderColor(avatarOptions.getAvatarBorderColor());
        if (avatarOptions.getAvatarRadius() != 0)
            avatarView.setRadius(avatarOptions.getAvatarRadius());
    }
    if (conversation.getUnreadMsgCount() > 0) {
        // show unread message count
        holder.unreadLabel.setText(String.valueOf(conversation.getUnreadMsgCount()));
        holder.unreadLabel.setVisibility(View.VISIBLE);
    } else {
        holder.unreadLabel.setVisibility(View.INVISIBLE);
    }
    if (conversation.getAllMsgCount() != 0) {
        // show the content of latest message
        EMMessage lastMessage = conversation.getLastMessage();
        String content = null;
        if (cvsListHelper != null) {
            content = cvsListHelper.onSetItemSecondaryText(lastMessage);
        }
        holder.message.setText(EaseSmileUtils.getSmiledText(getContext(), EaseCommonUtils.getMessageDigest(lastMessage, (this.getContext()))), BufferType.SPANNABLE);
        if (content != null) {
            holder.message.setText(content);
        }
        holder.time.setText(DateUtils.getTimestampString(new Date(lastMessage.getMsgTime())));
        if (lastMessage.direct() == EMMessage.Direct.SEND && lastMessage.status() == EMMessage.Status.FAIL) {
            holder.msgState.setVisibility(View.VISIBLE);
        } else {
            holder.msgState.setVisibility(View.GONE);
        }
    }
    // set property
    holder.name.setTextColor(primaryColor);
    holder.message.setTextColor(secondaryColor);
    holder.time.setTextColor(timeColor);
    if (primarySize != 0)
        holder.name.setTextSize(TypedValue.COMPLEX_UNIT_PX, primarySize);
    if (secondarySize != 0)
        holder.message.setTextSize(TypedValue.COMPLEX_UNIT_PX, secondarySize);
    if (timeSize != 0)
        holder.time.setTextSize(TypedValue.COMPLEX_UNIT_PX, timeSize);
    return convertView;
}
Also used : EMConversation(com.hyphenate.chat.EMConversation) EaseImageView(com.hyphenate.easeui.widget.EaseImageView) EMGroup(com.hyphenate.chat.EMGroup) EMChatRoom(com.hyphenate.chat.EMChatRoom) Date(java.util.Date) EaseAvatarOptions(com.hyphenate.easeui.domain.EaseAvatarOptions) EMMessage(com.hyphenate.chat.EMMessage)

Example 2 with EMMessage

use of com.hyphenate.chat.EMMessage in project SmartCampus by Vegen.

the class EaseNotifier method sendNotification.

/**
 * send it to notification bar
 * This can be override by subclass to provide customer implementation
 * @param messages
 * @param isForeground
 */
protected void sendNotification(List<EMMessage> messages, boolean isForeground) {
    for (EMMessage message : messages) {
        if (!isForeground) {
            notificationNum++;
            fromUsers.add(message.getFrom());
        }
    }
    sendNotification(messages.get(messages.size() - 1), isForeground, false);
}
Also used : EMMessage(com.hyphenate.chat.EMMessage)

Example 3 with EMMessage

use of com.hyphenate.chat.EMMessage in project SmartCampus by Vegen.

the class EaseChatRow method setUpBaseView.

private void setUpBaseView() {
    // set nickname, avatar and background of bubble
    TextView timestamp = (TextView) findViewById(R.id.timestamp);
    if (timestamp != null) {
        if (position == 0) {
            timestamp.setText(DateUtils.getTimestampString(new Date(message.getMsgTime())));
            timestamp.setVisibility(View.VISIBLE);
        } else {
            // show time stamp if interval with last message is > 30 seconds
            EMMessage prevMessage = (EMMessage) adapter.getItem(position - 1);
            if (prevMessage != null && DateUtils.isCloseEnough(message.getMsgTime(), prevMessage.getMsgTime())) {
                timestamp.setVisibility(View.GONE);
            } else {
                timestamp.setText(DateUtils.getTimestampString(new Date(message.getMsgTime())));
                timestamp.setVisibility(View.VISIBLE);
            }
        }
    }
    if (userAvatarView != null) {
        // set nickname and avatar
        if (message.direct() == Direct.SEND) {
            EaseUserUtils.setUserAvatar(context, EMClient.getInstance().getCurrentUser(), userAvatarView);
        } else {
            EaseUserUtils.setUserAvatar(context, message.getFrom(), userAvatarView);
            EaseUserUtils.setUserNick(message.getFrom(), usernickView);
        }
    }
    if (EMClient.getInstance().getOptions().getRequireDeliveryAck()) {
        if (deliveredView != null) {
            if (message.isDelivered()) {
                deliveredView.setVisibility(View.VISIBLE);
            } else {
                deliveredView.setVisibility(View.INVISIBLE);
            }
        }
    }
    if (EMClient.getInstance().getOptions().getRequireAck()) {
        if (ackedView != null) {
            if (message.isAcked()) {
                if (deliveredView != null) {
                    deliveredView.setVisibility(View.INVISIBLE);
                }
                ackedView.setVisibility(View.VISIBLE);
            } else {
                ackedView.setVisibility(View.INVISIBLE);
            }
        }
    }
    if (itemStyle != null) {
        if (userAvatarView != null) {
            if (itemStyle.isShowAvatar()) {
                userAvatarView.setVisibility(View.VISIBLE);
                EaseAvatarOptions avatarOptions = EaseUI.getInstance().getAvatarOptions();
                if (avatarOptions != null && userAvatarView instanceof EaseImageView) {
                    EaseImageView avatarView = ((EaseImageView) userAvatarView);
                    if (avatarOptions.getAvatarShape() != 0)
                        avatarView.setShapeType(avatarOptions.getAvatarShape());
                    if (avatarOptions.getAvatarBorderWidth() != 0)
                        avatarView.setBorderWidth(avatarOptions.getAvatarBorderWidth());
                    if (avatarOptions.getAvatarBorderColor() != 0)
                        avatarView.setBorderColor(avatarOptions.getAvatarBorderColor());
                    if (avatarOptions.getAvatarRadius() != 0)
                        avatarView.setRadius(avatarOptions.getAvatarRadius());
                }
            } else {
                userAvatarView.setVisibility(View.GONE);
            }
        }
        if (usernickView != null) {
            if (itemStyle.isShowUserNick())
                usernickView.setVisibility(View.VISIBLE);
            else
                usernickView.setVisibility(View.GONE);
        }
        if (bubbleLayout != null) {
            if (message.direct() == Direct.SEND) {
                if (itemStyle.getMyBubbleBg() != null) {
                    bubbleLayout.setBackgroundDrawable(((EaseMessageAdapter) adapter).getMyBubbleBg());
                }
            } else if (message.direct() == Direct.RECEIVE) {
                if (itemStyle.getOtherBubbleBg() != null) {
                    bubbleLayout.setBackgroundDrawable(((EaseMessageAdapter) adapter).getOtherBubbleBg());
                }
            }
        }
    }
}
Also used : EaseImageView(com.hyphenate.easeui.widget.EaseImageView) EaseMessageAdapter(com.hyphenate.easeui.adapter.EaseMessageAdapter) TextView(android.widget.TextView) Date(java.util.Date) EMMessage(com.hyphenate.chat.EMMessage) EaseAvatarOptions(com.hyphenate.easeui.domain.EaseAvatarOptions)

Example 4 with EMMessage

use of com.hyphenate.chat.EMMessage in project SmartCampus by Vegen.

the class EaseDingMessageHelperTest method createDingMessage.

private EMMessage createDingMessage(String conversationId, String originalMsgId) {
    EMAMessage _msg = EMAMessage.createSendMessage("", "", null, EMMessage.ChatType.Chat.ordinal());
    _msg.setTo(conversationId);
    EMMessage msg = new EMMessage(_msg);
    msg.setMsgId(originalMsgId);
    EMTextMessageBody txtBody = new EMTextMessageBody("1");
    msg.addBody(txtBody);
    msg.setAttribute(KEY_DING, true);
    msg.setChatType(EMMessage.ChatType.GroupChat);
    return msg;
}
Also used : EMTextMessageBody(com.hyphenate.chat.EMTextMessageBody) EMAMessage(com.hyphenate.chat.adapter.message.EMAMessage) EMMessage(com.hyphenate.chat.EMMessage)

Example 5 with EMMessage

use of com.hyphenate.chat.EMMessage in project SmartCampus by Vegen.

the class EaseChatFragment method sendVoiceMessage.

protected void sendVoiceMessage(String filePath, int length) {
    EMMessage message = EMMessage.createVoiceSendMessage(filePath, length, toChatUsername);
    sendMessage(message);
}
Also used : EMMessage(com.hyphenate.chat.EMMessage)

Aggregations

EMMessage (com.hyphenate.chat.EMMessage)24 File (java.io.File)4 EMCallBack (com.hyphenate.EMCallBack)3 SuppressLint (android.annotation.SuppressLint)2 EMCmdMessageBody (com.hyphenate.chat.EMCmdMessageBody)2 EMGroup (com.hyphenate.chat.EMGroup)2 EMTextMessageBody (com.hyphenate.chat.EMTextMessageBody)2 EMAMessage (com.hyphenate.chat.adapter.message.EMAMessage)2 EaseAvatarOptions (com.hyphenate.easeui.domain.EaseAvatarOptions)2 EaseImageView (com.hyphenate.easeui.widget.EaseImageView)2 Date (java.util.Date)2 ProgressDialog (android.app.ProgressDialog)1 Intent (android.content.Intent)1 DisplayMetrics (android.util.DisplayMetrics)1 TextView (android.widget.TextView)1 EMChatRoom (com.hyphenate.chat.EMChatRoom)1 EMConversation (com.hyphenate.chat.EMConversation)1 EMFileMessageBody (com.hyphenate.chat.EMFileMessageBody)1 EMImageMessageBody (com.hyphenate.chat.EMImageMessageBody)1 EMVideoMessageBody (com.hyphenate.chat.EMVideoMessageBody)1