DATEBK3 - An Enhanced version of the Datebook Application

Datebk3 consists of one large PRC file: Datebk3.prc.Make sure you 
have enough memory to load this application. Remember that 
memory fragmentation problems in the Palm OS may prevent you 
from loading them even though it APPEARS that there is enough 
free memory (See for example, http://www.deskfree.com/Recycle.html 
for a defragger utility). If HotSync just dies while trying to 
install the application, this is a clear indication that there 
is insufficient contiguous memory to load it. As long as there 
is enough total memory, running a defragger will solve the 
problem. In general we would probably advise against loading
this application with less than 200-250k of free memory, unless 
you are willing to use a defragger to make sure there's enough 
contiguous memory.

NOTE: If the desktop HotSync program dies during the download, and
upon resetting your Pilot it seems to loop out, or you see a little
flashing box in the top left corner, DO NOT DO A HARD RESET. The
problem is that a portion of the program that was being downloaded
has been left on the Pilot and it is crashing the system when the
RESET message is sent to it. However, there is an easy recovery:
Press the UP button while poking the reset button and you can get to
the MEMORY application to delete the half-loaded program. Remember
that an improperly loaded application can prevent your Pilot from
resetting and starting properly!!

Datebk3 is shareware and has a 45 day evaluation period. All
functionality is available during that period except that future
months cannot be viewed in the 2nd weekly, or monthly views. At the
termination of that 45-day period, a few of the Datebk3 enhancements
are suspended on the last half of each month. Those users with 
little memory may wish to forgo the Datebk3 enhancements and just 
run WeekView by itself.

I expect that on the release of this program, I will be inundated
with suggestions for improvements and other enhancements. Please do
NOT send a suggestion about incorporating Todo's, or implementing
categories - these are both under review and analysis at this time.
The FUTURES section below covers other enhancements that are being
studied. You might want to read that before sending an email
regarding proposed enhancements.

Datebk3 Features
==================

  Runs on both V-2 and V-1 PalmPilots and implements all the V-2
  Datebook features (monthly view, drag and drop in graphical Weekly
  view, time bars, timeline compression, etc.) that are compatible
  with the V-1 Palm OS.

  Includes Pimlico's alternate WeekView with text as a 4th view and
  fully integrates it into Datebk3.

  Includes the "Date Picker" dialog to set the purge date, so any
  date can be chosen for purging old records (the opening default is
  the last day of the month preceding the prior month). All records
  preceding and occurring on that date will then be purged. Simply
  tap the default date to bring up the Date Picker to select the
  purge date. A confirmation dialog appears if the Archive flag is
  not set (to prevent inadvertive loss)

  Appointments can be excluded from the purge by placing <NP>
  anywhere in the note field of the appointment.

  Adds the ability to specify appointment start and end to the
  nearest minute, not just 5-minute intervals. Eliminates the need to
  scroll to select an hour as all 24 hours are displayed in the
  dialog. (Note: V-1.4 adds the ability to set the time using
  graffiti strokes - matching the undocumented feature of V-2
  PalmPilots).

  Event durations can be specified directly by tapping on the
  DURATION button in the Time dialog and then selecting the duration
  of the event (from 0 to 11h 55m in 5-minute intervals), rather than
  having to set an explicit end time. The No Time button now returns
  immediately avoiding the redundant tapping of the OK button.

  A COPY EVENT menu option makes a complete copy of an appointment
  including status, alarm, note etc. and goes directly to the Details
  dialog to allow the copy to be easily rescheduled to a new date or
  time.

  A template feature makes it possible to keep a list of standard
  appointments or events. A picklist of these events can be brought
  up with a tap and directly inserted into the current day's
  schedule. Simply select an event and invoke the SAVE AS TEMPLATE
  menu option to save the appointment as a template (it is actually
  stored in the database as an appointment on January 1, 2020, and an
  Edit button in the template dialog brings up that day so the
  template appointments can be modified or deleted). To insert a
  template, tap on the 'Tp' button in the main screen. Select an
  appointment and tap OK to insert the appointment with the cursor
  located for editing, or tap SELECT to insert the appointment with
  all the text selected (so it can be easily overtyped), or tap
  DETAILS to go directly to the DETAILS dialog to make changes to the
  inserted appointment. Repeat events can be saved as a template, but
  the repeat status is removed from the template.

  Appointments can be marked as having a "Todo" type - their date
  will be advanced to today if today is greater than the most
  recently scheduled/set date. This is especially useful for a task
  which needs to be re-scheduled day by day until completed. Timed
  Todo items are displayed as a open box in the right margin (open 
  box only displayed under V-2 OS at the present time). However, an
  untimed Todo type event will show the open box in the Left margin
  instead of a diamond on both V-1 and V-2 PalmPilots. A set of
  pushbuttons in the Details dialog handle this feature. Repeat
  events cannot be marked as having a Todo type. Todo type events can
  have alarms like regular appointments, or can be marked as no-time
  events. New Todo events can be created directly by selecting the
  New Todo item in the RECORD menu. There is also an option to force
  the NEW button to create a todo event rather than a regular
  appointment. This is a useful option because untimed events can be
  very efficiently entered with graffiti - for example, stroking 145
  automatically creates a new event and assigns the time of 1:45p to
  it (if 12hr clock is the default, otherwise it would set 1:45a on 
  a 24hr clock).

  Todo events are sorted ahead of Done events which in turn are
  sorted ahead of untimed appointments. Within each category, the
  events are sorted into alphabetic order so you can, for example,
  start each Todo event with a digit from 1-9 to set a priority and
  the Todo's will then be sorted by priority. If you edit the text
  of an appointment, however, the event will not be re-sorted until
  the screen has to be refreshed (by moving to another day and back
  again, for example).

  Appointments can be marked as having a DONE status in which case a
  checkmark appears in the box in the right-margin (Checked box only
  displayed under V-2 OS for timed todo events at the present time ).
  A preference option allows checked-off entries to be hidden from
  the display. (Note: this preference option may be changed by
  Datebk3 if you invoke a Find on a hidden item in order to display
  the item). Tapping on the open or checked box will toggle its
  status, making it easy to check off completed tasks. Marking a
  repeat event as DONE can be applied to either the entire repeat
  event or just a single occurrence of it.

  Adds an option to round durations to the next hour, so the default
  duration merges with the next hourly time interval (thereby not
  wasting one slot in the agenda display when, as is often the case,
  the duration is not really relevant). However, see also new support
  for zero duration events in V-1.4.

  V-1.4 adds full support for zero-duration events. If there is no
  duration, a redundant time bar is NOT displayed, the details dialog
  shows just one time, and a preference option (Select Preferences
  from the Monthly View) determines whether zero duration events are
  displayed in the monthly and 2nd weekly views (this provides a
  convenient way of removing certain events from these two displays).
  To quickly set a zero duration, tap the Duration button in the Time
  dialog and then just tap the OK button without selecting a duration
  - that sets a zero duration event. Note that you can also tap the
  time at the left-side of the main display to bring up the Time
  Dialog directly without going through the Details dialog. With this
  support for zero-duration events, Datebk3 now has an option to
  default the duration of new events to zero, rather than one hour,
  since many items in the datebook do not in fact have a duration
  associated with them (see Preferences under the OPTION menu in the
  daily view).

  When specifying the time for an appointment, if the end time is
  explicitly set, then adjusting the start time will NOT adjust the
  end time (End time is only adjusted if it has not been touched by
  the user).

  In the Monthly view, each appointment hour from 6am to 6pm displays
  as a small bar so you get a much better visual indication of what
  hours of the day are taken. Small bars on the left are for am
  Appts, and dots on the right are for pm appointments. Any
  appointment before 6am will always cause the 6-7am slot to show a
  bar, and any appointment after 6pm (18:00) will always cause the
  5-6pm (17:00-18:00) slot to show a bar.

  The Monthly view now features an alternate display where graphical
  icons are shown for various events and appointments, making it very
  simple to scan a month for important events. The ATTACH ICON menu
  command will automatically insert a two character sequence #a in 
  the note of an appointment, where 'a' is a letter from a-z) that
  corresponds to the selected icon. This ATTACH ICON routine will
  replace the #x sequence at the end of the note if a change is made
  and will automatically create a note if none exists. Note that the
  icon routine will take the first occurrence of a # followed by a
  character from a-z to locate the icon to display. The # sequence
  can also be inserted manually into either the description or note
  of an event.

  A mechanism exists (for the more adventurous types) to design
  and incorporate custom icons (see Tech Note below). Pushbuttons in
  the monthly view toggle back and forth between the event display
  and the icon display. A sample bitmap file is contained in the file
  BITMAP.TXT which is included in the ZIP archive. Simply open up a
  new memo in the Pilot Desktop application and copy-and-paste the
  entire contents of this file into the new memo record. Then HotSync
  to download that memo into your Pilot.

  Week and Month Views display two letters for the day of the week
  and the weekly view now takes the name of the day of the week from
  the System Resource rather than an internal resource (Standard
  Datebook application does that for the Monthly View but not the
  Weekly View - a bug?).

  The Startup screen can be any one of the four views into the
  datebook. To set the startup view, go to the PREFERENCES item
  in the OPTIONS menu of the Daily view and select one of the four
  views to start with.

  A custom week number setting allows any week to be the first week
  of the year. This is important since the Pilot does not 
  properly adhere to the ISO standard, and many users may need to 
  set week numbers based upon a fiscal year.

  The database format is 100% compatible with the built-in datebook
  application. If an entry is edited with the standard datebook
  application, the Todo/done type status of an event will be lost,
  but nothing else will be affected.

============= THE NEW, 2nd WEEKLY VIEW =========================

   In the Weekly view, the title line shows the month and year of the
   week being displayed followed by the week number. Tap on the title
   bar to briefly see the time and also an indication of the +- offset
   from the current week in parentheses after the time).

   To move forwards and backwards, use the UP and DOWN buttons on the
   PalmPilot or click on the Left or Right arrows in the title line.
   When displaying two weeks at a time, the buttons will move two
   weeks in either direction, but the arrows will only move one week
   (that way you can display two weeks starting with any week).

   To jump quickly to a specific date, click on the GO button on the
   title bar and the standard PalmPilot Date Picker dialog will
   appear.

   To jump quickly to a specific week, select the Goto Week Number
   item in the OPTIONS menu (or stroke Command/W in the graffiti
   area) and then press the button corresponding to the week you want
   to go to. In the Week Number dialog, the current week number is in
   bold, and the currently displayed week has a bold border around
   it.

   To jump to today's date, you can either stroke the letter 't' (or
   'T') or a period ('.') on the graffiti area. The period is
   convenient because it is just a double tap (easy to do even with a
   finger). 

   To jump to a day in the datebook application, click on the
   inverted date in that day cell (i.e. that has the day of week and
   day of month displayed in white on black). If there is only one
   appointment on that day, the cursor will be placed in that
   appointment (provided it is not a repeat appointment), otherwise,
   the cursor will be placed in the first hour of that day.

   You can go directly to the graphical weekly view by stroking the
   letter 'g' in the graffiti area.

   To jump forwards or backwards by a number of days, select the GO
   FWDS/BKWDS BY DAY option in the OPTIONS menu. A dialog appears
   where you can type in a number of days (use a minus sign to go
   backwards). For example, you can easily move to a week that is 125
   days before the current week by typing in -125.

   To switch between the 1 week and 2 week view, tap the button on
   the title bar and the legend will toggle between a 1 and a 2. Tap
   on the 'm' to move to the monthly view.

   Today's cell will have the first appointment set in bold type. If
   there are no appointments for today's date, the legend "Today"
   will appear in a box in the middle of the cell.

   If there is only one appointment on the day, there is a preference
   option to wordwrap the text to the cell to show as much text as
   possible (normally this preference is checked). If there are too
   many appointments to display in the cell, the last appointment
   will end with a round bullet as a signal that there are more
   appointments.

   If there are some appointments in one or more days that are not
   being shown, there will be a down arrow in the box just to the
   left of the GO button. Tap that button to scroll forwards to 
   the next set of events on those day(s). If there are events
   before AND after those being shown, there will be both an up
   and a down arrow in the display. When the last set of events
   is being shown, there will be only an up-arrow in the scroll
   box. If you tap the scroll box again, it will cycle back to the
   beginning. If there is no arrow in the scroll box, that shows
   that all events in the period being shown are being displayed.

   To view all the appointments for a day (up to 16), just click
   anywhere on the cell for that day to bring up the DETAILS view.

   DETAILS VIEW

   To return to the WEEKLY view, just click below the last
   appointment line or the Done button. In the one case where there
   are 16 or more appointments you will have to click on the Done
   button.

   If the current item has a note, the note symbol will appear at the
   end of the line. You can tap the note symbol to bring up the note
   in a read-only window which will display up to 16 lines of the
   note. Just tap anywhere on the screen below the title line to
   return to the details view, or tap the EDIT button to jump to the
   datebook application with that note displayed so you can modify
   the note. Repeat items are flagged with the standard Repeat symbol
   (V-2 PalmPilots) or a diamond (V-1 Pilots) after the time.

   To jump to a specific appointment in the Datebook application
   (where you can edit, make changes, etc.), tap on the appointment.

   To create a new entry, tap the NEW button which will switch to the
   Datebook application and put the cursor in the first time slot for
   the day.

PREFERENCES

   To change the appearance of the view, select the PREFERENCE item
   in the OPTIONS menu or stroke Command/P in the graffiti area. In
   the preference dialog you can change:

   TIME FORMAT. The drop down list box allows you to omit the time or
   display the time in 12 or 24 hour formats with/without the
   minutes.

   WORDWRAP. If checked, a single entry will be wordwrapped to
   multiple lines.

   WORDWRAP ALL IN DETAILS. If checked, all entries in the Details
   dialog will be wordwrapped. This is probably the preferred setting
   unless you often have a very large number of appointments in each
   day.

   CONDENSED FONT. If checked, a condensed font is used which will
   display more text but with a corresponding loss of legibility.

   SHOW END TIME. If checked, the ending time of each appointment
   will be displayed in the Details view.

   HIDE UNTIMED TODO'S. If checked, untimed todo's or done items will
   be hidden from the display. Timed Todo's or checked items will be
   displayed as usual.

   PILOT WEEK#/CUSTOM WK#. Normally, Datebk3 will display week
   numbers which match the numbers used in the PalmPilot's datebook
   application. However, if you click on CUSTOM WK#, a date picker 
   dialog appears where you can set any week of the year to be week
   1. All Week numbers will then be calculated from the starting 
   week number.

   Note: The Pilot appears to adhere to the ISO specification for 
   Week Numbers (the first week of the year is the first week in 
   the year that contains a Thursday). However, there is ambiguity
   if the week starts on Sunday since the ISO standard also mandates
   that Monday is the start of the week. The Psion, for example
   treats the ISO specification as meaning the first week has 4 or
   more days of that week. As a result, the Psion series PDA's
   have week numbers that differ by 1 from the Palm Pilot throughout
   1998.  Note that the initial setting for the title can
   be set as a preference item. You may wish to use week numbers that
   match your fiscal year, etc.


REGISTRATION AND EXPIRATION INFORMATION

  Datebk3 Registration (includes WeekView): $20
  WeekView Registration alone: $15
  Upgrade from WeekView to Datebk3: $5

  (Note: RegNet registration fees are $5 more than the above quoted 
  figures).

  The registration code supplied for Datebk3 automatically registers
  both programs. WeekView can be registered separately. You can tell
  which registration code is in effect by displaying the Registration
  dialog.

  The unregistered version of Datebk3 will run for 45 days following
  installation, with a warning given at 30 days. On expiration,
  certain Datebk3 enhancements will no longer function on the last
  half of each month (such as marking an event as a Todo or done,
  variable purge date etc.) but the program will continue to run.
  Since the database format is 100% compatible with the built-in
  Datebook application, there is no danger or harm whatsoever in
  using Datebk3 for a period of time and then deciding not to
  register it.

INSTALLATION NOTE ON MONTH ICONS

How to install the BITMAPS.TXT file with icons for the Monthly View:

1. Unzip the BITMAPS.TXT from the ZIP archive and place it in a directory
2. Run the PalmPilot Desktop application, select MEMO and click on NEW to
open up a new memo
3. Open up the BITMAPS.TXT file with NOTEPAD or similar, simple editor
4. Select all the text in the file and copy to the clipboard
5. Switch to the Pilot Desktop, put the cursor in the memo area and
paste the contents of the file into a new memo
6. Close out the desktop and do a HotSync
7. Verify that you now have a new memo on your Pilot with just DATEBK3
on the top line and all the bitmap records underneath it.

TECHNICAL DETAILS ON THE MONTHLY ICONS IF YOU WANT TO CHANGE THEM
OR ADD NEW ONES

The graphics for the monthly icons are stored in a memo record that
must begin with the text DATEBK3{eol} in capitals, where {eol}
represents the End of line character. The ZIP archive contains a
memo record with some suggested graphics.

This is then followed by 26 lines of Hexadecimal codes that describe
the icon, one icon per line. The first line sets the icon for #a, the
second for #b etc. Each line has the format:

#a{Description}={hexadecimal string}
#b{Description}={hexadecimal string}
#c{Description}=0000000000000000
#d{Description}={hexadecimal string}

No letters may be skipped, but you can have a line that has no icon
as shown for #c above. Use caution editing this memo record.
Obviously, if the format is corrupted, the icon display will not be
available and an error alert will be displayed. The {Description}
field has a 1-24 character description of the icon which is
terminated by the equals sign. If the {Description} field is
omitted, the legend 'Icon x' will be displayed instead (where 'x'
is the associated character for the icon)

The hexadecimal string consists of 16 hexadecimal characters. These
define the 8x8 bitmap graphic with the first hex character specifying
the left nibble for row 1, then the right nibble for row 1, then the
left nibble for line 2, right nibble for line 2, as shown below:

		01
		23
		45
		67
		89
		AB
		CD
		EF

For example, an small airplane could be described as:
18183C7EDB183C5A which would correspond to the following bitmap:

		...xx...	18
		...xx...	18
		..xxxx..	3c
		.xxxxxx.	7e
		xx.xx.xx	db
		...xx...	18
		..xxxx..	3c
		.x.xx.x.	5a

Valentine Heart
		.xx..xx.	66
		x..xx..x	AA
		x......x	81
		x......x	81
		x......x	81
		.x....x.	42
		..x..x..	24
		...xx...	18

For the hexadecimal characters, remember that:

		Bits		#
		....		0
		...x		1
		..x.		2
		..xx		3
		.x..		4
		.x.x		5
		.xx.		6
		.xxx		7
		x...		8
		x..x		9
		x.x.		A
		x.xx		B
		xx..		C
		xx.x		D
		xxx.		E
		xxxx		F

The sample memo record supplied in the file BITMAP.TXT contains these
graphics:
#a - airplane
#b - boat
#c - car
#d - Dollar sign (payday / pay bills)
#e - exclamation mark
#f - Flag
#g - big bullet
#h - happy face
#i - Racquet (Tennis/games)
#j - Birthday Cake
#k - knife and fork
#l - bomb (Deadline)
#m - man
#n - no symbol
#o - unhappy face
#p - phone
#q - question mark
#r - checkmark
#s - Star
#t - Tack (reminder)
#u - Checkbox
#v - Valentine's Heart
#w - Drink
#x - Big X
#y - Big Y
#z - Arrow

  FUTURES

  There is not a lot of space to work with - already these two
  programs consume over 130k (although the current requirement for
  these programs to be able to run standalone causes quite a bit of
  code redundancy). The two "big" primary enhancements which people
  have requested are:

  1. Integration of Todo's. This is certainly possible and I have
  been spending quite a bit of time reviewing this to see what would
  be involved. Note that the new Todo type feature in Datebk3 may be
  sufficient for many people's needs and has the advantage that it is
  fully integrated.

  2. Support for categories. The intent here is two-fold: not only to
  support different categories (such as personal and business), but
  to also allow a HotSynch to integrate other people's datebooks as a
  distinct category. For example, this would allow a husband and wife
  to keep each other's datebooks on both their machines, and yet
  still look at their individual appointments. A company schedule
  could be integrated with individual worker's schedules, etc.

There are several other (some minor) enhancements under review:

  3. Ability to put an entry in bold text to make it stand out
  4. Faster scan of database in Weekview with text.
  7. A display-next-occurrence-only attribute for repeating
  appointments (as on the Psion)
  8. Display years since start year for anniversaries (yearly
  appointments)
  9. Quick display window of appointments for monthly view (so you
  can tap a day and see the text of appointments for that day without
  having to go to another view (in a manner similar to the graphical
  weekly view).
  10. Foreign language support. All text is in resource files, so it
  will not be difficult to generate customized versions for various
  languages (German, French and Spanish are initially planned).
  11. One-tap alarm (so you can set or clear an alarm without having
  to invoke the Details dialog (3 taps).
  12. A List type view which would list appointments in chronological
  order with the date and time and be fully scrollable.
  13. A function to locate free-time (as in our MonthView program for
  the Psion). Preference settings establish which days are business
  days and the start and end time for the business day. You can then
  ask the program to find the earliest day in which an appointment of
  HH:MM duration can be placed without overlapping any existing
  appointments.
