public static Weekday GetNextRecurringWeekday(DayOfWeek targetWeekday, RecurringFrequencies rf) { if (rf == RecurringFrequencies.None) { return(Weekday.None); // Or throw exception? } byte nextRecurringWeekday = (byte)targetWeekday.ToCustomWeekday(); byte targetRF = (byte)rf; while (nextRecurringWeekday <= 0x80) // 0x80: Weekday.Unknown (exceeds the range of weekdays) { if ((nextRecurringWeekday & targetRF) == 0x00) { // Rotate left shift (size: 7-bit) nextRecurringWeekday = (byte)((nextRecurringWeekday << 1) | (nextRecurringWeekday >> 6)); continue; } else { break; } } return((Weekday)nextRecurringWeekday); }
private void ConvertRecurringFreqToBlocks(RecurringFrequencies rf) { byte temp = 0x1; byte brf = (byte)rf; foreach (CheckBox chkbox in gridRecurringDate.Children) { if ((temp & brf) == 1) { chkbox.IsChecked = true; } brf >>= 1; } }
private string RecurringFrequencyToString(RecurringFrequencies f) { string retval = ""; switch (f) { case RecurringFrequencies.Custom: retval = "Custom"; break; case RecurringFrequencies.Daily: retval = "Daily"; break; case RecurringFrequencies.EveryMonWedFri: retval = "Every Monday, Wednesday and Friday"; break; case RecurringFrequencies.EveryTueThurs: retval = "Every Tuesday and Thursday"; break; case RecurringFrequencies.EveryWeekday: retval = "Every Week Day (Mon - Fri)"; break; case RecurringFrequencies.EveryWeekend: retval = "Every Weekend (Sat & Sun)"; break; case RecurringFrequencies.Monthly: retval = "Every Month"; break; case RecurringFrequencies.None: retval = "None"; break; case RecurringFrequencies.Weekly: retval = "Every week"; break; case RecurringFrequencies.Yearly: retval = "Every year"; break; } return(retval); }
public static List <DateTime> FindAllRecurringDate(IEvent target, DateTime ViewingDate, CalendarViewingMode mode) { List <DateTime> result = new List <DateTime>(); DateTime rngb = DateTime.MinValue; // beginning of range DateTime rnge = DateTime.MinValue; // ending of range RecurringFrequencies rf = target.RecurringFrequency; switch (mode) { case CalendarViewingMode.Monthly: FindRangeOfMonth(ViewingDate, out rngb, out rnge); break; case CalendarViewingMode.Weekly: FindRangeOfWeek(ViewingDate, out rngb, out rnge); break; default: break; } // Target is not a recurring event if (target.RecurringFrequency == RecurringFrequencies.None) { if (target.OriginalBeginningTime > rngb && target.OriginalBeginningTime < rnge) { result.Add(target.OriginalBeginningTime); } return(result); } if (target.ThisDayForwardOnly && target.OriginalBeginningTime > rnge) { return(result); } DateTime iter = target.ThisDayForwardOnly ? ((target.OriginalBeginningTime > rngb) ? target.OriginalBeginningTime : rngb) : rngb; for (; iter < rnge; iter = iter.AddDays(1)) { if (((byte)iter.DayOfWeek.ToCustomWeekday() & (byte)rf) >= 1) { result.Add(iter); } } return(result); }
private RecurringFrequencies StringToRecurringFrequencies(string f) { RecurringFrequencies retval = RecurringFrequencies.None; if (f.Equals("Custom")) { retval = RecurringFrequencies.Custom; } if (f.Equals("Daily")) { retval = RecurringFrequencies.Daily; } if (f.Equals("Every Monday, Wednesday and Friday")) { retval = RecurringFrequencies.EveryMonWedFri; } if (f.Equals("Every Tuesday and Thursday")) { retval = RecurringFrequencies.EveryTueThurs; } if (f.Equals("Every Week Day (Mon - Fri)")) { retval = RecurringFrequencies.EveryWeekday; } if (f.Equals("Every Weekend (Sat & Sun)")) { retval = RecurringFrequencies.EveryWeekend; } if (f.Equals("Every Month")) { retval = RecurringFrequencies.Monthly; } if (f.Equals("Every week")) { retval = RecurringFrequencies.Weekly; } if (f.Equals("Every year")) { retval = RecurringFrequencies.Yearly; } if (f.Equals("None")) { retval = RecurringFrequencies.None; } return(retval); }
private string RecurringFrequencyToString(RecurringFrequencies f) { string retval = ""; switch (f) { case RecurringFrequencies.Custom: retval = "Custom"; break; case RecurringFrequencies.Daily: retval = "Daily"; break; case RecurringFrequencies.EveryMonWedFri: retval = "Every Monday, Wednesday and Friday"; break; case RecurringFrequencies.EveryTueThurs: retval = "Every Tuesday and Thursday"; break; case RecurringFrequencies.EveryWeekday: retval = "Every Week Day (Mon - Fri)"; break; case RecurringFrequencies.EveryWeekend: retval = "Every Weekend (Sat & Sun)"; break; case RecurringFrequencies.Monthly: retval = "Every Month"; break; case RecurringFrequencies.None: retval = "None"; break; case RecurringFrequencies.Weekly: retval = "Every week"; break; case RecurringFrequencies.Yearly: retval = "Every year"; break; } return retval; }
private void ParseEventSetting() { string eventName; int rank; DateTime beginningTime = DateTime.MinValue; Queue <DateTime> beginningTimeQueue = new Queue <DateTime>(); TimeSpan duration = TimeSpan.Zero; bool autoDelete = (chkAutoDelete.IsChecked == true) ? true : false; bool thisDayForwardOnly = (chkThisDayForwardOnly.IsChecked == true) ? true : false; // EventName if (reEscChars.IsMatch(txtEventName.Text)) { throw new Exception("Event name shoud not contain the following charaters: \\/:*?\"<>|"); } eventName = txtEventName.Text.TrimEnd(' '); if (eventName.Length == 0) { throw new Exception("Event name should not be space."); } // Rank if (!reDigitOnly.IsMatch(txtRank.Text)) { throw new Exception("Given value of \"Rank\" is invalid, it should contains digits only."); } rank = int.Parse(txtRank.Text); // Beginning time List <DateTime> dtList = new List <DateTime>(); dtList.Add(dateTimePicker.Value.Value); foreach (Grid gd in spTimePickerList.Children) { TimePicker tp = gd.FindChild <TimePicker>(); if (tp == null) { continue; } // Get time component only (although formate of timePicker has been set as `DateTimeFormat.LongTime`, // we still have to prevent illegal input) DateTime dt = dateTimePicker.Value.Value.Date; // get date only dtList.Add(dt.Add(tp.Value.Value.TimeOfDay)); } dtList.Sort(); foreach (DateTime dt in dtList) { beginningTimeQueue.Enqueue(dt); } // Duration if (chkSetDuration.IsChecked == true) { duration = timeSpanUpDown.Value.Value; } // Set recurring frequency RecurringFrequencies recurringFreq = 0; if (cmbRecurringFreq.SelectedItem.ToString() == RecurringFrequencies.Custom.ToString()) { recurringFreq = ConvertBlocksToRecurringFreq(); } else { recurringFreq = (RecurringFrequencies)cmbRecurringFreq.SelectedItem; } if (cmbTrackIndex.SelectedIndex == -1) { throw new Exception("No track is avalible in this playlist"); } MultiTriggerEvent evnt = new MultiTriggerEvent(beginningTimeQueue) { EventText = eventName, Rank = rank, Duration = duration, AutoDelete = autoDelete, ThisDayForwardOnly = thisDayForwardOnly, Enabled = true, // let user set this while creating event? RecurringFrequency = recurringFreq, IgnoreTimeComponent = true, ReadOnlyEvent = false }; evnt.ActionStartsEventArgs = new SchedulerEventArgs { PlaylistGUID = (cmbPlaylist.SelectedItem as Playlist).GUID, Command = PlaybackCommands.Play, Mode = (PlaybackMode)cmbPlaybackMode.SelectedItem, TrackIndex = (int)cmbTrackIndex.SelectedItem }; evnt.ActionEndsEventArgs = new SchedulerEventArgs { Command = PlaybackCommands.Stop }; if (WindowMode == DisplayMode.Create) { NewEventIsCreatedEvent(evnt); } else if (WindowMode == DisplayMode.Edit) { evnt.CloneTo(evntToBeUpdated); UpdateEvent(evntToBeUpdated); } }