Notice: Updates on this topic have been moved here.
--------------------
Introduction
There are a lot of time management programs out there. In the past, I used Microsoft Outlook to manage my general calendar and for general-purpose task management. I currently use a freeware program called Personal Reminder for general-purpose daily, weekly, and monthly reoccurring reminders.
What is missing from my time management arsenal is a tool to quickly set up same-day, one-use-only, reminders. For my 6-year-old computer, Microsoft Outlook is a resource behemoth and I don't use it anymore. Personal Reminder is OK but it has several idiosyncrasies that make it difficult to tolerate as a short-term reminder program. I created QuickReminder to fill the gap.
QuickReminder
Key features:
- Quick Add. New reminders can be quickly added by using a global hotkey (default hotkey is Ctrl+Alt+R) or by double-clicking on the tray icon. Although the mouse can be used, the dialog was designed for quick keyboard entry and navigation. Reminder time can be entered as a countdown (hours, minutes, seconds) or as a date/time.
- Friendly alarms. Yes, the alarms do take up screen real estate and they do make a noise but the alarm windows are relatively small and they don't steal focus when displayed. If desired, the alarm text will be spoken to you when the alarm goes off.
- Snooze. Reminder alarms can be snoozed to a future time. You can select from a list of snooze times or enter your own custom snooze time.
- Reminder List. To help manage pending reminders, a Reminder List window is provided. From this window you can hold, edit, restart, and delete individual reminders.
The Code
The pertinent files are as follows:
- Project: QuickReminder.zip (Includes source, icons, and sounds)
Documentation: Future
To use the Text-To-Speech (TTS) feature, Microsoft Speech SDK 5.1 must be installed if using any Windows version earlier than Windows XP.
http://tinyurl.com/yptaoo
Note: The Microsoft Speech SDK 5.1 installation includes two additional voices (Microsoft Mike and Microsoft Mary) so it should be worth the trouble to install it even if you are using Window XP+.
Usage Notes
No formal documentation (yet) but here are a few notes...
- Snooze
When an alarm window is displayed, the user can enter (or select from a list) a snooze value that will reschedule the reminder to a future date/time. The Snooze field can contain two types of values:- Time Period. This is amount of time from the current time. The format is any number optionally followed by the letters "s" (seconds), "m" (minutes), "h" (hours), "d" (days), or "w" (weeks). Spaces and additional characters are ignored. If no letters are included, minutes are assumed. The following are valid snooze time periods:
- 10s
90 seconds
45
37.5 mins
23 h
12.75 hours
2 days
6 weeks
- 10s
- Clock Time. This is the actual clock time and can be entered in the 12-hour or 24-hour format. The 12-hour format is HH:MM.SS AM|PM and the range is 12:00 AM (midnight) to 11:59.59 PM. The 24-hour format is HH:MM.SS and the range is 00:00 (midnight) to 23:59.59. Many components of the format are flexible/optional. As long as program identifies the snooze value as a clock time and can interpret the value, it can be used. The following are valid snooze clock times:
- 12:39.23 AM
15:23.57
4:11.37 Post Meridiem
2a
00:7
10 P.M.
6:2p
- A clock time is always considered to be a time in the future. If it is currently 4 PM on Monday and snooze is set to 3 PM, the alarm will be set to 3 PM on the following day (Tuesday).
- The total amount of time that can be set using this option is 24 hours (less 1 second). To snooze to a specific clock time that is more than 24 hours from the current time, edit the reminder by clicking on the "Edit" button.
- 12:39.23 AM
Things to know about Text-To-Speech:- Optional. The option to speak the note text when an alarm is raised is not enabled by default. Go to the Options window ("TTS" tab) to enable or change this option.
- Priority. The Priority level defines the order in which the TTS engine processes speech requests. There are three TTS priorities:
- Normal. This is the standard TTS priority used by most applications.
- Alert. If this priority is used, the alarm will interrupt (pause) any other normal TTS voices. After the TTS engine has finished speaking, any interrupted voices will resume speaking. This is the recommended priority for this program.
- Over. If this priority is used, the alarm voice will speak simultaneously with any other TTS voices.
- XML. The alarm note text can include XML which can be used to instruct the TTS engine to change speed, volume, pronunciation, etc. If unsure about the capabilities or the syntax, the following is an XML TTS Tutorial (SAPI 5.3):Be sure to test the XML code before using it in an active alarm. If the XML contains syntax errors, it may cause the script to fail (unlikely) or it may generate a COM error.
- Voices. A specific TTS voice (Ex: Microsoft Mike) can be selected for the application. Go to the Options window ("TTS" tab) to select a voice. Individual voices for each alarm is not supported, however, the note text can include XML instructions to indicate which voice is to be used.
- Metadata. The Note text can contain date/time metadata which is converted in real-time for the TTS engine when the alarm window is displayed. The format is {$Date$X} or {$Time$X} where X is an AutoHotkey date/time format. See the AutoHotkey documentation (keyword: FormatTime) for a list of date/time formats.
Note: If X is blank/null when using the $Date$ key, Ex: {$Date$}, normal formatting rules are observed. However, if X is blank/null when using the $Time$ key, Ex: {$Time$}, the "Time" date/time format is automatically used, i.e. {$Time$Time}. The "Time" format is a time representation for the user's locale, such as 5:26 PM.
A few usage examples:- Today is {$Date$LongDate}.
The time is {$Time$}.
The current month is {$Date$MMMM}.
It is the {$Date$d}th day of the month.
The year is {$Date$yyyy}.
- Today is {$Date$LongDate}.
- Time Period. This is amount of time from the current time. The format is any number optionally followed by the letters "s" (seconds), "m" (minutes), "h" (hours), "d" (days), or "w" (weeks). Spaces and additional characters are ignored. If no letters are included, minutes are assumed. The following are valid snooze time periods:
- External functions. This script uses a number of external functions which have been included in a "_Function" folders. Some of the functions are mine and should be clearly marked and documented. Functions written by others should be clearly marked but may contain custom modifications. Thanks to the original authors for sharing their work.
- Limited locale support. A few of the program's date/time fields support the user's locale settings but most use a static format. Sorry 'bout that.
- Limited documentation. With the exception of the information in this post, documentation/help is currently limited to a few tooltips and a Help button in the Options window ("Notes" tab). Be sure to read the release notes for additional documentation/tips.
- AutoHotkey v1.1+. Since the release of AutoHotkey_L, I've tried to write scripts that will work with all versions of AutoHotkey -- Basic, L-ANSI, L-Unicode, L-64bit. Lex has not made it easy. New features are a usually not a problem but changes that break backward compatibility to AutoHotkey Basic do create a challenge. QuickReminder is one of few scripts out there where converting the code to work with AutoHotkey v1.1+ will break the code for Autohotkey Basic. I've made some changes that will allow it work with AutoHotkey v1.1+ ANSI but there are a few include functions that have not been converted and/or tested yet. I'm not a full-time AutoHotkey v1.1+ user yet so converting this script to only work on AutoHotkey v1.1+ is not a high priority right now.
Release Notes
v0.1 (Alpha/Preview)
Original release.
v0.2 (Preview)
Changes to the Add/Edit Reminder window:
- Added Hold button. This button adds a Reminder but does not start it.
- Added Sound DropDownList control to allow the user to select a custom sound file per Reminder.
Changes to the Reminder List window:
- Renamed the Stop All Reminders button to Delete All Reminders. This button deletes all Reminders regardless of status.
- The Note field can no longer be modified from this window.
- Removed the DateTime field for each Reminder.
- Removed the Stop button for each Reminder.
- The Status field has been enlarged. The script now displays more information in this field for the "Active" and "Hold" modes.
- Added Hold button for each Reminder. This button changes the status of a Reminder from "Active" to "Hold". This button has a similar function as the former Stop button.
- Added Edit button for each Reminder. This button changes the status of a Reminder from "Active" to "Hold" and then opens the Edit Reminder window so that the Reminder can be modified.
- Added the Delete button to remove a Reminder.
General:
- Added more sample Alarm sound files.
Installation notes:
- Delete all files from older version (if any) before installing new version.
v0.3 (Preview)
Changes to Alarm windows:
- Snooze button set as the default control (activates with the Enter key). (thanks HotKeyIt)
- Snooze period can now include days and weeks. Ex: 2 days, 1 week
Changes to the Add/Edit Reminder window:
- The Note field is now multi-line Edit field to match the Alarm and Reminder List windows. (thanks HotKeyIt)
- Added hotkey (F2) to pop-up the list of pre-defined notes (See the Options window)
- DateTime field has now been split up into separate Date and Time fields. (thanks SoggyDog)
- Added hotkey (Ctrl+T) to jump directly to the Time field.
Changes to the Reminder List window:
- If there are any active reminders, the request to "Delete All Reminders" is confirmed before proceeding.
General:
- Added Options (aka "Preferences") window. Many program options can now be set/changed using this feature.
- Added About window to display the current program version.
v0.4 (Preview)
New Features:
- Added Text-To-Speech (TTS) option that will speak the text note when the reminder window is displayed. (SAPI5 required)
- The Note text can now contain date/time metadata. See the Usage Notes section for more information..
Changes to the Add/Edit Reminder window:
- Added hotkey (Ctrl+S) that will add the current note to the end of Note List. Blank and duplicate notes are automatically discarded. The Note list can be edited from the Options window.
- Added confirm dialog when entering more than 99 hours or 199 minutes or 199 seconds.
- Added button to display the list of user-defined notes.
- Added button to speak/stop speaking the note text.
- Added button to play/stop playing the selected alarm sound.
- The selected alarm sound file is automatically played when changed by the user. (thanks ScottMattes)
- Added tooltips for the buttons that don't have readable labels (thanks Drugwash)
Changes to the Reminder List window:
- Fix: Changes to resolve minor button focus problems.
- "Hold" sound is now played when "Edit" button is pressed to indicate that the reminder is on hold until the start button is pressed.
Changes to the Options window:
- Fix: Minor display issues fixed in the HotkeyGUI window (thanks Drugwash)
- Added options for "Play alarm sound", "Play alarm nag sound", and "Alarm nag sound interval".
- Added "Speak note text on Alarm" option. If selected, the contents of the note text will be spoken using the Text-To-Speech engine when the alarm window is displayed.
- Added "Voice" option. This option allows you to choose the Text-To-Speech voice that will be used when speaking the note text.
- Added "Priority" option that will allow you to chose the priority that is used when speaking the note text.
General:
- Added option to start QuickReminder when Windows starts. This option is only available if running the compiled script.
- Tray tooltip is now updated to reflect the current number of reminders.
v0.5
- Update: Limit of concurrent reminders increased to 20. (thanks HotKeyIt and daorc)
- Update: Reminder List window redesigned. Although the functionality is similar to the old version, it's now easier to make changes to multiple reminders.
- Added "Edit" button to all Alarm windows. Please note that an alarm can not be be edited if any other alarm is being edited or if the Add Reminder window is open.
- Update: All windows redesigned to support large system fonts.
- Update: Help for the Note List Editor updated to use the "HTML DialogBox" function. (thanks SKAN)
- Added a "NoSound.wav" file to the list of sound files. (thanks daorc) This option allows the user to turn off the alarm sound for a single alarm.
- Update: The Snooze period can now contain a clock time. See the Usage Notes section for more information.
Installation instructions (required to save your current alarms and settings):
- Make a backup copy the "QuickReminder.ini" file from your current installation.
- Delete old version.
- Install new version.
- Copy backup copy of the "QuickReminder.ini" file to the new version.
- You're done!