/// <summary>
        /// Creates a new TimeReport instance.
        /// </summary>
        /// <param name="tracker">Time tracker instance.</param>
        public TimeReport(TimeTracker timeTracker)
        {
            InitializeComponent();
              FormClosing += new FormClosingEventHandler(MainFormClosing);

              _timeTracker = timeTracker;

              // The start labels are only used for helping in layout design
              _lblTimeStart.Visible = false;
              _lblTextStart.Visible = false;

              EVENT_LABEL_HEIGHT = _lblTextCurrent.Top - _lblTextStart.Top;
              FORM_INITIAL_HEIGHT = Height;
        }
 /// <summary>
 /// Restores the application settings.
 /// </summary>
 private void RestoreSettings()
 {
     _timeTracker = new TimeTracker(Settings.Default.TimeTrackerStartTime);
 }
 /// <summary>
 /// Adds an event and checks that the last time period has expected values.
 /// </summary>
 /// <param name="tracker">Time tracker to test.</param>
 /// <param name="type">Type of event to add.</param>
 private void CheckLastPeriod(TimeTracker tracker,
                          TrackableEvent.EventType type)
 {
     TrackableEvent previousEvent = tracker.LastEvent;
       AddEvent(tracker, type, new TimeSpan(0, 1, 0));
       TimePeriod period = tracker.LastCompletedTimePeriod;
       TimePeriod.PeriodType expectedType = TimeTracker.GetPeriodTypeFromEvent(previousEvent.Activity);
       Assert.That(period.Type, Is.EqualTo(expectedType));
       Assert.That(period.Duration,
           Is.EqualTo(tracker.LastEvent.Time.Subtract(previousEvent.Time)));
 }
        /// <summary>
        /// Adds a trackable event to the tracker and verifies that it matches the
        /// last event in the tracker.
        /// </summary>
        /// <param name="tracker">Time tracker to test.</param>
        /// <param name="type">Type of event to add.</param>
        /// <param name="delay">Delay of the new event since the previous event.</param>
        private void AddEvent(TimeTracker tracker,
                          TrackableEvent.EventType type, TimeSpan delay)
        {
            Console.WriteLine(String.Format("Adding {0} after {1}", type, delay));

              // Add delay to last event time
              int eventCount = tracker.GetEvents().Count;
              DateTime time = tracker.GetEvents()[eventCount - 1].Time.Add(delay);

              // Add and verify the event
              tracker.AddEvent(new TrackableEvent(type, time));
              Assert.That(tracker.GetEvents().Count, Is.EqualTo(++eventCount));
              TrackableEvent lastEvent = tracker.LastEvent;
              Assert.That(lastEvent.Type, Is.EqualTo(type));
              Assert.That(lastEvent.Time, Is.EqualTo(time));
        }
 public void AddEvents()
 {
     TimeTracker tracker = new TimeTracker(new SystemClock().Now);
       AddEvent(tracker, TrackableEvent.EventType.Lock, new TimeSpan(0, 5, 0));
       AddEvent(tracker, TrackableEvent.EventType.Unlock, new TimeSpan(1, 5, 0));
 }
 public void CheckWorkTime()
 {
     DateTime startTime = new SystemClock().Now;
       TimeTracker tracker = new TimeTracker(startTime);
       TimeSpan workTime = new TimeSpan(1, 2, 3);
       Assert.That(tracker.GetWorkTime(startTime.Add(workTime)), Is.EqualTo(workTime));
 }
 public void CheckStartTime()
 {
     DateTime now = new SystemClock().Now;
       TimeTracker tracker = new TimeTracker(now);
       Console.WriteLine("Checking start time " + now);
       Assert.That(tracker.StartTime, Is.EqualTo(now));
       Assert.That(tracker.FirstEvent.Time, Is.EqualTo(now));
       Assert.That(tracker.FirstEvent.Type, Is.EqualTo(TrackableEvent.EventType.Start));
 }