package com.xabber.android.ui.adapter.contactlist;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import com.xabber.android.R;
import com.xabber.android.data.SettingsManager;
import com.xabber.android.data.account.AccountItem;
import com.xabber.android.data.account.AccountManager;
import com.xabber.android.data.connection.ConnectionState;
import com.xabber.android.data.database.messagerealm.MessageItem;
import com.xabber.android.data.entity.BaseEntity;
import com.xabber.android.data.extension.capability.ClientSoftware;
import com.xabber.android.data.extension.muc.MUCManager;
import com.xabber.android.data.message.MessageManager;
import com.xabber.android.data.roster.AbstractContact;
import com.xabber.android.ui.activity.ContactActivity;
import com.xabber.android.ui.activity.ContactEditActivity;
import com.xabber.android.ui.color.ColorManager;
import com.xabber.android.utils.StringUtils;
import java.io.File;
import java.util.Date;
class ContactItemInflater {
private final Context context;
private String outgoingMessageIndicatorText;
ContactItemInflater(Context context) {
this.context = context;
outgoingMessageIndicatorText = context.getString(R.string.sender_is_you) + ": ";
}
void bindViewHolder(ContactListItemViewHolder viewHolder, final AbstractContact contact) {
AccountItem accountItem = AccountManager.getInstance().getAccount(contact.getAccount());
if (accountItem != null && accountItem.getState() == ConnectionState.connected) {
viewHolder.offlineShadow.setVisibility(View.GONE);
} else {
viewHolder.offlineShadow.setVisibility(View.VISIBLE);
}
viewHolder.color.setBackgroundColor(ColorManager.getInstance().getAccountPainter().getAccountMainColor(contact.getAccount()));
viewHolder.color.setVisibility(View.VISIBLE);
if (SettingsManager.contactsShowAvatars()) {
viewHolder.avatar.setVisibility(View.VISIBLE);
viewHolder.avatar.setImageDrawable(contact.getAvatarForContactList());
} else {
viewHolder.avatar.setVisibility(View.GONE);
}
viewHolder.name.setText(contact.getName());
MessageManager messageManager = MessageManager.getInstance();
if (MUCManager.getInstance().isMucPrivateChat(contact.getAccount(), contact.getUser())) {
viewHolder.name.setTextColor(ColorManager.getInstance().getColorMucPrivateChatText());
} else if (messageManager.hasActiveChat(contact.getAccount(), contact.getUser())) {
viewHolder.name.setTextColor(ColorManager.getInstance().getActiveChatTextColor());
} else {
viewHolder.name.setTextColor(ColorManager.getInstance().getColorMain());
}
if (MUCManager.getInstance().hasRoom(contact.getAccount(), contact.getUser())) {
viewHolder.mucIndicator.setVisibility(View.VISIBLE);
viewHolder.mucIndicator.setImageResource(R.drawable.ic_muc_indicator_black_16dp);
} else if (MUCManager.getInstance().isMucPrivateChat(contact.getAccount(), contact.getUser())) {
viewHolder.mucIndicator.setVisibility(View.VISIBLE);
viewHolder.mucIndicator.setImageResource(R.drawable.ic_muc_private_chat_indicator_black_16dp);
} else {
viewHolder.mucIndicator.setVisibility(View.GONE);
}
String statusText;
viewHolder.outgoingMessageIndicator.setVisibility(View.GONE);
viewHolder.smallRightText.setVisibility(View.GONE);
viewHolder.smallRightIcon.setVisibility(View.GONE);
ClientSoftware clientSoftware = contact.getClientSoftware();
if (clientSoftware == ClientSoftware.unknown) {
viewHolder.largeClientIcon.setVisibility(View.GONE);
} else {
viewHolder.largeClientIcon.setVisibility(View.VISIBLE);
viewHolder.largeClientIcon.setImageLevel(clientSoftware.ordinal());
}
MessageItem lastMessage = messageManager.getOrCreateChat(contact.getAccount(), contact.getUser()).getLastMessage();
if (lastMessage == null) {
statusText = contact.getStatusText().trim();
} else {
if (lastMessage.getFilePath() != null) {
statusText = new File(lastMessage.getFilePath()).getName();
} else {
statusText = lastMessage.getText().trim();
}
viewHolder.smallRightText.setText(StringUtils
.getSmartTimeText(context, new Date(lastMessage.getTimestamp())));
viewHolder.smallRightText.setVisibility(View.VISIBLE);
if (!lastMessage.isIncoming()) {
viewHolder.outgoingMessageIndicator.setText(outgoingMessageIndicatorText);
viewHolder.outgoingMessageIndicator.setVisibility(View.VISIBLE);
viewHolder.outgoingMessageIndicator.setTextColor(ColorManager.getInstance().getAccountPainter().getAccountMainColor(contact.getAccount()));
}
viewHolder.smallRightIcon.setImageResource(R.drawable.ic_client_small);
viewHolder.smallRightIcon.setVisibility(View.VISIBLE);
viewHolder.smallRightIcon.setImageLevel(clientSoftware.ordinal());
viewHolder.largeClientIcon.setVisibility(View.GONE);
}
if (messageManager.hasActiveChat(contact.getAccount(), contact.getUser())) {
viewHolder.itemView.setBackgroundColor(ColorManager.getInstance().getActiveChatBackgroundColor());
viewHolder.separator.setBackgroundColor(ColorManager.getInstance().getActiveChatSeparatorColor());
viewHolder.largeClientIcon.setColorFilter(ColorManager.getInstance().getActiveChatLargeClientIconColor());
viewHolder.smallRightIcon.setColorFilter(ColorManager.getInstance().getActiveChatLargeClientIconColor());
viewHolder.smallRightText.setTextColor(ColorManager.getInstance().getActiveChatLargeClientIconColor());
} else {
viewHolder.itemView.setBackgroundColor(ColorManager.getInstance().getContactBackground());
viewHolder.separator.setBackgroundColor(ColorManager.getInstance().getContactSeparatorColor());
viewHolder.largeClientIcon.setColorFilter(ColorManager.getInstance().getContactLargeClientIconColor());
viewHolder.smallRightIcon.setColorFilter(ColorManager.getInstance().getContactLargeClientIconColor());
viewHolder.smallRightText.setTextColor(ColorManager.getInstance().getContactLargeClientIconColor());
}
if (statusText.isEmpty()) {
viewHolder.secondLineMessage.setVisibility(View.GONE);
} else {
viewHolder.secondLineMessage.setVisibility(View.VISIBLE);
viewHolder.secondLineMessage.setText(statusText);
}
viewHolder.statusIcon.setImageLevel(contact.getStatusMode().getStatusLevel());
}
void onAvatarClick(BaseEntity contact) {
Intent intent;
if (MUCManager.getInstance().hasRoom(contact.getAccount(), contact.getUser())) {
intent = ContactActivity.createIntent(context, contact.getAccount(), contact.getUser());
} else {
intent = ContactEditActivity.createIntent(context, contact.getAccount(), contact.getUser());
}
context.startActivity(intent);
}
}