private bool ProcessTaskUpdate(Task task, UIExtension.UpdateType type) { if (!task.IsValid()) { return(false); } CalendarItem item; UInt32 taskID = task.GetID(); if (m_Items.TryGetValue(taskID, out item)) { item.UpdateTaskAttributes(task, type, false); } else { item = new CalendarItem(); item.UpdateTaskAttributes(task, type, true); } m_Items[taskID] = item; // Process children Task subtask = task.GetFirstSubtask(); while (subtask.IsValid() && ProcessTaskUpdate(subtask, type)) { subtask = subtask.GetNextTask(); } return(true); }