Search in sources :

Example 1 with EMConversation

use of com.hyphenate.chat.EMConversation 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 EMConversation

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

the class EaseConversationListFragment method loadConversationList.

/**
 * load conversation list
 *
 * @return
 *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        +
 */
protected List<EMConversation> loadConversationList() {
    // get all conversations
    Map<String, EMConversation> conversations = EMClient.getInstance().chatManager().getAllConversations();
    List<Pair<Long, EMConversation>> sortList = new ArrayList<Pair<Long, EMConversation>>();
    /**
     * lastMsgTime will change if there is new message during sorting
     * so use synchronized to make sure timestamp of last message won't change.
     */
    synchronized (conversations) {
        for (EMConversation conversation : conversations.values()) {
            if (conversation.getAllMessages().size() != 0) {
                sortList.add(new Pair<Long, EMConversation>(conversation.getLastMessage().getMsgTime(), conversation));
            }
        }
    }
    try {
        // Internal is TimSort algorithm, has bug
        sortConversationByLastChatTime(sortList);
    } catch (Exception e) {
        e.printStackTrace();
    }
    List<EMConversation> list = new ArrayList<EMConversation>();
    for (Pair<Long, EMConversation> sortItem : sortList) {
        list.add(sortItem.second);
    }
    return list;
}
Also used : EMConversation(com.hyphenate.chat.EMConversation) ArrayList(java.util.ArrayList) Pair(android.util.Pair)

Example 3 with EMConversation

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

the class EaseConversationListFragment method setUpView.

@Override
protected void setUpView() {
    conversationList.addAll(loadConversationList());
    conversationListView.init(conversationList);
    if (listItemClickListener != null) {
        conversationListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                EMConversation conversation = conversationListView.getItem(position);
                listItemClickListener.onListItemClicked(conversation);
            }
        });
    }
    EMClient.getInstance().addConnectionListener(connectionListener);
    query.addTextChangedListener(new TextWatcher() {

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            conversationListView.filter(s);
            if (s.length() > 0) {
                clearSearch.setVisibility(View.VISIBLE);
            } else {
                clearSearch.setVisibility(View.INVISIBLE);
            }
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void afterTextChanged(Editable s) {
        }
    });
    clearSearch.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            query.getText().clear();
            hideSoftKeyboard();
        }
    });
    conversationListView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            hideSoftKeyboard();
            return false;
        }
    });
}
Also used : OnTouchListener(android.view.View.OnTouchListener) OnItemClickListener(android.widget.AdapterView.OnItemClickListener) View(android.view.View) AdapterView(android.widget.AdapterView) MotionEvent(android.view.MotionEvent) EMConversation(com.hyphenate.chat.EMConversation) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) OnClickListener(android.view.View.OnClickListener)

Aggregations

EMConversation (com.hyphenate.chat.EMConversation)3 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 Pair (android.util.Pair)1 MotionEvent (android.view.MotionEvent)1 View (android.view.View)1 OnClickListener (android.view.View.OnClickListener)1 OnTouchListener (android.view.View.OnTouchListener)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 EMChatRoom (com.hyphenate.chat.EMChatRoom)1 EMGroup (com.hyphenate.chat.EMGroup)1 EMMessage (com.hyphenate.chat.EMMessage)1 EaseAvatarOptions (com.hyphenate.easeui.domain.EaseAvatarOptions)1 EaseImageView (com.hyphenate.easeui.widget.EaseImageView)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1