internal static int CompareSubtasks(Subtask x, Subtask y) { if (x.Priority < y.Priority) { return -1; } else if (x.Priority > y.Priority) { return 1; } return 0; }
private List<Subtask> Subtasks() { List<Subtask> subtasks = new List<Subtask>(); TreeIter iter; bool valid = subtaskList.GetIterFirst(out iter); int priority = 0; while (valid) { int id = Convert.ToInt32((string) subtaskList.GetValue(iter, 3)); Subtask subtask = task.FindSubtask(id); bool formFinished = (bool) subtaskList.GetValue(iter, 0); DateTime date = DateTime.MinValue; if (subtask != null) if (subtask.Finished != DateTime.MinValue && formFinished) date = subtask.Finished; else if (subtask.Finished == DateTime.MinValue && !formFinished) date = DateTime.MinValue; else if (subtask.Finished != DateTime.MinValue && !formFinished) date = DateTime.MinValue; else if (formFinished) date = DateTime.Now; Subtask newsubtask = new Subtask(id, (string) subtaskList.GetValue(iter, 1), date, priority); try { // Bail out if the current subtask has no Worked foreach (DateTime time in subtask.Worked) { newsubtask.Worked.Add(time); } } catch {} if ((bool) subtaskList.GetValue(iter, 2) && !newsubtask.IsWorked(DateTime.Now)) { newsubtask.Worked.Add(DateTime.Now); } subtasks.Add(newsubtask); priority++; valid = subtaskList.IterNext(ref iter); } return subtasks; }