private DayScheduleItemsArranger(AccountDataItem account, SemesterItemsViewGroup semesterItems, ScheduleViewItemsGroup scheduleGroup, DateTime date, double heightOfHour, double spacingWhenNoAdditionalItems, double spacingWithAdditionalItems, double widthOfCollapsed, bool includeTasksAndEventsAndHolidays) { if (semesterItems.Semester == null) { throw new NullReferenceException("Semester was null"); } _semesterItems = semesterItems; semesterItems.OnItemsChanged += new WeakEventHandler <EventArgs>(SemesterGroup_OnItemsChanged).Handler; scheduleGroup.OnChangesOccurred += new WeakEventHandler <DataChangedEvent>(ScheduleViewItemsGroup_OnChangesOccurred).Handler; Date = date; _spacingWhenNoAdditionalItems = spacingWhenNoAdditionalItems; _spacingWithAdditionalItems = spacingWithAdditionalItems; _widthOfCollapsed = widthOfCollapsed; Account = account; _schoolTimeZone = account.SchoolTimeZone; HeightOfHour = heightOfHour; MinDuration = TimeSpan.FromHours(widthOfCollapsed / HeightOfHour); IsDifferentSemester = !semesterItems.Semester.IsDateDuringThisSemester(date); SchedulesOnDay schedules = null; if (!IsDifferentSemester) { schedules = SchedulesOnDay.Get(account, semesterItems.Classes, date, account.GetWeekOnDifferentDate(date), trackChanges: true); schedules.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(Schedules_CollectionChanged).Handler; } _schedules = schedules; if (includeTasksAndEventsAndHolidays) { // For schedules, if tasks have a specific due time, we don't adjust the dates regardless of time zones causing them to switch to a different day, since they're displayed on the visual schedule. Therefore we set useEffectiveDatesEvenWhenItemsHaveTimes to false. _events = TasksOrEventsOnDay.Get(account, semesterItems.Items, date, today: null, activeOnly: false, useEffectiveDateEvenWhenItemsHaveTimes: false); _events.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(Events_CollectionChanged).Handler; } else { _events = new MyObservableList <BaseViewItemMegaItem>(); } if (includeTasksAndEventsAndHolidays) { _holidays = HolidaysOnDay.Create(semesterItems.Items, date); _holidays.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(_holidays_CollectionChanged).Handler; } else { _holidays = new MyObservableList <ViewItemHoliday>(); } Initialize(schedules, _events, _holidays); }
private DayScheduleItemsArranger(AccountDataItem account, SemesterItemsViewGroup semesterItems, ScheduleViewItemsGroup scheduleGroup, DateTime date, double heightOfHour, double spacingWhenNoAdditionalItems, double spacingWithAdditionalItems, double widthOfCollapsed, bool includeTasksAndEventsAndHolidays) { if (semesterItems.Semester == null) { throw new NullReferenceException("Semester was null"); } _semesterItems = semesterItems; semesterItems.OnItemsChanged += new WeakEventHandler <EventArgs>(SemesterGroup_OnItemsChanged).Handler; scheduleGroup.OnChangesOccurred += new WeakEventHandler <DataChangedEvent>(ScheduleViewItemsGroup_OnChangesOccurred).Handler; Date = date; _spacingWhenNoAdditionalItems = spacingWhenNoAdditionalItems; _spacingWithAdditionalItems = spacingWithAdditionalItems; _widthOfCollapsed = widthOfCollapsed; Account = account; _schoolTimeZone = account.SchoolTimeZone; HeightOfHour = heightOfHour; MinDuration = TimeSpan.FromHours(widthOfCollapsed / HeightOfHour); IsDifferentSemester = !semesterItems.Semester.IsDateDuringThisSemester(date); SchedulesOnDay schedules = null; if (!IsDifferentSemester) { schedules = SchedulesOnDay.Get(semesterItems.Classes, date, account.GetWeekOnDifferentDate(date), trackChanges: true); schedules.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(Schedules_CollectionChanged).Handler; } _schedules = schedules; if (includeTasksAndEventsAndHolidays) { _events = TasksOrEventsOnDay.Get(semesterItems.Items, date); _events.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(Events_CollectionChanged).Handler; } else { _events = new MyObservableList <BaseViewItemMegaItem>(); } if (includeTasksAndEventsAndHolidays) { _holidays = HolidaysOnDay.Create(semesterItems.Items, date); _holidays.CollectionChanged += new WeakEventHandler <NotifyCollectionChangedEventArgs>(_holidays_CollectionChanged).Handler; } else { _holidays = new MyObservableList <ViewItemHoliday>(); } Initialize(schedules, _events, _holidays); }