Saturday, November 26, 2005 11:49 PM
Once I released my Time Tracker application article, I decided that I liked the base code enough to modify it for my own use. Of course, I figured that I would release it for others to use too. I have set it up to install as a ClickOnce solution (click a URL, click Install, then let it auto-install, and even auto-updates over time). I also have the source code available as a Zip file.
For those who haven't worked with ClickOnce yet, it's great. Use the Publish wizard in the Project Properties, sign the manifest and the code (just use the test certificates for starters), and you have an auto-installed application. When I say “auto“ install, of course I mean that you have a choice when you visit the page, but it's just neat to click Install on a web page, and not to require downloading and double-clicking files. Much easier for novice users to figure out. The best part, is the auto-updating. Choose the frequency (I chose every 7 days), and the app will check for an update and manage all of that by itself. If I ever modify the code, I just re-publish and installed users will be up-to-date on next update. Very nice feature!
The new features are:
- Fixed a bug in the details report
- Added date range for details report (defaults to past 30 days)
- Modified format of time entries in details report
- Application won't run if it's already running (uses Mutex for this in Program.cs)
- Remembers last selected project and auto-selected on next run (uses user-level setting in Project Properties for this)
- Updates tooltip with current selected project even when signed out (more useful this way)
- If your system goes into standby when punched in, it will log that time. When you resume, it will ask if it should punch you out as of standby (or leave you punched in)
- Automatically logs out if system is shutdown
- Various cleanups here and there
The code is not perfectly clean, both in terms of general elegance, and proper structure. I will work on both things as I have time. My list of things to do then are:
- Make code pretty
- Better encapsulate code
- Add client meta-grouping
- Add task sub-grouping (will be client - project - task)
- Enable manual time entries (forgot to punch in/out?)
- Enable manual punch out of current entry (should have punched out an hour ago?)
- Add some kind of visual “punched in“ indicator (brighter icon? animated clock hands?)
- Add more report options
- Roll up time info after some amount of time (i.e after two months, just record 6 hours on that date, not each punch in/out)
- Auto-Start with Windows option (I just drag mine to Startup folder right now)
- Any requests?
Maybe I'll be the only one to use this, and that's fine! I like it so far. I'll keep adding to it as I have time. Let me know if you have any comments, suggestions, complaints, etc.
Links
Source code: http://www.ariankulp.com/downloads/TimeTracker-solution.zip
ClickOnce: http://www.ariankulp.com/ClickOnce/TimeTracker/Install.htm
UPDATE (2/15/2006): I've updated the code again. For more information, see this blog entry.