Example #1
0
        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"));
        }
Example #3
0
 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;
 }