private void setUpSchedule() { try { var temp = (PNNoteSchedule)_Schedule.Clone(); if ((ScheduleType)cboScheduleType.SelectedIndex == ScheduleType.None) { _Schedule = new PNNoteSchedule(); return; } _Schedule = new PNNoteSchedule { Type = (ScheduleType)cboScheduleType.SelectedIndex, RepeatCount = temp.RepeatCount, StopAfter = temp.StopAfter, Sound = temp.Sound, SoundInLoop = temp.SoundInLoop, Track = temp.Track, UseTts = temp.UseTts, ProgramToRunOnAlert = temp.ProgramToRunOnAlert, CloseOnNotification = temp.CloseOnNotification, TimeZone = (TimeZoneInfo)cboTimeZone.SelectedItem }; switch (_Schedule.Type) { case ScheduleType.Once: _Schedule.AlarmDate = dtpOnce.DateValue; break; case ScheduleType.After: _Schedule.StartFrom = optAfterExact.IsChecked != null && optAfterExact.IsChecked.Value ? ScheduleStart.ExactTime : ScheduleStart.ProgramStart; _Schedule.StartDate = dtpAfter.DateValue; _Schedule.AlarmAfter.Years = (int)updAfterYears.Value; _Schedule.AlarmAfter.Months = (int)updAfterMonths.Value; _Schedule.AlarmAfter.Weeks = (int)updAfterWeeks.Value; _Schedule.AlarmAfter.Days = (int)updAfterDays.Value; _Schedule.AlarmAfter.Hours = (int)updAfterHours.Value; _Schedule.AlarmAfter.Minutes = (int)updAfterMinutes.Value; _Schedule.AlarmAfter.Seconds = (int)updAfterSeconds.Value; break; case ScheduleType.EveryDay: _Schedule.AlarmDate = dtpEvery.DateValue; break; case ScheduleType.RepeatEvery: _Schedule.StartFrom = optRepeatExact.IsChecked != null && optRepeatExact.IsChecked.Value ? ScheduleStart.ExactTime : ScheduleStart.ProgramStart; _Schedule.StartDate = dtpRepeat.DateValue; _Schedule.AlarmAfter.Years = (int)updRepeatYears.Value; _Schedule.AlarmAfter.Months = (int)updRepeatMonths.Value; _Schedule.AlarmAfter.Weeks = (int)updRepeatWeeks.Value; _Schedule.AlarmAfter.Days = (int)updRepeatDays.Value; _Schedule.AlarmAfter.Hours = (int)updRepeatHours.Value; _Schedule.AlarmAfter.Minutes = (int)updRepeatMinutes.Value; _Schedule.AlarmAfter.Seconds = (int)updRepeatSeconds.Value; break; case ScheduleType.Weekly: _Schedule.Weekdays.Clear(); if (chkW0.IsChecked != null && chkW0.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW0.Tag); } if (chkW1.IsChecked != null && chkW1.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW1.Tag); } if (chkW2.IsChecked != null && chkW2.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW2.Tag); } if (chkW3.IsChecked != null && chkW3.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW3.Tag); } if (chkW4.IsChecked != null && chkW4.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW4.Tag); } if (chkW5.IsChecked != null && chkW5.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW5.Tag); } if (chkW6.IsChecked != null && chkW6.IsChecked.Value) { _Schedule.Weekdays.Add((DayOfWeek)chkW6.Tag); } _Schedule.AlarmDate = dtpWeekly.DateValue; _Schedule.StartDate = DateTime.Today; break; case ScheduleType.MonthlyExact: _Schedule.StartDate = DateTime.Today; _Schedule.AlarmDate = new DateTime(2000, 1, cboExactDate.SelectedIndex + 1, dtpMonthExact.DateValue.Hour, dtpMonthExact.DateValue.Minute, dtpMonthExact.DateValue.Second); break; case ScheduleType.MonthlyDayOfWeek: _Schedule.StartDate = DateTime.Today; _Schedule.AlarmDate = dtpDW.DateValue; _Schedule.MonthDay.OrdinalNumber = (DayOrdinal)(cboOrdinal.SelectedIndex + 1); var dwReal = cboDW.SelectedItem as DwReal; if (dwReal != null) { _Schedule.MonthDay.WeekDay = dwReal.DayW; } break; case ScheduleType.MultipleAlerts: foreach (var st in grdAlerts.Children.OfType <StackPanel>()) { var dtp = st.Children[1] as DateTimePicker; if (dtp == null) { continue; } var date = dtp.DateValue; if (_Schedule.MultiAlerts.All(a => a.Date != date)) { _Schedule.MultiAlerts.Add(new MultiAlert { Raised = dtp.IsBlackoutDate, Date = date }); } } break; } var prog = Convert.ToString(cboRunExternal.SelectedItem); var ext = PNStatic.Externals.FirstOrDefault(p => p.Name == prog); _Schedule.ProgramToRunOnAlert = ext == null ? "" : ext.Name; if (chkHideUntilAlert.IsChecked != null) { _Schedule.CloseOnNotification = chkHideUntilAlert.IsChecked.Value; } } catch (Exception ex) { PNStatic.LogException(ex); } }
internal string GetNoteScheduleDescription(PNNoteSchedule sc, DayOfWeekStruct[] days) { try { if (sc.Type == ScheduleType.None) { return(""); } CultureInfo ci = new CultureInfo(Instance.GetLanguageCulture()); string result = PNStatic.ScheduleDescriptions[sc.Type]; switch (sc.Type) { case ScheduleType.Once: result = result.Replace(PNStrings.PLACEHOLDER1, sc.AlarmDate.ToString(PNStatic.Settings.GeneralSettings.DateFormat, ci)); break; case ScheduleType.EveryDay: result = result.Replace(PNStrings.PLACEHOLDER1, sc.AlarmDate.ToString(PNStatic.Settings.GeneralSettings.TimeFormat, ci)); break; case ScheduleType.RepeatEvery: case ScheduleType.After: result = sc.AlarmAfter.Years > 0 ? result.Replace(PNStrings.YEARS, sc.AlarmAfter.Years.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterYears", "Years")) : result.Replace(PNStrings.YEARS, ""); result = sc.AlarmAfter.Months > 0 ? result.Replace(PNStrings.MONTHS, sc.AlarmAfter.Months.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterMonths", "Months")) : result.Replace(PNStrings.MONTHS, ""); result = sc.AlarmAfter.Weeks > 0 ? result.Replace(PNStrings.WEEKS, sc.AlarmAfter.Weeks.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterWeeks", "Weeks")) : result.Replace(PNStrings.WEEKS, ""); result = sc.AlarmAfter.Days > 0 ? result.Replace(PNStrings.DAYS, sc.AlarmAfter.Days.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterDays", "Days")) : result.Replace(PNStrings.DAYS, ""); result = sc.AlarmAfter.Hours > 0 ? result.Replace(PNStrings.HOURS, sc.AlarmAfter.Hours.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterHours", "Hours")) : result.Replace(PNStrings.HOURS, ""); result = sc.AlarmAfter.Minutes > 0 ? result.Replace(PNStrings.MINUTES, sc.AlarmAfter.Minutes.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterMinutes", "Minutes")) : result.Replace(PNStrings.MINUTES, ""); result = sc.AlarmAfter.Seconds > 0 ? result.Replace(PNStrings.SECONDS, sc.AlarmAfter.Seconds.ToString(CultureInfo.InvariantCulture) + " " + Instance.GetControlText("lblAfterSeconds", "Seconds")) : result.Replace(PNStrings.SECONDS, ""); result += " "; result += Instance.GetControlText("lblAfterStart", "Starting from:"); result += " "; if (sc.StartFrom == ScheduleStart.ExactTime) { result += Instance.GetControlText("optAfterExact", "Exact time"); result += " "; result += sc.StartDate.ToString(PNStatic.Settings.GeneralSettings.DateFormat, ci); } else { result += Instance.GetControlText("optAfterProgram", "Program start"); } break; case ScheduleType.Weekly: result += " "; foreach (DayOfWeek wd in sc.Weekdays) { result += days.FirstOrDefault(dw => dw.DayOfW == wd).Name; result += ", "; } if (result.EndsWith(", ")) { result = result.Substring(0, result.Length - 2); } result += " "; result += Instance.GetControlText("lblWeeklyAt", "At:"); result += " "; result += sc.AlarmDate.ToString(PNStatic.Settings.GeneralSettings.TimeFormat, ci); break; case ScheduleType.MonthlyExact: result = result.Replace(PNStrings.PLACEHOLDER1, sc.AlarmDate.Day.ToString(CultureInfo.InvariantCulture)); result = result.Replace(PNStrings.PLACEHOLDER2, sc.AlarmDate.ToString(PNStatic.Settings.GeneralSettings.TimeFormat, ci)); break; case ScheduleType.MonthlyDayOfWeek: result = result.Replace(PNStrings.PLACEHOLDER1, days.FirstOrDefault(wd => wd.DayOfW == sc.MonthDay.WeekDay).Name); result = result.Replace(PNStrings.PLACEHOLDER2, Instance.GetOrdinalName(sc.MonthDay.OrdinalNumber)); result = result.Replace(PNStrings.PLACEHOLDER3, sc.AlarmDate.ToString(PNStatic.Settings.GeneralSettings.TimeFormat, ci)); break; } return(result); } catch (Exception ex) { PNStatic.LogException(ex); return(""); } }