| [127] | 1 | using System; |
|---|
| 2 | using System.Collections.Generic; |
|---|
| 3 | using System.ComponentModel; |
|---|
| 4 | using System.Data; |
|---|
| 5 | using System.Drawing; |
|---|
| 6 | using System.Text; |
|---|
| 7 | using System.Windows.Forms; |
|---|
| 8 | |
|---|
| [155] | 9 | using System.Globalization; |
|---|
| [128] | 10 | using Eraser.Manager; |
|---|
| 11 | |
|---|
| [127] | 12 | namespace Eraser |
|---|
| 13 | { |
|---|
| 14 | public partial class TaskPropertiesForm : Form |
|---|
| 15 | { |
|---|
| 16 | public TaskPropertiesForm() |
|---|
| 17 | { |
|---|
| 18 | InitializeComponent(); |
|---|
| [155] | 19 | scheduleTime.CustomFormat = DateTimeFormatInfo.CurrentInfo.ShortTimePattern; |
|---|
| [133] | 20 | |
|---|
| 21 | //Set a default task type |
|---|
| [145] | 22 | typeImmediate.Checked = true; |
|---|
| [133] | 23 | scheduleDaily.Checked = true; |
|---|
| [127] | 24 | } |
|---|
| 25 | |
|---|
| [140] | 26 | /// <summary> |
|---|
| 27 | /// Sets or retrieves the task object to be edited or being edited. |
|---|
| 28 | /// </summary> |
|---|
| 29 | public Task Task |
|---|
| 30 | { |
|---|
| [145] | 31 | get { UpdateTaskFromUI(); return task; } |
|---|
| [140] | 32 | set { task = value; UpdateUIFromTask(); } |
|---|
| 33 | } |
|---|
| 34 | |
|---|
| [145] | 35 | private void UpdateTaskFromUI() |
|---|
| 36 | { |
|---|
| 37 | //Set the name of the task |
|---|
| 38 | task.Name = name.Text; |
|---|
| 39 | |
|---|
| 40 | //And the schedule, if selected. |
|---|
| 41 | if (typeImmediate.Checked) |
|---|
| 42 | { |
|---|
| 43 | task.Schedule = Schedule.RunNow; |
|---|
| 44 | } |
|---|
| 45 | else if (typeRestart.Checked) |
|---|
| 46 | { |
|---|
| 47 | task.Schedule = Schedule.RunOnRestart; |
|---|
| 48 | } |
|---|
| 49 | else if (typeRecurring.Checked) |
|---|
| 50 | { |
|---|
| [150] | 51 | RecurringSchedule schedule = new RecurringSchedule(); |
|---|
| 52 | task.Schedule = schedule; |
|---|
| [155] | 53 | schedule.ExecutionTime = new DateTime(0, 0, 1, scheduleTime.Value.Hour, |
|---|
| 54 | scheduleTime.Value.Minute, scheduleTime.Value.Second); |
|---|
| [145] | 55 | |
|---|
| [150] | 56 | if (scheduleDaily.Checked) |
|---|
| 57 | { |
|---|
| 58 | if (scheduleDailyByDay.Checked) |
|---|
| 59 | { |
|---|
| 60 | schedule.Type = RecurringSchedule.ScheduleUnit.DAILY; |
|---|
| 61 | schedule.Frequency = (uint)scheduleDailyByDayFreq.Value; |
|---|
| 62 | } |
|---|
| 63 | else |
|---|
| 64 | { |
|---|
| 65 | schedule.Type = RecurringSchedule.ScheduleUnit.WEEKDAYS; |
|---|
| 66 | } |
|---|
| 67 | } |
|---|
| 68 | else if (scheduleWeekly.Checked) |
|---|
| 69 | { |
|---|
| 70 | schedule.Type = RecurringSchedule.ScheduleUnit.WEEKLY; |
|---|
| 71 | schedule.Frequency = (uint)scheduleWeeklyFreq.Value; |
|---|
| 72 | RecurringSchedule.DaysOfWeek weeklySchedule = 0; |
|---|
| 73 | if (scheduleWeeklyMonday.Checked) |
|---|
| 74 | weeklySchedule |= RecurringSchedule.DaysOfWeek.MONDAY; |
|---|
| 75 | if (scheduleWeeklyTuesday.Checked) |
|---|
| 76 | weeklySchedule |= RecurringSchedule.DaysOfWeek.TUESDAY; |
|---|
| 77 | if (scheduleWeeklyWednesday.Checked) |
|---|
| 78 | weeklySchedule |= RecurringSchedule.DaysOfWeek.WEDNESDAY; |
|---|
| 79 | if (scheduleWeeklyThursday.Checked) |
|---|
| 80 | weeklySchedule |= RecurringSchedule.DaysOfWeek.THURSDAY; |
|---|
| 81 | if (scheduleWeeklyFriday.Checked) |
|---|
| 82 | weeklySchedule |= RecurringSchedule.DaysOfWeek.FRIDAY; |
|---|
| 83 | if (scheduleWeeklySaturday.Checked) |
|---|
| 84 | weeklySchedule |= RecurringSchedule.DaysOfWeek.SATURDAY; |
|---|
| 85 | if (scheduleWeeklySunday.Checked) |
|---|
| 86 | weeklySchedule |= RecurringSchedule.DaysOfWeek.SUNDAY; |
|---|
| 87 | schedule.WeeklySchedule = weeklySchedule; |
|---|
| 88 | } |
|---|
| 89 | else if (scheduleMonthly.Checked) |
|---|
| 90 | { |
|---|
| 91 | schedule.Type = RecurringSchedule.ScheduleUnit.MONTHLY; |
|---|
| 92 | schedule.Frequency = (uint)scheduleMonthlyFreq.Value; |
|---|
| 93 | schedule.MonthlySchedule = (uint)scheduleMonthlyDayNumber.Value; |
|---|
| 94 | } |
|---|
| 95 | else |
|---|
| 96 | throw new ArgumentOutOfRangeException("No such scheduling method"); |
|---|
| [145] | 97 | } |
|---|
| 98 | } |
|---|
| 99 | |
|---|
| [140] | 100 | private void UpdateUIFromTask() |
|---|
| 101 | { |
|---|
| 102 | throw new NotImplementedException("UpdateUIFromTask not implemented."); |
|---|
| 103 | } |
|---|
| 104 | |
|---|
| [127] | 105 | private void dataAdd_Click(object sender, EventArgs e) |
|---|
| 106 | { |
|---|
| 107 | using (TaskDataSelectionForm form = new TaskDataSelectionForm()) |
|---|
| 108 | { |
|---|
| 109 | if (form.ShowDialog() == DialogResult.OK) |
|---|
| 110 | { |
|---|
| [128] | 111 | Task.EraseTarget entry = form.GetTaskEntry(); |
|---|
| [140] | 112 | ListViewItem item = data.Items.Add(entry.UIText); |
|---|
| [139] | 113 | |
|---|
| [133] | 114 | item.SubItems.Add(entry.Method.Name); |
|---|
| [128] | 115 | task.Entries.Add(entry); |
|---|
| [139] | 116 | errorProvider.Clear(); |
|---|
| [127] | 117 | } |
|---|
| 118 | } |
|---|
| 119 | } |
|---|
| [128] | 120 | |
|---|
| [133] | 121 | private void taskType_CheckedChanged(object sender, EventArgs e) |
|---|
| 122 | { |
|---|
| 123 | scheduleTimeLbl.Enabled = scheduleTime.Enabled = schedulePattern.Enabled = |
|---|
| 124 | scheduleDaily.Enabled = scheduleWeekly.Enabled = |
|---|
| 125 | scheduleMonthly.Enabled = typeRecurring.Checked; |
|---|
| [145] | 126 | nonRecurringPanel.Visible = !typeRecurring.Checked; |
|---|
| [133] | 127 | |
|---|
| 128 | scheduleSpan_CheckedChanged(sender, e); |
|---|
| 129 | } |
|---|
| 130 | |
|---|
| 131 | private void scheduleSpan_CheckedChanged(object sender, EventArgs e) |
|---|
| 132 | { |
|---|
| 133 | scheduleDailyByDay.Enabled = scheduleDailyByDayLbl.Enabled = |
|---|
| 134 | scheduleDailyByWeekday.Enabled = scheduleDaily.Checked && |
|---|
| 135 | typeRecurring.Checked; |
|---|
| 136 | scheduleWeeklyLbl.Enabled = scheduleWeeklyFreq.Enabled = |
|---|
| 137 | scheduleWeeklyFreqLbl.Enabled = scheduleWeeklyMonday.Enabled = |
|---|
| 138 | scheduleWeeklyTuesday.Enabled = scheduleWeeklyWednesday.Enabled = |
|---|
| 139 | scheduleWeeklyThursday.Enabled = scheduleWeeklyFriday.Enabled = |
|---|
| 140 | scheduleWeeklySaturday.Enabled = scheduleWeeklySunday.Enabled = |
|---|
| 141 | scheduleWeekly.Checked && typeRecurring.Checked; |
|---|
| [150] | 142 | scheduleMonthlyLbl.Enabled = scheduleMonthlyDayNumber.Enabled = |
|---|
| 143 | scheduleMonthlyEveryLbl.Enabled = scheduleMonthlyFreq.Enabled = |
|---|
| 144 | scheduleMonthlyMonthLbl.Enabled = scheduleMonthly.Checked && |
|---|
| [133] | 145 | typeRecurring.Checked; |
|---|
| 146 | |
|---|
| 147 | scheduleDailySpan_CheckedChanged(sender, e); |
|---|
| 148 | } |
|---|
| 149 | |
|---|
| 150 | private void scheduleDailySpan_CheckedChanged(object sender, EventArgs e) |
|---|
| 151 | { |
|---|
| 152 | scheduleDailyByDayFreq.Enabled = scheduleDailyByDay.Checked && |
|---|
| 153 | scheduleDaily.Checked && typeRecurring.Checked; |
|---|
| 154 | } |
|---|
| 155 | |
|---|
| [139] | 156 | private void ok_Click(object sender, EventArgs e) |
|---|
| 157 | { |
|---|
| 158 | if (data.Items.Count == 0) |
|---|
| 159 | { |
|---|
| 160 | errorProvider.SetIconPadding(data, -16); |
|---|
| [156] | 161 | errorProvider.SetIconAlignment(data, ErrorIconAlignment.BottomRight); |
|---|
| [139] | 162 | errorProvider.SetError(data, "The task has no data to erase."); |
|---|
| [156] | 163 | container.SelectedIndex = 0; |
|---|
| [139] | 164 | return; |
|---|
| 165 | } |
|---|
| 166 | |
|---|
| 167 | errorProvider.Clear(); |
|---|
| 168 | |
|---|
| 169 | //Close the dialog |
|---|
| 170 | DialogResult = DialogResult.OK; |
|---|
| 171 | Close(); |
|---|
| 172 | } |
|---|
| 173 | |
|---|
| [128] | 174 | private Task task = new Task(); |
|---|
| [127] | 175 | } |
|---|
| 176 | } |
|---|