package im.actor.sdk.controllers.contacts;
import android.content.Context;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ActionMenuView;
import android.widget.CheckBox;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import im.actor.core.entity.PhoneBookContact;
import im.actor.runtime.android.view.BindedViewHolder;
import im.actor.sdk.ActorSDK;
import im.actor.sdk.R;
import im.actor.sdk.util.Screen;
import im.actor.sdk.view.adapters.ViewHolder;
import im.actor.sdk.view.avatar.AvatarView;
import im.actor.sdk.util.Fonts;
import im.actor.sdk.view.adapters.OnItemClickedListener;
import im.actor.sdk.view.SearchHighlight;
import im.actor.core.entity.Contact;
public class InviteContactHolder extends ViewHolder<PhoneBookContact> {
public static final int TYPE_PHONE = 0;
public static final int TYPE_EMAIL = 1;
private AvatarView avatar;
private TextView title;
private TextView subtitle;
private TextView fastTitle;
private CheckBox isSelected;
private FrameLayout cont;
private FrameLayout fl;
private OnItemClickedListener<PhoneBookContact> onItemClickedListener;
private final View separator;
public InviteContactHolder(FrameLayout fl, Context context, OnItemClickedListener<PhoneBookContact> onItemClickedListener) {
this.fl = fl;
this.onItemClickedListener = onItemClickedListener;
int padding = Screen.dp(16);
fl.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Screen.dp(64)));
cont = new FrameLayout(context);
cont.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
FrameLayout background = new FrameLayout(context);
background.setBackgroundResource(R.drawable.selector_fill);
cont.addView(background, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.leftMargin = Screen.dp(40);
fl.addView(cont, layoutParams);
}
View fastBg = new View(context);
fastBg.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(Screen.dp(40), ViewGroup.LayoutParams.MATCH_PARENT);
fl.addView(fastBg, layoutParams);
}
avatar = new AvatarView(context);
avatar.init(52, 22);
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(Screen.dp(52), Screen.dp(52));
layoutParams.leftMargin = Screen.dp(6);
layoutParams.topMargin = Screen.dp(6);
layoutParams.bottomMargin = Screen.dp(6);
layoutParams.gravity = Gravity.CENTER_VERTICAL | Gravity.LEFT;
cont.addView(avatar, layoutParams);
}
fastTitle = new TextView(context);
fastTitle.setTextColor(ActorSDK.sharedActor().style.getContactFastTitleColor());
fastTitle.setTextSize(18);
fastTitle.setGravity(Gravity.CENTER);
fastTitle.setTypeface(Fonts.medium());
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(Screen.dp(40), ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.leftMargin = Screen.dp(6);
layoutParams.gravity = Gravity.CENTER_VERTICAL;
fl.addView(fastTitle, layoutParams);
}
title = new TextView(context);
title.setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
title.setPadding(Screen.dp(72), 0, Screen.dp(64), 0);
title.setTextSize(16);
title.setGravity(Gravity.CENTER_VERTICAL);
title.setSingleLine(true);
title.setEllipsize(TextUtils.TruncateAt.END);
title.setTypeface(Fonts.regular());
subtitle = new TextView(context);
subtitle.setTextColor(ActorSDK.sharedActor().style.getTextSecondaryColor());
subtitle.setPadding(Screen.dp(72), 0, Screen.dp(64), 0);
subtitle.setTextSize(14);
subtitle.setGravity(Gravity.CENTER_VERTICAL);
subtitle.setSingleLine(true);
subtitle.setEllipsize(TextUtils.TruncateAt.END);
subtitle.setTypeface(Fonts.regular());
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER_VERTICAL;
layoutParams.topMargin = Screen.dp(12);
layoutParams.bottomMargin = Screen.dp(12);
LinearLayout ll = new LinearLayout(context);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(title, llp);
ll.addView(subtitle, llp);
cont.addView(ll, layoutParams);
}
isSelected = new CheckBox(context);
isSelected.setClickable(false);
isSelected.setFocusable(false);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.CENTER_VERTICAL | Gravity.RIGHT;
lp.rightMargin = padding;
cont.addView(isSelected, lp);
separator = new View(context);
separator.setBackgroundColor(ActorSDK.sharedActor().style.getContactDividerColor());
{
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
context.getResources().getDimensionPixelSize(R.dimen.div_size));
layoutParams.gravity = Gravity.BOTTOM;
layoutParams.leftMargin = Screen.dp(72);
cont.addView(separator, layoutParams);
}
}
public void bind(final PhoneBookContact data, String shortName, String query, boolean selected, int type, boolean isLast) {
if (shortName == null) {
fastTitle.setVisibility(View.GONE);
} else {
fastTitle.setVisibility(View.VISIBLE);
fastTitle.setText(shortName);
}
avatar.bind(data);
if (query.length() > 0) {
title.setText(SearchHighlight.highlightQuery(data.getName(), query, 0xff0277bd));
} else {
title.setText(data.getName());
}
if ((type == TYPE_EMAIL && data.getEmails().size() > 0) || data.getPhones().size() == 0) {
subtitle.setText(data.getEmails().get(0).getEmail());
} else {
subtitle.setText(Long.toString(data.getPhones().get(0).getNumber()));
}
isSelected.setChecked(selected);
cont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickedListener.onClicked(data);
}
});
cont.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return onItemClickedListener.onLongClicked(data);
}
});
if (isLast) {
separator.setVisibility(View.GONE);
} else {
separator.setVisibility(View.VISIBLE);
}
}
@Override
public View init(PhoneBookContact data, ViewGroup viewGroup, Context context) {
return fl;
}
@Override
public void bind(PhoneBookContact data, int position, Context context) {
}
public void unbind() {
avatar.unbind();
}
}