internal override RadRect ArrangeOverride(RadRect rect) { this.layoutSlot = rect; this.dayViewLayoutSlot = this.UpdateAnimatableContentClip(rect); double cellContentWidth = this.dayViewLayoutSlot.Width / this.ColumnCount * this.BufferItemsCount * 2; this.timeRulerWidth = this.dayViewLayoutSlot.X; this.dayViewLayoutSlot.Width += cellContentWidth; this.Calendar.AnimatableContentClip = this.dayViewLayoutSlot; if (this.CalendarCells == null || this.CalendarCells.Count == 0) { this.updateFlag = MultiDayViewUpdateFlag.All; } if (this.updateFlag == MultiDayViewUpdateFlag.All) { this.ArrangeCalendarDecorations(this.dayViewLayoutSlot); this.ArrangeCalendarContent(this.dayViewLayoutSlot); this.ArrangeCalendarHeaders(this.dayViewLayoutSlot); } rect.Width += cellContentWidth; this.ArrangeCalendarTimerRuler(rect); if (this.updateFlag != MultiDayViewUpdateFlag.AffectsCurrentTimeIndicator) { this.ArrangeMultiDayViewCalendarDecorations(this.dayViewLayoutSlot); } return(rect); }
internal void Invalidate(MultiDayViewUpdateFlag flag) { RadCalendar calendar = this.owner; if (calendar != null && calendar.IsTemplateApplied && calendar.Model.IsTreeLoaded) { if (calendar.IsLoaded) { CalendarMultiDayViewModel multiDayViewModel = this.owner.Model.multiDayViewModel; if (flag == MultiDayViewUpdateFlag.All) { multiDayViewModel.CalendarCells?.Clear(); multiDayViewModel.CalendarHeaderCells?.Clear(); multiDayViewModel.CalendarDecorations?.Clear(); multiDayViewModel.allDayAppointmentInfos?.Clear(); multiDayViewModel.appointmentInfos?.Clear(); calendar.allDayAreaLayer?.ClearRealizedAppointmentVisuals(); calendar.timeRulerLayer?.ClearRealizedAppointmentVisuals(); calendar.contentLayer?.RecycleAllVisuals(); } if (flag == MultiDayViewUpdateFlag.AffectsTimeRuler) { this.RecycleTimeRulerVisuals(); multiDayViewModel.timeRulerItems?.Clear(); multiDayViewModel.timerRulerLines?.Clear(); multiDayViewModel.appointmentInfos?.Clear(); } if (flag == MultiDayViewUpdateFlag.AffectsAppointments) { multiDayViewModel.appointmentInfos?.Clear(); multiDayViewModel.allDayAppointmentInfos?.Clear(); calendar.allDayAreaLayer?.ClearRealizedAppointmentVisuals(); calendar.timeRulerLayer?.ClearRealizedAppointmentVisuals(); } if (flag == MultiDayViewUpdateFlag.AffectsSpecialSlots) { multiDayViewModel.specialSlots?.Clear(); calendar.timeRulerLayer?.ClearRealizedSlotVisuals(); } calendar.Model.multiDayViewModel.updateFlag = flag; calendar.timeRulerLayer.shouldArrange = true; calendar.allDayAreaLayer.shouldArrange = true; } calendar.Invalidate(); } }
private void UpdateAppearance(MultiDayViewUpdateFlag flag) { RadCalendar calendar = this.owner; if (calendar != null && calendar.IsTemplateApplied && calendar.Model.IsTreeLoaded) { if (calendar.IsLoaded) { if (flag == MultiDayViewUpdateFlag.AffectsAppointments) { XamlAllDayAreaLayer allDayArea = this.owner.allDayAreaLayer; allDayArea.UpdatePanelBackground(this.AllDayAreaBackground); } if (flag == MultiDayViewUpdateFlag.AffectsTimeRuler) { XamlMultiDayViewLayer timeRulerArea = this.owner.timeRulerLayer; timeRulerArea.UpdatePanelsBackground(this.TimelineBackground); } } } }