package io.github.memfis19.cadar.internal.utils; import android.support.v4.util.Pair; import java.util.Calendar; import java.util.List; import io.github.memfis19.cadar.internal.ui.list.adapter.model.ListItemModel; /** * Created by memfis on 9/9/16. */ public final class CalendarHelper { private CalendarHelper() { } public static void prepareListItems(List<ListItemModel> listItemModels, Calendar startPeriod, int capacityMonth) { for (int i = 0; i < capacityMonth; ++i) { Calendar temp = (Calendar) startPeriod.clone(); temp.add(Calendar.MONTH, i); listItemModels.add(new ListItemModel(temp, temp, ListItemModel.MONTH)); CalendarHelper.prepareWeekModel((Calendar) temp.clone(), listItemModels); } } public static void prepareWeekModel(Calendar month, List<ListItemModel> listItemModels) { int monthValue = month.get(Calendar.MONTH); month.set(Calendar.DAY_OF_MONTH, 1); while (month.get(Calendar.DAY_OF_WEEK) != month.getFirstDayOfWeek()) { month.add(Calendar.DAY_OF_MONTH, 1); } int startWeek = month.get(Calendar.WEEK_OF_YEAR); while (month.get(Calendar.MONTH) == monthValue) { Calendar start = DateUtils.setTimeToMidnight((Calendar) month.clone()); month.add(Calendar.DAY_OF_YEAR, 6); Calendar end = DateUtils.setTimeToEndOfTheDay((Calendar) month.clone()); listItemModels.add(new ListItemModel(start, new Pair<>(start, end), ListItemModel.WEEK)); month.add(Calendar.DAY_OF_YEAR, -6); month.add(Calendar.WEEK_OF_YEAR, 1); } int endWeek = month.get(Calendar.WEEK_OF_YEAR); int weeksAmount = endWeek - startWeek; month.set(Calendar.WEEK_OF_YEAR, month.get(Calendar.WEEK_OF_YEAR) - weeksAmount); } }