} // OnVisitMonth

        // ----------------------------------------------------------------------
        protected override bool OnVisitDay(Day day, CalendarPeriodCollectorContext context)
        {
            if (context.Scope != CalendarPeriodCollectorContext.CollectType.Hour)
            {
                return(true); // continue
            }

            if (Filter.CollectingHours.Count == 0 && Filter.CollectingDayHours.Count == 0)
            {
                foreach (Hour hour in day.GetHours())
                {
                    if (IsMatchingHour(hour, context) && CheckLimits(hour))
                    {
                        periods.Add(hour);
                    }
                }
            }
            else
            {
                if (IsMatchingDay(day, context))
                {
                    List <HourRange> collectingHours = new List <HourRange>(Filter.CollectingHours);
                    foreach (DayHourRange collectingDayHour in Filter.CollectingDayHours)
                    {
                        if (collectingDayHour.Day == day.DayOfWeek)
                        {
                            collectingHours.Add(collectingDayHour);
                        }
                    }
                    foreach (HourRange collectingHour in collectingHours)
                    {
                        DateTime          start = collectingHour.Start.ToDateTime(day.Start);
                        DateTime          end   = collectingHour.End.ToDateTime(day.Start);
                        CalendarTimeRange hours = new CalendarTimeRange(start, end, day.Calendar);
                        if (CheckExcludePeriods(hours) && CheckLimits(hours))
                        {
                            periods.Add(hours);
                        }
                    }
                }
            }

            return(false); // abort
        } // OnVisitDay
示例#2
0
        } // ComputeHashCode

        // ----------------------------------------------------------------------
        private bool HasSameData(CalendarTimeRange comp)
        {
            return(calendar.Equals(comp.calendar));
        } // HasSameData