Click here to Skip to main content
13,145,851 members (61,008 online)
Click here to Skip to main content
Add your own
alternative version


Posted 22 Oct 2012

Task Timer

, 23 Oct 2012
Rate this:
Please Sign up or sign in to vote.
A time management/productivity tool to be used to record length of time spent on tasks/projects.

Editorial Note

This article is an entry in our AppInnovation Contest. Articles in this sub-section are not required to be full articles so care should be taken when voting.


Windows 8 desktop app – Productivity category.

Please note - that this article is a work in progress.  As development progresses this article will be updated accordingly.

The App that is in development is a time management/productivity tool who's primary purpose will be to record and graph time spent on individual task and projects.

Users should be able through a simple interface be able to create timers to record time spent during the course of the day on tasks. These timers maybe paused as necessary or timing even adjusted by the user where required. Completed tasks may then be saved and categorised for reporting purposes. These saved task time may then be reported on within the application itself or exported to CSV/Excel formats. Use of extensive filtering criteria and visual graphs will be used as part of this reporting  process.

Key Design Principles:

  • The interface should be clear and simple
  • An intuitive simple design should mean that the application should not require training/manuals.
  • The App should be made easy to hand - for quick access.  (few button clicks/touches) 
  • All options should be large enough to allow for easy touch screen control.


The reason I wish to develop this app is first and foremost to fulfill my own personal requirement for the tool. I have searched for a similar application in the past across a number of different platforms but have to date failed to find a solution that meets the requirements I am looking for.

As a bespoke software developer, I can find myself working on numerous projects and for different clients on a daily/weekly bases. On top of time spent on these projects, additional time may be spent dealing with support calls or other office administration duties. I like many others are required to log time spent on daily tasks for billing/time management/ project planning purposes.

This logging of time spent should ideally be logged daily but more often than not it becomes a weekly exercise. The logging of details can as a result can be largely inaccurate and the process can take much longer than it aught to - it can be difficult to recall tasks undertaken in a busy week and the  timings applied to these tasks are very rough estimates indeed.

It is intended that the finished app will become an integral part of my own daily working routing and the App will address some of the major problems in the above mentioned process by providing an interface to quickly record tasks as they occur and in providing far more accurate timings.

This is the core reason behind my own development of the application however I believe many other people will find usefulness in the application for many other purposes.

Using the code

The following is a brief synopsis of the application. 

Quick Start: A New Task-  

A new task timer maybe started simply by clicking a large red dot (Universal symbol for Start/Record as used on VCR/Music players etc..). Once a timer has started the clock-watch maybe stopped or paused (Universal pause and stop symbol's will again be used here). If stopped the user will then be required to log the details for the task or to discard. 

Details of Task that may be recorded: 

  • Task Title
  • Start date and time (automatic)
  • End date and time (automatic)
  • Location (maybe recorded using the Geolocation sensor of the Ultrabook)
  • Notes
  • Category (Work,Personal etc.. - the list of categories will be editable)
  • Project  (list of projects will be editable) 
  • Group (list of groups will be editable)
  • Time adjustment (plus or minus in minutes) 

Setup A New Task-

As opposed to starting a timer and entering details upon saving the time at the end the user may alternatively to setup the details of the task first before starting the timer. In creating a new task in this fashion the system will be setup so that the user can easily select an existing task and to replicate it (create a new instance of it).

Active Tasks: 

All active tasks will be displayed on the main screen controllable by the stop, start, and pause buttons. A task is considered active if the timer is running, paused or if the new task timer is awaiting to be started.

Provisionally I intended to create the application to be able to display up to five active tasks at once. This figure maybe adjusted depending on later decisions dependent on available screen space etc..

View/Edit All Logged details

All details logged will be accessible to the user once logged. The user will also be able to go into any such record and to manually update any details as required. From this view the user should also be able to delete any records they do not wish to keep.


In terms of reporting the user should be able to pull all the information in either datasheet or graphical views. Before pulling the data the user would set the filters for the report and the contents of the report, in a similar fashion to MS Excels pivot tables/charts.  Data maybe charted as pie charts or as bar charts.

For example: This reporting feature could be used to show how much time was spent on a particular project/client daily/weekly/in total.

Or to graph the breakdown of where time was spent on all tasks within a day.

Export Details: 

Facilities will be made available to either export the recorded data to a .CSV file or to MS Excel formats.  Prior to exporting the data the user may filter what exactly is to be exported based on the recorded details of the tasks.

Sample extracts of coding to be used : 

 Getting the location of the Ultrabook, using the GeoLocator class.

private  async  Task<double[]>   GetLocation()
    Geolocator objGeoLocator = new Geolocator();
    var pos = await objGeoLocator.GetGeopositionAsync();
    return new double[] { pos.Coordinate.Latitude, pos.Coordinate.Longitude };}

Points of Interest 

This will be my first step into Windows application development, and it is a journey I am excited to be embarking on. I will update this section with useful information and sources that I discover along the way.


This is just the initial write-up  (version 1.0) - updates will follow.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Ireland Ireland
I'm a software developer/ technical consultant working for a bespoke software development company in Dublin. In previous years i did time as a technical support agent and earned a Hons BSc in Computing.

You may also be interested in...

Comments and Discussions

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.170915.1 | Last Updated 23 Oct 2012
Article Copyright 2012 by Trigger61
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid