package com.ericliudeveloper.sharedbillhelper.ui.presenter;
import android.database.Cursor;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.ericliudeveloper.sharedbillhelper.R;
import com.ericliudeveloper.sharedbillhelper.model.Member;
import com.ericliudeveloper.sharedbillhelper.model.MemberDAO;
import com.ericliudeveloper.sharedbillhelper.util.CustomEvents;
import com.ericliudeveloper.sharedbillhelper.util.ResouceUtils;
import java.util.HashMap;
import de.greenrobot.event.EventBus;
/**
* Created by liu on 8/06/15.
*/
public class MemberListPresenter implements ListPresenter {
private boolean isListSelectionMode = false;
public static HashMap<Long, Member> mSelection = new HashMap<>();
public MemberListPresenter(boolean isSelectionMode) {
isListSelectionMode = isSelectionMode;
}
@Override
public RecyclerView.ViewHolder getCustomViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.member_row_layout, parent, false);
return new MemberViewHolder(itemView, isListSelectionMode);
}
@Override
public void setViewHolderData(RecyclerView.ViewHolder holder, Cursor cursor) {
Member member = MemberDAO.getMemberFromCursor(cursor);
if (member != null) {
((MemberViewHolder) holder).setItem(member);
}
}
public static class MemberViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
private boolean isSelectionMode = false;
private Member mMember;
CardView cardView;
TextView tvFirstName, tvLastName;
public final CheckBox checkBox;
public MemberViewHolder(View itemView, boolean isSelectionMode) {
super(itemView);
this.isSelectionMode = isSelectionMode;
cardView = (CardView) itemView.findViewById(R.id.card_view);
tvFirstName = (TextView) itemView.findViewById(R.id.tvFristName);
tvLastName = (TextView) itemView.findViewById(R.id.tvLastName);
checkBox = (CheckBox) itemView.findViewById(android.R.id.checkbox);
itemView.setOnClickListener(this);
checkBox.setOnCheckedChangeListener(this);
if (isSelectionMode) {
checkBox.setVisibility(View.VISIBLE);
int pixels = ResouceUtils.getAppResources().getDimensionPixelSize(R.dimen.selectionModeRowItemHeight);
cardView.getLayoutParams().height = pixels;
} else {
checkBox.setVisibility(View.GONE);
}
}
public void setItem(Member member) {
mMember = member;
refreshDisplay(member);
}
public void refreshDisplay(Member member) {
String id = String.valueOf(member.getId());
String first = member.getFirstName();
String last = member.getLastName();
tvFirstName.setText(first);
tvLastName.setText(last);
checkBox.setChecked(mSelection.containsKey(member.getId()));
}
@Override
public void onClick(View v) {
if (isSelectionMode) {
checkBox.setChecked(!checkBox.isChecked());
} else {
CustomEvents.EventViewMember eventViewMember = new CustomEvents.EventViewMember(mMember);
EventBus.getDefault().postSticky(eventViewMember);
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (!mSelection.containsKey(mMember.getId())) {
mSelection.put(mMember.getId(), mMember);
}
} else {
if (mSelection.containsKey(mMember.getId())) {
mSelection.remove(mMember.getId());
}
}
}
}
}