示例#1
0
        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);
        }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
            }
        }
示例#4
0
        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("未支持的计划类型");
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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("未支持的计划类型");
            }
        }