Esempio n. 1
0
        private bool PrepareTaskNotify(CalendarItem item, Calendar.SelectionTool.Mode mode, UIExtension.ParentNotify notify, bool includeTimeEstimate = true)
        {
            switch (mode)
            {
            case Calendar.SelectionTool.Mode.Move:
                if (item.LengthDiffersFromOriginal())
                {
                    // Start date WITHOUT TIME ESTIMATE
                    PrepareTaskNotify(item, Calendar.SelectionTool.Mode.ResizeLeft, notify, false);

                    // End date WITHOUT TIME ESTIMATE
                    PrepareTaskNotify(item, Calendar.SelectionTool.Mode.ResizeRight, notify, false);

                    if (includeTimeEstimate && WantModifyTimeEstimate(item))
                    {
                        notify.AddMod(Task.Attribute.TimeEstimate, item.LengthAsTimeEstimate(m_WorkWeek, false), item.TimeEstUnits);
                    }

                    return(true);
                }
                else if (item.StartDateDiffersFromOriginal())
                {
                    notify.AddMod(Task.Attribute.OffsetTask, item.StartDate);

                    return(true);
                }
                break;

            case Calendar.SelectionTool.Mode.ResizeLeft:
            case Calendar.SelectionTool.Mode.ResizeTop:
                if (item.StartDateDiffersFromOriginal())
                {
                    notify.AddMod(Task.Attribute.StartDate, item.StartDate);

                    if (includeTimeEstimate && WantModifyTimeEstimate(item))
                    {
                        notify.AddMod(Task.Attribute.TimeEstimate, item.LengthAsTimeEstimate(m_WorkWeek, false), item.TimeEstUnits);
                    }

                    return(true);
                }
                break;

            case Calendar.SelectionTool.Mode.ResizeRight:
            case Calendar.SelectionTool.Mode.ResizeBottom:
                if (item.EndDateDiffersFromOriginal())
                {
                    // Allow for end of day
                    var endDate = item.EndDate;

                    if (endDate == endDate.Date)
                    {
                        endDate = endDate.AddDays(-1);
                    }

                    if (item.IsDone)
                    {
                        notify.AddMod(Task.Attribute.DoneDate, endDate);
                    }
                    else
                    {
                        notify.AddMod(Task.Attribute.DueDate, endDate);
                    }

                    if (includeTimeEstimate && WantModifyTimeEstimate(item))
                    {
                        notify.AddMod(Task.Attribute.TimeEstimate, item.LengthAsTimeEstimate(m_WorkWeek, false), item.TimeEstUnits);
                    }

                    return(true);
                }
                break;
            }

            return(false);
        }