/// <summary>
        /// Initalises a new instance of the TaskActivityEventArgs with a TaskActivity and an effective date.
        /// </summary>
        /// <param name="activity"></param>
        /// <param name="effectiveDate"></param>
        public TaskActivityEventArgs(TaskActivity activity, DateTime effectiveDate)
        {
            if (activity == null)
            {
                throw new InvalidOperationException(Resources.ActivityCannotBeSetToNull);
            }

            _activity = activity;
            _effectiveDate = effectiveDate;
        }
Exemple #2
0
        /// <summary>
        /// Show the current active task in a boaloon tip
        /// </summary>
        private void ShowCurrentStatus()
        {
            TaskActivity current = Engine.CurrentActivity;
            string       message;

            if ((current.IsNotEmpty()) && (current.TaskDescription.IsNotEmpty()))
            {
                message = current.ToSummaryString();
            }
            else
            {
                message = @"The TaskClerk system is ready and idle.
There is currently no Task Activity running.
Use the help to discover how you can start and stop Tasks.";
            }
            Engine.UIProvider.ShowNagMessage(message);
        }
Exemple #3
0
        /// <summary>
        /// updates the notify icons tool tip.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="BritishMicro.TaskClerk.TaskActivityEventArgs"/> instance containing the event data.</param>
        void UpdateNotifyToolTip(object sender, TaskActivityEventArgs e)
        {
            TaskActivity current = e.TaskActivity;

            if (current.IsNotEmpty() && !current.TaskDescription.IsEvent)
            {
                if (current.TaskDescription.IsNotEmpty() & current.TaskDescription.IsEvent == false)
                {
                    int    MAXSIZEOFNOTIFYTEXT = 63;
                    string notifyToolTip       =
                        string.Format(CultureInfo.CurrentCulture,
                                      "{0}:{1}", Resources.NotifyToolTip, current.TaskDescription.Name);
                    notifyToolTip = notifyToolTip.Substring(
                        0,
                        (notifyToolTip.Length <= MAXSIZEOFNOTIFYTEXT ? notifyToolTip.Length : MAXSIZEOFNOTIFYTEXT));
                    notifyIcon.Text = notifyToolTip;
                }
            }
            else
            {
                notifyIcon.Text = Resources.NotifyToolTip;
            }
        }
        /// <summary>
        /// Reverse Compares the tasks on task description.
        /// </summary>
        /// <param name="taskActivityA">The task activity A.</param>
        /// <param name="taskActivityB">The task activity B.</param>
        /// <returns></returns>
        public static int ReverseCompareTasksOnTaskName(TaskActivity taskActivityA, TaskActivity taskActivityB)
        {
            if (taskActivityA == null)
            {
                throw new ArgumentNullException("taskActivityA");
            }
            if (taskActivityB == null)
            {
                throw new ArgumentNullException("taskActivityB");
            }
            if ((taskActivityA.TaskDescription.Name == null) || (taskActivityB.TaskDescription.Name == null))
            {
                return 0;
            }

            return taskActivityB.TaskDescription.Name.CompareTo(taskActivityA.TaskDescription.Name);
        }
        /// <summary>
        /// Reverse Compares the tasks on start date.
        /// </summary>
        /// <param name="taskActivityA">The task activity A.</param>
        /// <param name="taskActivityB">The task activity B.</param>
        /// <returns></returns>
        public static int ReverseCompareTasksOnStartDate(TaskActivity taskActivityA, TaskActivity taskActivityB)
        {
            if (taskActivityA == null)
            {
                throw new ArgumentNullException("taskActivityA");
            }
            if (taskActivityB == null)
            {
                throw new ArgumentNullException("taskActivityB");
            }

            return taskActivityB.StartDate.CompareTo(taskActivityA.StartDate);
        }
 /// <summary>
 /// Reverse Compares the tasks on duration.
 /// </summary>
 /// <param name="taskActivityA">The task activity A.</param>
 /// <param name="taskActivityB">The task activity B.</param>
 /// <returns></returns>
 public static int ReverseCompareTasksOnDuration(TaskActivity taskActivityA, TaskActivity taskActivityB)
 {
     return -CompareTasksOnDuration(taskActivityB, taskActivityA);
 }
        /// <summary>
        /// Merges the specified task activity into A.
        /// </summary>
        /// <param name="taskActivityA">The task activity A.</param>
        /// <param name="taskActivityB">The task activity B.</param>
        public static void Merge(TaskActivity taskActivityA, TaskActivity taskActivityB)
        {
            if (taskActivityA == null)
            {
                throw new ArgumentNullException("taskActivityA");
            }
            if (taskActivityB == null)
            {
                throw new ArgumentNullException("taskActivityB");
            }

            if ((taskActivityA.TaskDescription.IsEvent) ||
                (taskActivityB.TaskDescription.IsEvent))
            {
                throw new InvalidOperationException(Resources.CannotMergeEvents);
            }
            else
            {
                taskActivityA.EndDate = taskActivityB.EndDate;
            }
        }
        /// <summary>
        /// Compares the tasks on duration.
        /// </summary>
        /// <param name="taskActivityA">The task activity A.</param>
        /// <param name="taskActivityB">The task activity B.</param>
        /// <returns></returns>
        public static int CompareTasksOnDuration(TaskActivity taskActivityA, TaskActivity taskActivityB)
        {
            if (taskActivityA == null)
            {
                throw new ArgumentNullException("taskActivityA");
            }
            if (taskActivityB == null)
            {
                throw new ArgumentNullException("taskActivityB");
            }

            return taskActivityA.Duration.CompareTo(taskActivityB.Duration);
        }
        /// <summary>
        /// Aligns the end to start.
        /// </summary>
        /// <param name="taskActivityA">The task activity A.</param>
        /// <param name="taskActivityB">The task activity B.</param>
        public static void AlignEndToStart(TaskActivity taskActivityA, TaskActivity taskActivityB)
        {
            if (taskActivityA == null)
            {
                throw new ArgumentNullException("taskActivityA");
            }
            if (taskActivityB == null)
            {
                throw new ArgumentNullException("taskActivityB");
            }

            taskActivityA.EndDate = taskActivityB.StartDate.AddSeconds(-1);
        }
        /// <summary>
        /// Draws the task activity.
        /// </summary>
        /// <param name="e">The <see cref="System.Drawing.Printing.PrintPageEventArgs"/> instance containing the event data.</param>
        /// <param name="taRect">The ta rect.</param>
        /// <param name="taskActivity">The task activity.</param>
        private void DrawTaskActivity(System.Drawing.Printing.PrintPageEventArgs e, Rectangle taRect, TaskActivity taskActivity)
        {
            #if DEBUG
            //debug
            //e.Graphics.DrawRectangle(new Pen(SystemBrushes.ControlLight), taRect);
            #endif
            e.Graphics.DrawLine(new Pen(SystemBrushes.ControlLight),
                taRect.X, taRect.Bottom,
                taRect.X + taRect.Width, taRect.Bottom);

            e.Graphics.DrawString(taskActivity.TaskDescription.Name, SystemFonts.DefaultFont, SystemBrushes.ControlDark, taRect);
            SizeF size = e.Graphics.MeasureString(taskActivity.Duration.ToString(), SystemFonts.DefaultFont);
            e.Graphics.DrawString(taskActivity.Duration.ToString(), SystemFonts.DefaultFont, SystemBrushes.ControlDark, taRect.X + taRect.Width - size.Width, taRect.Top);
            _totalDuration += taskActivity.Duration;
        }
        /// <summary>
        /// Draws the task activity.
        /// </summary>
        /// <param name="e">The <see cref="System.Drawing.Printing.PrintPageEventArgs"/> instance containing the event data.</param>
        /// <param name="taRect">The ta rect.</param>
        /// <param name="taskActivity">The task activity.</param>
        private void DrawTaskActivity(System.Drawing.Printing.PrintPageEventArgs e, Rectangle taRect, TaskActivity taskActivity)
        {
#if DEBUG
            //debug
            //e.Graphics.DrawRectangle(new Pen(SystemBrushes.ControlLight), taRect);
#endif

            e.Graphics.DrawLine(new Pen(SystemBrushes.ControlLight),
                                taRect.X, taRect.Bottom,
                                taRect.X + taRect.Width, taRect.Bottom);

            e.Graphics.DrawString(taskActivity.TaskDescription.Name, Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(250, 0);
            e.Graphics.DrawString(taskActivity.StartDate.ToString("f"), Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(0, _fontHeight);
            e.Graphics.DrawString(taskActivity.EndDate.ToString("f"), Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(150, 0);
            Rectangle durRect = taRect;
            durRect.Width = 80;
            SizeF size = e.Graphics.MeasureString(taskActivity.Duration.ToString(), Font);
            e.Graphics.DrawString(taskActivity.Duration.ToString(), Font, SystemBrushes.ControlDark, durRect.Right - size.Width, durRect.Top);
            _totalDuration += taskActivity.Duration;
            taRect.Offset(100, 0);
            e.Graphics.DrawString(taskActivity.Remarks, Font, SystemBrushes.ControlDark, taRect);
        }
        /// <summary>
        /// Draws the task activity.
        /// </summary>
        /// <param name="e">The <see cref="System.Drawing.Printing.PrintPageEventArgs"/> instance containing the event data.</param>
        /// <param name="taRect">The ta rect.</param>
        /// <param name="taskActivity">The task activity.</param>
        private void DrawTaskActivity(System.Drawing.Printing.PrintPageEventArgs e, Rectangle taRect, TaskActivity taskActivity)
        {
#if DEBUG
            //debug
            //e.Graphics.DrawRectangle(new Pen(SystemBrushes.ControlLight), taRect);
#endif
            e.Graphics.DrawLine(new Pen(SystemBrushes.ControlLight),
                                taRect.X, taRect.Bottom,
                                taRect.X + taRect.Width, taRect.Bottom);

            e.Graphics.DrawString(taskActivity.TaskDescription.Name, SystemFonts.DefaultFont, SystemBrushes.ControlDark, taRect);
            SizeF size = e.Graphics.MeasureString(taskActivity.Duration.ToString(), SystemFonts.DefaultFont);
            e.Graphics.DrawString(taskActivity.Duration.ToString(), SystemFonts.DefaultFont, SystemBrushes.ControlDark, taRect.X + taRect.Width - size.Width, taRect.Top);
            _totalDuration += taskActivity.Duration;
        }
        /// <summary>
        /// Provides the business logic for handling a new TaskActivity
        /// </summary>
        /// <param name="taskDescription">The task description.</param>
        /// <param name="crossTabTaskDescription">The task description for cross tab.</param>
        /// <param name="effectiveDateTime">The effective date time.</param>
        public void HandleNewTaskActivity(TaskDescription taskDescription, TaskDescription crossTabTaskDescription, 
            DateTime effectiveDateTime)
        {
            if (taskDescription == null)
            {
                throw new ArgumentNullException("taskDescription");
            }

            if (taskDescription.IsNotEmpty())
            {
                // update SelectedTaskDescription
                SettingsProvider.Set(STRING_SELECTEDTASKDESCRIPTION, taskDescription, PersistHint.AcrossSessions);

                // Close off the current activity
                TaskActivity currentActivity =
                    (TaskActivity)SettingsProvider.Get(STRING_CURRENTTASK, TaskActivity.Empty);
                if (currentActivity.IsNotEmpty())
                {
                    if (currentActivity.EndDate == DateTime.MinValue)
                    {
                        currentActivity.EndDate = effectiveDateTime;
                        currentActivity.UserId = IdentityProvider.Principal.Identity.Name;
                        TaskActivitiesProvider.CompleteActivity(currentActivity);
                    }
                    SettingsProvider.Set(STRING_PREVIOUSTASK, currentActivity, PersistHint.AcrossSessions);
                }

                // create a new task activity
                TaskActivity newActivity = new TaskActivity(taskDescription, IdentityProvider.Principal.Identity.Name);
                newActivity.StartDate = effectiveDateTime;
                if(crossTabTaskDescription != null)
                    newActivity.CrosstabTaskDescription = crossTabTaskDescription;
                SettingsProvider.Set(STRING_CURRENTTASK, newActivity, PersistHint.AcrossSessions);
                TaskActivitiesProvider.BeginActivity(newActivity);

                if (taskDescription.IsEvent)
                {
                    // because the selected event is an event also close it off
                    newActivity.EndDate = newActivity.StartDate.AddSeconds(1);
                    newActivity.UserId = IdentityProvider.Principal.Identity.Name;
                    TaskActivitiesProvider.CompleteActivity(newActivity);
                    // now set the current activity to null
                    SettingsProvider.Set(STRING_CURRENTTASK, TaskActivity.Empty, PersistHint.AcrossSessions);
                }
                Trace.TraceInformation("AppContext:HandleNewTaskActivity");
            }
        }
 /// <summary>
 /// setup the nag message for a task
 /// </summary>
 /// <param name="activity"></param>
 private void SetupNag(TaskActivity activity)
 {
     nagtimer.Enabled = false;
     if ((activity.IsNotEmpty()) & (activity.TaskDescription.NoNagMinutes > 0))
     {
         int MILLISECOND_MULTIPLIER = 60*1000;
         nagtimer.Interval = activity.TaskDescription.NoNagMinutes*MILLISECOND_MULTIPLIER;
         nagtimer.Enabled = true;
     }
 }
        /// <summary>
        /// Draws the task activity.
        /// </summary>
        /// <param name="e">The <see cref="System.Drawing.Printing.PrintPageEventArgs"/> instance containing the event data.</param>
        /// <param name="taRect">The ta rect.</param>
        /// <param name="taskActivity">The task activity.</param>
        private void DrawTaskActivity(System.Drawing.Printing.PrintPageEventArgs e, Rectangle taRect, TaskActivity taskActivity)
        {
            #if DEBUG
            //debug
            //e.Graphics.DrawRectangle(new Pen(SystemBrushes.ControlLight), taRect);
            #endif

            e.Graphics.DrawLine(new Pen(SystemBrushes.ControlLight),
                taRect.X, taRect.Bottom,
                taRect.X + taRect.Width, taRect.Bottom);

            e.Graphics.DrawString(taskActivity.TaskDescription.Name, Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(250, 0);
            e.Graphics.DrawString(taskActivity.StartDate.ToString("f"), Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(0, _fontHeight);
            e.Graphics.DrawString(taskActivity.EndDate.ToString("f"), Font, SystemBrushes.ControlDark, taRect);
            taRect.Offset(150, 0);
            Rectangle durRect = taRect;
            durRect.Width = 80;
            SizeF size = e.Graphics.MeasureString(taskActivity.Duration.ToString(), Font);
            e.Graphics.DrawString(taskActivity.Duration.ToString(), Font, SystemBrushes.ControlDark, durRect.Right - size.Width, durRect.Top);
            _totalDuration += taskActivity.Duration;
            taRect.Offset(100, 0);
            e.Graphics.DrawString(taskActivity.Remarks, Font, SystemBrushes.ControlDark, taRect);
        }
 /// <summary>
 /// Initalises a new instance of the TaskActivityEventArgs with a TaskActivity and an effective date.
 /// </summary>
 /// <param name="activity"></param>
 /// <param name="effectiveDate"></param>
 public TaskActivityEventArgs(TaskActivity activity, DateTime effectiveDate)
 {
     _activity      = activity ?? throw new InvalidOperationException(Resources.ActivityCannotBeSetToNull);
     _effectiveDate = effectiveDate;
 }