Skip to content
Jason C. McDonald edited this page Jan 10, 2020 · 2 revisions

Timecard needs to be able to maintain multiple separate timers. This will be critical for implementing a few future features, including:

  • Track time paused.
  • Task switching.

Timer Object

A Timer object will need to be defined, such that multiple timers may exist simultaneously. The program should be able to switch which is viewed at any given time.

A Timer object should have the following properties:

  • Timestamp (of start)
  • Activity
  • Duration
  • Pause Duration
  • Alert-Enabled

Interface Changes

  • Switcher: A drop-down box should display the status of all active timers and their corresponding activities.
  • Tray Icon: Should display all active timers, with separate control for each.
  • A second, smaller time display should show how long a timer has been paused for.
  • Once Alerts have been implemented, it should be possible to toggle whether Alerts "notice" a timer using a toggle button.

Paused Time

A timer should know, not just how long it has been running, but how long it has been paused. This should be stored in the time logs, and be editable in the same manner as duration.

As mentioned in Interface Changes, a smaller (possibly red) time display should show how long a timer has been paused for. This would not be displayed in the Switcher or Tray Icon, however, just to avoid confusing the user.

Data Storage

If time paused is tracked, it should be stored as a subfield of duration. That way, any time logs/entries without that subfield are still valid.

2020-1-3-11-20-29|00:20:46|Do something cool
2020-1-3-13-14-43|00:42:19/00:12:13|Do something else

The first entry has no pause time stored. The second entry has 12 minutes and 13 seconds of pause time stored.

Task Switching

It should be possible to have multiple timers running at a time, and allow switching which one is being viewed via the Switcher. One use case for this would be pausing one activity, switching to another, and then switching back.

Clone this wiki locally