/// <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; }
/// <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); }
/// <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> /// 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> /// 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; }