public BasicSchedule SaveSchedule() { BasicSchedule schedule = null; if (IsOnce) { schedule = new BasicSchedule(); } else if (IsEveryDay) { schedule = new DayRepeatSchedule(); var daySchedule = schedule as DayRepeatSchedule; daySchedule.RepeatPerDays = EveryDayIntervalDays; } else if (IsEveryWeek) { schedule = new WeekRepeatSchedule(); var weekSchedule = schedule as WeekRepeatSchedule; weekSchedule.RepeatPerWeeks = EveryWeekIntervalWeeks; weekSchedule.RepeatWeekDays = EveryWeekWeekDays.Select(wd => wd.DayOfWeek).ToArray(); } else if (IsEveryMonth) { schedule = new MonthRepeatSchedule(); var monthSchedule = schedule as MonthRepeatSchedule; monthSchedule.Months = EveryMonthMonths.Select(wm => wm.Month).ToArray(); if (EveryMonthDaySchedule) { monthSchedule.Days = EveryMonthDays.Select(md => md.Day).ToArray(); } else if (EveryMonthWeekSchedule) { monthSchedule.WeekOrders = EveryMonthWeeks.Select(ww => ww.WeekNumber).ToArray(); monthSchedule.WeekDays = EveryMonthWeekDays.Select(wd => wd.DayOfWeek).ToArray(); } } schedule.BeginTime = StartAtDate; if (RepeatSchedule) { schedule.RepeatPeriod = RepeatPeriod; if (RepeatUntil) { schedule.RepeatUntil = RepeatUntilTime; } } if (HasEndTime) { schedule.EndTime = EndTime; } schedule.Enabled = IsEnabled; return(schedule); }
private void addEnabledSchedule(BasicSchedule schedule) { if (schedule.Enabled) { schedule.DoWork -= schedule_DoWork; schedule.Finished -= schedule_Finished; schedule.DoWork += schedule_DoWork; schedule.Finished += schedule_Finished; enabledSchedules.Add(schedule); } }
public BasicSchedule ShowScheduleDialog(BasicSchedule basicSchedule) { ScheduleWindow window = new ScheduleWindow(); window.Owner = GetActiveWindow(); if (basicSchedule != null) { window.ViewModel.LoadModel(basicSchedule); } if (window.ShowDialog() == true) { return(window.ViewModel.SaveSchedule()); } else { return(null); } }
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 BasicSchedule SaveSchedule() { BasicSchedule schedule = null; if (rbOneTime.Checked) { schedule = new BasicSchedule(); } else if (rbPerDay.Checked) { schedule = new DayRepeatSchedule(); var daySchedule = schedule as DayRepeatSchedule; daySchedule.RepeatPerDays = getRepeatPerDays(); } else if (rbPerWeek.Checked) { schedule = new WeekRepeatSchedule(); var weekSchedule = schedule as WeekRepeatSchedule; weekSchedule.RepeatPerWeeks = getRepeatPerWeeks(); weekSchedule.RepeatWeekDays = getRepeatWeekDays(); } else if (rbPerMonth.Checked) { schedule = new MonthRepeatSchedule(); var monthSchedule = schedule as MonthRepeatSchedule; monthSchedule.Months = (from i in clbMonth.CheckedIndices.Cast <int>() where i > 0 select i).ToArray(); if (rbDays.Checked) { monthSchedule.Days = (from i in clbDays.CheckedIndices.Cast <int>() where i > 0 select i).ToArray(); } else if (rbOn.Checked) { monthSchedule.WeekOrders = (from i in clbOrder.CheckedIndices.Cast <int>() where i > 0 select i).ToArray(); monthSchedule.WeekDays = (from i in clbWeeks.CheckedIndices.Cast <int>() where i > 0 select(DayOfWeek)(i - 1)).ToArray(); } } schedule.BeginTime = getBeginTime(); if (cbRepeat.Checked) { schedule.RepeatPeriod = getRepeatPeriod(); if (cbRepeatUntil.Checked) { schedule.RepeatUntil = getRepeatUntil(); } } if (cbUntil.Checked) { schedule.EndTime = getEndTime(); } schedule.Enabled = getEnabled(); return(schedule); }
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("未支持的计划类型"); } }