public Task AddTask(DraftTask task, IList <Color> colorOptions) { Util.RequireNotNull(task, "task"); var color = getNextColor(colorOptions); var folder = m_folderList.FirstOrDefault(f => f.Name.EasyEquals(task.FolderName)); if (folder == null) { if (Folder.IsValidFolderName(task.FolderName)) { AddFolder(folder = new Folder(task.FolderName, color)); } } var newTask = task.CloneWithFolder(folder); AddTask(newTask); return(newTask); }
public static DraftTask TryParse(string value, out string error) { Contract.Requires(null != value, "value"); var task = new DraftTask(); var tokens = tokenize(value); if (tokens.Count > 0 && tokens[0] is string) { var description = (string)tokens[0]; if (description != null) { Debug.Assert(description == description.Trim()); if (description.StartsWith(c_importantChar)) { task.IsImportant = true; description = description.Substring(c_importantChar.Length); } else if (description.EndsWith(c_importantChar)) { task.IsImportant = true; } } task.Description = description; } else { task.Description = null; } var markers = new Dictionary <TaskMarker, string>(); for (int i = 0; i < tokens.Count; i++) { if (tokens[i] is TaskMarker) { var marker = (TaskMarker)tokens[i]; var val = stringAtIndex(tokens, i + 1); if (markers.ContainsKey(marker)) { error = string.Format("Got many instances of {0}", marker); return(null); } else { markers.Add(marker, val); } } } if (markers.ContainsKey(TaskMarker.IN)) { task.FolderName = markers[TaskMarker.IN]; } if (markers.ContainsKey(TaskMarker.ON)) { var onString = markers[TaskMarker.ON]; Nullable <DateTime> onValue = DateParser.ParseDate(onString); task.Due = onValue; if (!onValue.HasValue) { error = string.Format("Could not parse '{0}'.", onString); return(null); } } error = null; return(task); }
public Task AddTask(DraftTask task, IList<Color> colorOptions) { Contract.Requires(null != task, "task"); var color = getNextColor(colorOptions); var folder = m_folderList.FirstOrDefault(f => f.Name.EasyEquals(task.FolderName)); if (folder == null) { if (Folder.IsValidFolderName(task.FolderName)) { AddFolder(folder = new Folder(task.FolderName, color)); } } var newTask = task.CloneWithFolder(folder); AddTask(newTask); return newTask; }
public EditTask() { m_task = new DraftTask(); m_task.PropertyChanged += task_propertyChanged; validateDescription(); }
public static object[] GetArray(DraftTask a) { return GetArray((BaseTask)a).Concat(new string[] { a.FolderName }).ToArray(); }
public static bool EditTaskEquals(DraftTask a, DraftTask b) { return ArraysEqual(GetArray(a), GetArray(b)); }
public static DraftTask TryParse(string value, out string error) { Contract.Requires(null != value, "value"); var task = new DraftTask(); var tokens = tokenize(value); if (tokens.Count > 0 && tokens[0] is string) { var description = (string)tokens[0]; if (description != null) { Debug.Assert(description == description.Trim()); if (description.StartsWith(c_importantChar)) { task.IsImportant = true; description = description.Substring(c_importantChar.Length); } else if (description.EndsWith(c_importantChar)) { task.IsImportant = true; } } task.Description = description; } else { task.Description = null; } var markers = new Dictionary<TaskMarker, string>(); for (int i = 0; i < tokens.Count; i++) { if (tokens[i] is TaskMarker) { var marker = (TaskMarker)tokens[i]; var val = stringAtIndex(tokens, i + 1); if (markers.ContainsKey(marker)) { error = string.Format("Got many instances of {0}", marker); return null; } else { markers.Add(marker, val); } } } if (markers.ContainsKey(TaskMarker.IN)) { task.FolderName = markers[TaskMarker.IN]; } if (markers.ContainsKey(TaskMarker.ON)) { var onString = markers[TaskMarker.ON]; Nullable<DateTime> onValue = DateParser.ParseDate(onString); task.Due = onValue; if (!onValue.HasValue) { error = string.Format("Could not parse '{0}'.", onString); return null; } } error = null; return task; }