public void SetTasksForDate(string date) { if (!TaskCalendar.ContainsKey(date)) { TaskCalendar.Add(date, new ObservableCollection <Task>()); } Tasks = TaskCalendar[date]; }
public DueDateColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString("Due Date"), Sizing = TreeViewColumnSizing.Fixed, Alignment = 0f, FixedWidth = 90, Resizable = false, Clickable = true }; var dueDateStore = new ListStore(typeof(string)); var today = DateTime.Now; dueDateStore.AppendValues( today.ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Today")); dueDateStore.AppendValues( today.AddDays(1).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Tomorrow")); dueDateStore.AppendValues( today.AddDays(2).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(3).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(4).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(5).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(6).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(7).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("In 1 Week")); dueDateStore.AppendValues(Catalog.GetString("No Date")); dueDateStore.AppendValues(Catalog.GetString("Choose Date...")); var renderer = new CellRendererCombo { Editable = true, HasEntry = false, Model = dueDateStore, TextColumn = 0, Xalign = 0.0f }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (!model.GetIter(out iter, path)) { return; } var task = model.GetValue(iter, 0) as ITask; if (task == null) { return; } taskBeingEdited = new TaskBeingEdited(task, iter, path); if (CellEditingStarted != null) { CellEditingStarted(this, new TaskRowEditingEventArgs(task, iter, path)); } }; renderer.EditingCanceled += delegate { EndCellEditing(); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); var newText = args.NewText; if (newText != null && model.GetIter(out iter, path)) { // 2/11 - Today // 2/12 - Tomorrow // 2/13 - Wed // 2/14 - Thu // 2/15 - Fri // 2/16 - Sat // 2/17 - Sun // -------------- // 2/18 - In 1 Week // -------------- // No Date // --------------- // Choose Date... var newDate = DateTime.MinValue; var tday = DateTime.Now; var task = model.GetValue(iter, 0) as ITask; if (newText == tday.ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Today")) { newDate = tday; } else if (newText == tday.AddDays(1).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Tomorrow")) { newDate = tday.AddDays(1); } else if (newText == Catalog.GetString("No Date")) { newDate = DateTime.MinValue; } else if (newText == tday.AddDays(7).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("In 1 Week")) { newDate = tday.AddDays(7); } else if (newText == Catalog.GetString("Choose Date...")) { var tc = new TaskCalendar(task, view.TreeView.Parent); tc.ShowCalendar(); return; } else { for (int i = 2; i <= 6; i++) { DateTime testDate = tday.AddDays(i); if (testDate.ToString(Catalog.GetString("M/d - ddd")) == newText) { newDate = testDate; break; } } } Logger.Debug("task.State {0}", task.State); if (task.State != TaskState.Completed) { // Modify the due date task.DueDate = newDate; } } EndCellEditing(); }; TreeViewColumn.PackStart(renderer, true); TreeViewColumn.SetCellDataFunc(renderer, DueDateCellDataFunc); }