package io.github.memfis19.cadar.internal.ui.month.adapter.holder;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import java.util.Calendar;
import java.util.List;
import io.github.memfis19.cadar.R;
import io.github.memfis19.cadar.data.entity.Event;
import io.github.memfis19.cadar.event.OnDayChangeListener;
import io.github.memfis19.cadar.internal.ui.month.MonthCalendarHelper;
import io.github.memfis19.cadar.internal.ui.month.adapter.decorator.MonthDayDecorator;
import io.github.memfis19.cadar.internal.ui.month.adapter.decorator.factory.MonthDayDecoratorFactory;
import io.github.memfis19.cadar.internal.utils.DateUtils;
/**
* Created by memfis on 7/13/16.
*/
public class MonthDayHolder extends RecyclerView.ViewHolder {
private View itemView;
private TextView dayNumberView;
private Calendar day;
private boolean displayDaysOutOfMonth = true;
private MonthDayDecorator monthDayDecorator;
public MonthDayHolder(View itemView,
boolean displayDaysOutOfMonth,
final OnDayChangeListener onDateChangeListener,
MonthDayDecoratorFactory monthDayDecoratorFactory) {
super(itemView);
this.itemView = itemView;
this.displayDaysOutOfMonth = displayDaysOutOfMonth;
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onDateChangeListener != null) {
MonthCalendarHelper.updateSelectedDay(day);
onDateChangeListener.onDayChanged(day);
}
}
});
if (monthDayDecoratorFactory != null) {
monthDayDecorator = monthDayDecoratorFactory.createMonthDayDecorator(itemView);
} else {
dayNumberView = (TextView) itemView.findViewById(R.id.month_view_item_content);
}
}
public void bindView(final Calendar monthDay,
final Calendar month,
@Nullable List<Event> eventList,
boolean isSelected,
boolean isToday) {
day = monthDay;
if (monthDayDecorator != null) {
monthDayDecorator.onBindDayView(itemView, monthDay, month, eventList, isSelected, isToday);
} else {
if (!displayDaysOutOfMonth) {
if (!DateUtils.isSameMonth(monthDay, month)) {
itemView.setVisibility(View.GONE);
return;
} else itemView.setVisibility(View.VISIBLE);
}
dayNumberView.setText(String.valueOf(monthDay.get(Calendar.DAY_OF_MONTH)));
if (isSelected) {
dayNumberView.setBackgroundResource(R.drawable.event_selected_background);
} else if (isToday) {
dayNumberView.setBackgroundResource(R.drawable.event_today_background);
} else {
dayNumberView.setBackgroundColor(Color.TRANSPARENT);
}
if (eventList == null || eventList.isEmpty()) {
dayNumberView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} else {
dayNumberView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, R.drawable.event_indicator);
}
}
}
}