Example #1
0
        private void Tree_NodePropertyChanged(MapNode node, NodePropertyChangedEventArgs e)
        {
            if (TaskTextChanged == null)
            {
                return;
            }

            if (e.ChangedProperty == NodeProperties.Text)
            {
                // update task title
                if (node.DueDateExists())
                {
                    TaskTextChanged(node, new TaskTextEventArgs()
                    {
                        ChangeType = TaskTextChange.TextChange, OldText = (string)e.OldValue
                    });
                }

                // update task parent
                if (node.HasChildren)
                {
                    foreach (MapNode n in this)
                    {
                        if (n.IsDescendent(node))
                        {
                            TaskTextChanged(n, new TaskTextEventArgs()
                            {
                                ChangeType = TaskTextChange.AncestorTextChange, ChangedAncestor = node, OldText = (string)e.OldValue
                            });
                        }
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Set Due Date for selected nodes of the active MapTree using DateTimePicker
        /// Should only update the model, all interested views should be updated through the event generated by the model.
        /// </summary>
        public void SetDueDateUsingPicker()
        {
            if (PluginManager.ActiveNodes.IsEmpty)
            {
                return;
            }

            //using (PluginManager.ActiveTree.ChangeManager.StartBatch("Add Task Due Date"))
            {
                DateTime value;

                // initialize date time picker
                MapNode temp = PluginManager.ActiveNodes.First();
                if (temp != null && temp.DueDateExists())
                {
                    value = ShowDueDatePicker(temp.GetDueDate());
                }
                else
                {
                    value = ShowDueDatePicker();
                }

                // show and set due dates
                if (value != DateTime.MinValue)
                {
                    foreach (MapNode node in PluginManager.ActiveNodes)
                    {
                        node.AddTask(value);
                    }
                }
            }
        }
Example #3
0
 /// <summary>
 /// Sets the date component of DueDate. Time component is set if it is empty, otherwise left unchanged.
 /// </summary>
 /// <param name="node"></param>
 /// <param name="dueDate"></param>
 private void SetDueDateKeepTimePart(MapNode node, DateTime dueDate)
 {
     if (node.DueDateExists())
     {
         dueDate = dueDate.Date.Add(node.GetDueDate().TimeOfDay);
     }
     node.AddTask(dueDate);
 }
Example #4
0
 /// <summary>
 /// End Date of the Task i.e. Due Date.  If due date doesn't exits, then completion date is returned
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public static DateTime GetEndDate(this MapNode node)
 {
     if (node.DueDateExists())
     {
         return(node.GetDueDate());
     }
     else if (node.CompletionDateExists())
     {
         return(node.GetCompletionDate());
     }
     else
     {
         return(DateTime.MinValue);
     }
 }
Example #5
0
        private PendingTaskEventArgs GetEventArgs(MapNode node, PendingTaskChange change, AttributeChangeEventArgs e)
        {
            pendingTaskArgs.TaskChange    = change;
            pendingTaskArgs.OldTaskStatus = (e.AttributeSpec.IsTaskStatus() && e.oldValue != null) ?
                                            (TaskStatus)Enum.Parse(typeof(TaskStatus), e.oldValue) : node.GetTaskStatus();
            if (e.AttributeSpec.IsDueDate())
            {
                pendingTaskArgs.OldDueDate = e.oldValue == null ? DateTime.MinValue : DateHelper.ToDateTime(e.oldValue);
            }
            else
            {
                pendingTaskArgs.OldDueDate = node.DueDateExists() ? node.GetDueDate() : DateTime.MinValue;
            }

            return(pendingTaskArgs);
        }
Example #6
0
        /// <summary>
        /// Should only update the model, all interested views should be updated through the event generated by the model.
        /// </summary>
        /// <param name="node"></param>
        private void SetDueDateUsingPicker(MapNode node)
        {
            // initialize date time picker
            if (node.DueDateExists())
            {
                dateTimePicker.Value = node.GetDueDate();
            }
            else
            {
                dateTimePicker.Value = DateHelper.GetDefaultDueDate();
            }

            // show and set due dates
            if (dateTimePicker.ShowDialog() == DialogResult.OK)
            {
                node.AddTask(dateTimePicker.Value);
            }
        }
Example #7
0
 public static bool IsTaskPending(this MapNode node)
 {
     return(node.DueDateExists() && !node.CompletionDateExists());
 }
Example #8
0
        private void Tree_AttributeChanged(MapNode node, AttributeChangeEventArgs e)
        {
            //// Task List Change
            // task added
            if (e.ChangeType == AttributeChange.Added && e.AttributeSpec.IsDueDate() && !node.IsTaskComplete())
            {
                Add(node);
                TaskChanged(node, GetEventArgs(node, PendingTaskChange.TaskAdded, e));
            }
            // task removed
            else if (e.ChangeType == AttributeChange.Removed && e.AttributeSpec.IsDueDate() && !node.IsTaskComplete())
            {
                if (Remove(node))
                {
                    TaskChanged(node, GetEventArgs(node, PendingTaskChange.TaskRemoved, e));
                }
            }
            // task completed
            else if (e.ChangeType == AttributeChange.Added && e.AttributeSpec.IsCompletionDate() && node.DueDateExists())
            {
                if (Remove(node))
                {
                    TaskChanged(node, GetEventArgs(node, PendingTaskChange.TaskCompleted, e));
                }
            }
            // task reopened
            else if (e.ChangeType == AttributeChange.Removed && e.AttributeSpec.IsCompletionDate() && node.DueDateExists())
            {
                Add(node);
                TaskChanged(node, GetEventArgs(node, PendingTaskChange.TaskReopened, e));
            }
            // task due date updated
            else if (e.ChangeType == AttributeChange.ValueUpdated && e.AttributeSpec.IsDueDate() && !node.IsTaskComplete())
            {
                Remove(node);
                Add(node);
                TaskChanged(node, GetEventArgs(node, PendingTaskChange.DueDateUpdated, e));
            }

            //// Task Property Change (which doesn't affect list)
            else if (PendingTaskPropertyChanged != null && e.AttributeSpec.IsStartDate() && node.IsTaskPending())
            {
                var args = new PendingTaskPropertyEventArgs()
                {
                    PropertyChanged = PendingTaskProperty.StartDate
                };
                if (!string.IsNullOrEmpty(e.oldValue))
                {
                    args.OldValue = DateHelper.ToDateTime(e.oldValue);
                }
                PendingTaskPropertyChanged(node, args);
            }
        }
Example #9
0
 public bool ShowIcon(MapNode node)
 {
     return(node.DueDateExists() && node.IsTaskPending());
 }