public WeekControl(DayControl[] days) { InitializeComponent(); Dock = DockStyle.Top; Resize += OnResize; if (days.Length > 0) { _dayControls.AddRange(days); Controls.AddRange(days); _maxWeekDayIndex = _dayControls.Max(x => x.Day.WeekDayIndex); if (_maxWeekDayIndex < 7) { _footer = new WeekEmptySpaceControl(); Controls.Add(_footer); } _minWeekDayIndex = _dayControls.Min(x => x.Day.WeekDayIndex); if (_maxWeekDayIndex > 1) { _header = new WeekEmptySpaceControl(); Controls.Add(_header); } FitControls(); } }
public void AddDays(DayControl[][] weeks) { _weekControls.Clear(); foreach (var days in weeks) { var week = new WeekControl(days); _weekControls.Add(week); pnData.Controls.Add(week); week.BringToFront(); } HasData = true; }
private void LoadMonth(MonthControl month) { SelectionManager.ClearSelection(); CopyPasteManager.ResetCopy(); foreach (var existedMonth in xtraTabControl.TabPages.OfType <MonthControl>().ToList()) { existedMonth.RaiseEvents(false); } var calendarMonth = (CalendarMonth)month.Tag; if (!month.HasData) { var weeks = new List <DayControl[]>(); var datesByWeeks = Calendar.CalendarContent.GetDaysByWeek(calendarMonth.DaysRangeBegin, calendarMonth.DaysRangeEnd); foreach (var weekDays in datesByWeeks) { var week = new List <DayControl>(); foreach (var calendarDay in weekDays.Select(weekDay => Calendar.ActiveCalendarSection.Days.FirstOrDefault(x => x.Date.Equals(weekDay)))) { if (calendarDay != null) { var dayControl = new DayControl(calendarDay); dayControl.AllowToPasteNote = CopyPasteManager.SourceNote != null; dayControl.DaySelected += (sender, e) => { SelectionManager.SelectDay(e.SelectedDay.Day, e.ModifierKeys); CopyPasteManager.SetCopyDay(); }; dayControl.DayCopied += (sender, e) => CopyDay(); dayControl.DayPasted += (sender, e) => PasteDay(); dayControl.DayCloned += (sender, e) => CloneDay(); dayControl.DayDataDeleted += (sender, e) => { foreach (var day in SelectionManager.SelectedDays) { day.ClearData(); RefreshData(); } Calendar.SettingsNotSaved = true; Calendar.CalendarView.RefreshData(); Calendar.SlideInfo.LoadData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; dayControl.DataChanged += (sender, e) => { var day = sender as DayControl; if (day == null) { return; } Calendar.UpdateDataManagementAndOutputFunctions(); Calendar.SettingsNotSaved = true; }; dayControl.SelectionStateRequested += (sender, e) => SelectionManager.ProcessSelectionStateRequest(); dayControl.DayMouseMove += (sender, e) => { foreach (var day in _days) { if (day.Day.BelongsToSchedules && day.ClientRectangle.Contains(day.PointToClient(Cursor.Position)) && day.RaiseEvents) { SelectionManager.SelectDay(day.Day, Keys.Control); } } }; dayControl.NoteAdded += (sender, e) => { var noteDateRange = Calendar.CalendarContent .CalculateDateRange(SelectionManager.SelectedDays.Select(x => x.Date).ToArray()).LastOrDefault(); AddNote(noteDateRange); RefreshData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; dayControl.NotePasted += (sender, e) => { PasteNote(); RefreshData(); }; dayControl.ImageCopied += (sender, e) => CopyImage(); dayControl.ImagePasted += (sender, e) => { ImageSource imageSource = null; var clipboardImage = ClipboardHelper.GetPngFormClipboard(); if (clipboardImage != null) { imageSource = ImageSource.FromImage(clipboardImage); } else if (Clipboard.ContainsText(TextDataFormat.Html)) { var textContent = Clipboard.GetText(TextDataFormat.Html); try { imageSource = ImageSource.FromString(textContent); } catch { } } PasteImage(imageSource); }; dayControl.ImageDeleted += (sender, e) => { foreach (var day in SelectionManager.SelectedDays) { day.Logo = new ImageSource(); RefreshData(); } Calendar.SettingsNotSaved = true; Calendar.CalendarView.RefreshData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; SelectionManager.SelectionStateResponse += (sender, e) => dayControl.UpdateNoteMenuAccordingSelection(SelectionManager.SelectedDays.OrderBy(x => x.Date).ToList()); CopyPasteManager.CopyDaySet += (sender, e) => { dayControl.toolStripMenuItemCopy.Enabled = true; dayControl.toolStripMenuItemClone.Enabled = true; }; CopyPasteManager.CopyReset += (sender, e) => { dayControl.toolStripMenuItemCopy.Enabled = false; dayControl.toolStripMenuItemClone.Enabled = false; dayControl.ChangeCopySource(false); }; CopyPasteManager.PasteReset += (sender, e) => { dayControl.toolStripMenuItemPaste.Enabled = false; dayControl.AllowToPasteNote = false; }; CopyPasteManager.DayCopied += (sender, e) => { dayControl.toolStripMenuItemPaste.Enabled = true; dayControl.ChangeCopySource(dayControl.Day.Date.Equals(CopyPasteManager.SourceDay.Date)); }; CopyPasteManager.NoteCopied += (sender, e) => { dayControl.AllowToPasteNote = true; }; Calendar.AssignCloseActiveEditorsonOutSideClick(dayControl); week.Add(dayControl); _days.Add(dayControl); } Application.DoEvents(); } weeks.Add(week.ToArray()); Application.DoEvents(); } month.AddDays(weeks.ToArray()); month.AddNotes(GetNotesByWeeeks(calendarMonth)); } month.RefreshData(Calendar.GetColorSchema(calendarMonth.OutputData.SlideColor)); month.RaiseEvents(true); month.ResizeControls(); }
public SelectDayEventArgs(DayControl selectedDay, Keys modifierKeys) { SelectedDay = selectedDay; ModifierKeys = modifierKeys; }
public SelectDayEventArgs(DayControl selectedDay, Keys modifierKeys) { SelectedDay = selectedDay; ModifierKeys = modifierKeys; }
public void ChangeMonth(DateTime date) { MonthControl month = null; SelectionManager.ClearSelection(); pnMain.Controls.Clear(); CopyPasteManager.ResetCopy(); foreach (var existedMonth in Months.Values) existedMonth.RaiseEvents(false); var calendarMonth = Calendar.CalendarContent.Months.FirstOrDefault(x => x.Date.Equals(date)); if (calendarMonth == null) return; if (Months.ContainsKey(date)) { month = Months[date]; if (!month.HasData) { var weeks = new List<DayControl[]>(); var datesByWeeks = Calendar.CalendarContent.GetDaysByWeek(calendarMonth.DaysRangeBegin, calendarMonth.DaysRangeEnd); foreach (var weekDays in datesByWeeks) { var week = new List<DayControl>(); foreach (var calendarDay in weekDays.Select(weekDay => Calendar.CalendarContent.Days.FirstOrDefault(x => x.Date.Equals(weekDay)))) { if (calendarDay != null) { var dayControl = new DayControl(calendarDay); dayControl.AllowToPasteNote = CopyPasteManager.SourceNote != null; dayControl.DaySelected += (sender, e) => { SelectionManager.SelectDay(e.SelectedDay.Day, e.ModifierKeys); CopyPasteManager.SetCopyDay(); }; dayControl.DayCopied += (sender, e) => CopyDay(); dayControl.DayPasted += (sender, e) => PasteDay(); dayControl.DayCloned += (sender, e) => CloneDay(); dayControl.DayDataDeleted += (sender, e) => { foreach (var day in SelectionManager.SelectedDays) { day.ClearData(); RefreshData(); } Calendar.SettingsNotSaved = true; Calendar.CalendarView.RefreshData(); Calendar.SlideInfo.LoadData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; dayControl.DataChanged += (sender, e) => { var day = sender as DayControl; if (day == null) return; Calendar.UpdateDataManagementAndOutputFunctions(); Calendar.SettingsNotSaved = true; }; dayControl.SelectionStateRequested += (sender, e) => SelectionManager.ProcessSelectionStateRequest(); dayControl.DayMouseMove += (sender, e) => { foreach (var day in _days) if (day.Day.BelongsToSchedules && day.ClientRectangle.Contains(day.PointToClient(Cursor.Position)) && day.RaiseEvents) SelectionManager.SelectDay(day.Day, Keys.Control); }; dayControl.NoteAdded += (sender, e) => { var noteDateRange = Calendar.CalendarContent.CalculateDateRange(SelectionManager.SelectedDays.Select(x => x.Date).ToArray()).LastOrDefault(); AddNote(noteDateRange); RefreshData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; dayControl.NotePasted += (sender, e) => { PasteNote(); RefreshData(); }; dayControl.ImageCopied += (sender, e) => CopyImage(); dayControl.ImagePasted += (sender, e) => { ImageSource imageSource = null; var clipboardImage = ClipboardHelper.GetImageFormClipboard(); if (clipboardImage != null) imageSource = ImageSource.FromImage(clipboardImage); else if (Clipboard.ContainsText(TextDataFormat.Html)) { var textContent = Clipboard.GetText(TextDataFormat.Html); try { imageSource = ImageSource.FromString(textContent); } catch { } } PasteImage(imageSource); }; dayControl.ImageDeleted += (sender, e) => { foreach (var day in SelectionManager.SelectedDays) { day.Logo = new ImageSource(); RefreshData(); } Calendar.SettingsNotSaved = true; Calendar.CalendarView.RefreshData(); Calendar.UpdateDataManagementAndOutputFunctions(); }; SelectionManager.SelectionStateResponse += (sender, e) => dayControl.UpdateNoteMenuAccordingSelection(SelectionManager.SelectedDays.OrderBy(x => x.Date).ToList()); CopyPasteManager.CopyDaySet += (sender, e) => { dayControl.toolStripMenuItemCopy.Enabled = true; dayControl.toolStripMenuItemClone.Enabled = true; }; CopyPasteManager.CopyReset += (sender, e) => { dayControl.toolStripMenuItemCopy.Enabled = false; dayControl.toolStripMenuItemClone.Enabled = false; dayControl.ChangeCopySource(false); }; CopyPasteManager.PasteReset += (sender, e) => { dayControl.toolStripMenuItemPaste.Enabled = false; dayControl.AllowToPasteNote = false; }; CopyPasteManager.DayCopied += (sender, e) => { dayControl.toolStripMenuItemPaste.Enabled = true; dayControl.ChangeCopySource(dayControl.Day.Date.Equals(CopyPasteManager.SourceDay.Date)); }; CopyPasteManager.NoteCopied += (sender, e) => { dayControl.AllowToPasteNote = true; }; Calendar.AssignCloseActiveEditorsonOutSideClick(dayControl); week.Add(dayControl); _days.Add(dayControl); } Application.DoEvents(); } weeks.Add(week.ToArray()); Application.DoEvents(); } month.AddDays(weeks.ToArray()); month.AddNotes(GetNotesByWeeeks(calendarMonth)); } month.RefreshData(Calendar.GetColorSchema(calendarMonth.OutputData.SlideColor)); } if (month == null) return; if (!pnMain.Controls.Contains(month)) { pnMain.Controls.Add(month); } month.BringToFront(); month.RaiseEvents(true); }