protected override void UpdateDisplayValue() { string pattern = this.Rate == 1 ? StringResources.CustomFrequency_Each : StringResources.CustomFrequency_Every; string scale = string.Empty; switch (this.Scale) { case CustomFrequencyScale.Day: scale = this.Rate == 1 ? StringResources.CustomFrequency_Day : StringResources.CustomFrequency_Days; break; case CustomFrequencyScale.Week: scale = this.Rate == 1 ? StringResources.CustomFrequency_Week : StringResources.CustomFrequency_Weeks; break; case CustomFrequencyScale.Month: scale = this.Rate == 1 ? StringResources.CustomFrequency_Month : StringResources.CustomFrequency_Months; break; case CustomFrequencyScale.Year: scale = this.Rate == 1 ? StringResources.CustomFrequency_Year : StringResources.CustomFrequency_Years; break; } this.displayValue = string.Format(pattern, (this.Rate == 1 ? string.Empty : this.Rate + " ") + scale); this.invalidateDisplayValue = false; }
protected override void ParseValue(string value) { if (String.IsNullOrEmpty(value)) { // Should occur only at initialization this.rate = 1; this.scale = CustomFrequencyScale.Day; } else { string[] values = value.Split(valueSeparator); if (values.Length != 2) { throw new ArgumentException("Invalid value", "value"); } if (!int.TryParse(values[0], out this.rate)) { throw new ArgumentException("Invalid rate value", "value"); } try { int scaleInt; if (!int.TryParse(values[1], out scaleInt)) { throw new ArgumentException("Invalid scale value", "value"); } this.scale = (CustomFrequencyScale)scaleInt; } catch (InvalidCastException) { throw new ArgumentException("Invalid scale value", "value"); } } this.invalidateDisplayValue = true; }
private async Task Basic_recurrence(FrequencyType frequencyType, CustomFrequencyScale scale = CustomFrequencyScale.Day, int rate = 0, bool useFixedDate = true) { var folder = this.CreateFolder("folder"); var task = this.CreateTask("task", folder); task.Due = DateSunday17Aug; task.FrequencyType = frequencyType; task.UseFixedDate = useFixedDate; switch (frequencyType) { case FrequencyType.Daily: task.CustomFrequency = new DailyFrequency(); break; case FrequencyType.Weekly: task.CustomFrequency = new WeeklyFrequency(); break; case FrequencyType.Monthly: task.CustomFrequency = new MonthlyFrequency(); break; case FrequencyType.Yearly: task.CustomFrequency = new YearlyFrequency(); break; case FrequencyType.DaysOfWeek: task.CustomFrequency = new DaysOfWeekFrequency { IsSunday = true, IsWednesday = true }; break; case FrequencyType.OnXDayOfEachMonth: task.CustomFrequency = new OnXDayFrequency { DayOfWeek = DayOfWeek.Sunday, RankingPosition = RankingPosition.Third }; break; case FrequencyType.EveryXPeriod: task.CustomFrequency = new EveryXPeriodFrequency { Scale = scale, Rate = rate }; break; default: throw new ArgumentOutOfRangeException("frequencyType"); } await this.SyncFull(); AssertEx.ContainsTasks(this.Workbook, "task"); AssertEx.IsDue(this.Workbook, 0, task.Due); AssertEx.IsRecurringLike(task, this.Workbook.Tasks[0]); Assert.AreEqual(task.UseFixedDate, this.Workbook.Tasks[0].UseFixedDate); }
private static ICustomFrequency Get2DayEveryPeriodFrequency(string toodleDoFrequency) { Regex regex = new Regex(ToodleDoConstants.RecurrencyToodleDoEveryPeriodRegex, RegexOptions.IgnoreCase); Match match = regex.Match(toodleDoFrequency); if (match == null || !match.Success) { return(null); } int rate = int.Parse(match.Groups["Rate"].Value); string scaleString = match.Groups["Scale"].Value; CustomFrequencyScale scale = GetFrequencyScaleFromString(scaleString); if (scale == CustomFrequencyScale.None) { return(null); } if (rate <= 1) { // We've got a standard frequency switch (scale) { case CustomFrequencyScale.Day: return(new DailyFrequency()); case CustomFrequencyScale.Week: return(new WeeklyFrequency()); case CustomFrequencyScale.Month: return(new MonthlyFrequency()); case CustomFrequencyScale.Year: return(new YearlyFrequency()); default: return(null); } } else { EveryXPeriodFrequency frequency = new EveryXPeriodFrequency(); frequency.Rate = rate; frequency.Scale = scale; return(frequency); } }