public CalendarMonth(DateTime selectedMonth, DateTime selectedDate, Action <DateTime> onSelectDate, CalendarPaints paints, CalendarRules calendarRules, CalendarSettings calendarSettings) { _onSelectDate = onSelectDate; _calendarSettings = calendarSettings; var firstDay = selectedMonth.GetFirstDayOfMonth(); var firstDayOfFirstWeek = firstDay.AddDays(-firstDay.GetDayPositionInWeek()); var lastDay = new DateTime(selectedMonth.Year, selectedMonth.Month, DateTime.DaysInMonth(selectedMonth.Year, selectedMonth.Month)); var lastDayOfLastWeek = lastDay.AddDays(CalendarDrawer.DAYS_PER_WEEK - 1 - lastDay.GetDayPositionInWeek()); var totalDays = (lastDayOfLastWeek - firstDayOfFirstWeek).Days + 1; var totalWeeks = (totalDays) / CalendarDrawer.DAYS_PER_WEEK; for (var d = 0; d < totalDays; d++) { var day = firstDayOfFirstWeek.AddDays(d); Add(new CalendarDay(day, selectedMonth, CalendarDrawer.MAX_DISPLAYED_WEEKS, paints, calendarRules, SelectDate, selectedDate.Date == day.Date)); } Add(new SkiaGrid(1, 1, CalendarDrawer.DAYS_PER_WEEK, paints.PaintLine, 0, CalendarDrawer.HeaderHeight)); Add(new SkiaGrid(totalWeeks, CalendarDrawer.MAX_DISPLAYED_WEEKS, CalendarDrawer.DAYS_PER_WEEK, paints.PaintLine, CalendarDrawer.HeaderHeight)); Add(new CalendarWeekDays(paints.PaintHeaderDay, _calendarSettings)); }
private static Calendar SetupFullCalendar() { var rules = new CalendarRules { { DayRulePolicy.Fallthrough, DayRuleParser.Parse("* * * * [[working day]] 08:30-17:30") }, { DayRulePolicy.Fallthrough, DayRuleParser.Parse("* * * 6..7 [[non working day]]") } }; return(new Calendar("Five Working Days Calendar", rules, "calendar description", "this is a very long description")); }
public CalendarDay(DateTime d, DateTime selectedMonth, int totalWeeksToDisplay, CalendarPaints paints, CalendarRules calendarRules, Action <DateTime> onPress, bool isSelected = false) { Date = d; _paints = paints; _rules = calendarRules; _selectedMonth = selectedMonth; _totalWeeksToDisplay = totalWeeksToDisplay; OnPressAction = bt => onPress?.Invoke(Date); IsSelected = isSelected; }