public void LoadModel(BasicSchedule schedule) { Type scheduleType = schedule.GetType(); dtpStartDate.Value = schedule.BeginTime; dtpStartTime.Value = schedule.BeginTime; if (schedule.RepeatPeriod.HasValue) { cbRepeat.Checked = true; mtbRepeatInterval.Text = schedule.RepeatPeriod.Value.ToString("hhmmss"); if (schedule.RepeatUntil.HasValue) { cbRepeatUntil.Checked = true; mtbRepeatUntil.Text = schedule.RepeatUntil.Value.ToString("hhmmss"); } } if (schedule.EndTime.HasValue) { cbUntil.Checked = true; dtpUntilDate.Value = schedule.EndTime.Value; dtpUntilTime.Value = schedule.EndTime.Value; } cbEnabled.Checked = schedule.Enabled; if (scheduleType == typeof(BasicSchedule)) { rbOneTime.Checked = true; } else if (scheduleType == typeof(DayRepeatSchedule)) { var daySchedule = schedule as DayRepeatSchedule; rbPerDay.Checked = true; nudDays.Value = daySchedule.RepeatPerDays; } else if (scheduleType == typeof(WeekRepeatSchedule)) { var weekSchedule = schedule as WeekRepeatSchedule; rbPerWeek.Checked = true; nudWeeks.Value = weekSchedule.RepeatPerWeeks; foreach (var day in weekSchedule.RepeatWeekDays) { clbWeekDays.SetItemChecked((int)day, true); } } else if (scheduleType == typeof(MonthRepeatSchedule)) { var monthSchedule = schedule as MonthRepeatSchedule; rbPerMonth.Checked = true; foreach (var index in monthSchedule.Months) { clbMonth.SetItemChecked(index, true); } if (clbMonth.CheckedItems.Count == clbMonth.Items.Count - 1) { clbMonth.SetItemChecked(0, true); } pwMonth_Closed(pwMonth, null); if (monthSchedule.Days != null) { rbDays.Checked = true; foreach (var index in monthSchedule.Days) { clbDays.SetItemChecked(index, true); } if (clbDays.CheckedItems.Count == clbDays.Items.Count - 1) { clbDays.SetItemChecked(0, true); } pwMonth_Closed(pwDays, null); } else { rbOn.Checked = true; foreach (var index in monthSchedule.WeekOrders) { clbOrder.SetItemChecked(index, true); } if (clbOrder.CheckedItems.Count == clbOrder.Items.Count - 1) { clbOrder.SetItemChecked(0, true); } foreach (var index in monthSchedule.WeekDays) { clbWeeks.SetItemChecked((int)index + 1, true); } if (clbWeeks.CheckedItems.Count == clbWeeks.Items.Count - 1) { clbWeeks.SetItemChecked(0, true); } pwMonth_Closed(pwOrder, null); pwMonth_Closed(pwWeeks, null); } } else { throw new ArgumentOutOfRangeException("未支持的计划类型"); } }
public void LoadModel(BasicSchedule schedule) { Type scheduleType = schedule.GetType(); StartAtDate = schedule.BeginTime; if (schedule.RepeatPeriod.HasValue) { RepeatSchedule = true; RepeatPeriod = schedule.RepeatPeriod.Value; if (schedule.RepeatUntil.HasValue) { RepeatUntil = true; RepeatUntilTime = schedule.RepeatUntil.Value; } } if (schedule.EndTime.HasValue) { HasEndTime = true; EndTime = schedule.EndTime.Value; } IsEnabled = schedule.Enabled; var weekdays = (WeekDay[])Window.AdvancedOptionsGroupBox.FindResource("WeekDays"); var months = (WitchMonth[])Window.AdvancedOptionsGroupBox.FindResource("Months"); var monthWeeks = (WitchWeek[])Window.AdvancedOptionsGroupBox.FindResource("MonthWeeks"); var monthDays = (MonthDay[])Window.AdvancedOptionsGroupBox.FindResource("MonthDays"); if (scheduleType == typeof(BasicSchedule)) { IsOnce = true; } else if (scheduleType == typeof(DayRepeatSchedule)) { var daySchedule = schedule as DayRepeatSchedule; IsEveryDay = true; EveryDayIntervalDays = daySchedule.RepeatPerDays; } else if (scheduleType == typeof(WeekRepeatSchedule)) { var weekSchedule = schedule as WeekRepeatSchedule; IsEveryWeek = true; EveryWeekIntervalWeeks = weekSchedule.RepeatPerWeeks; var weekDays = new List <WeekDay>(); foreach (var dayOfWeek in weekSchedule.RepeatWeekDays) { weekDays.Add(weekdays.First(wd => wd.DayOfWeek == dayOfWeek)); } EveryWeekWeekDays = new ObservableCollection <WeekDay>(weekDays); } else if (scheduleType == typeof(MonthRepeatSchedule)) { var monthSchedule = schedule as MonthRepeatSchedule; IsEveryMonth = true; var selectedMonths = new List <WitchMonth>(); foreach (var monthOrder in monthSchedule.Months) { selectedMonths.Add(months.First(m => m.Month == monthOrder)); } EveryMonthMonths = new ObservableCollection <WitchMonth>(selectedMonths); if (monthSchedule.Days != null) { EveryMonthDaySchedule = true; var selectedDays = new List <MonthDay>(); foreach (var day in monthSchedule.Days) { selectedDays.Add(monthDays.First(d => d.Day == day)); } EveryMonthDays = new ObservableCollection <MonthDay>(selectedDays); } else { EveryMonthWeekSchedule = true; var selectedWeeks = new List <WitchWeek>(); foreach (var weekOrder in monthSchedule.WeekOrders) { selectedWeeks.Add(monthWeeks.First(mw => mw.WeekNumber == weekOrder)); } EveryMonthWeeks = new ObservableCollection <WitchWeek>(selectedWeeks); var selectedWeekDays = new List <WeekDay>(); foreach (var dayOfWeek in monthSchedule.WeekDays) { selectedWeekDays.Add(weekdays.First(wd => wd.DayOfWeek == dayOfWeek)); } EveryMonthWeekDays = new ObservableCollection <WeekDay>(selectedWeekDays); } } else { throw new ArgumentOutOfRangeException("未支持的计划类型"); } }