# Calendar Specification

The Calendar program helps the user manage their schedule.

The Calendar program helps the user manage their schedule. This includes timed events such as meetings, day events such as birthdays, and multi-day events. Also provided is the ability to have alarms for events and to specify a recurrence pattern for the event.

Status: BT

## Use Cases

- Business person

  A businessman living in London is currently in Tokyo on a business trip. He has promised his wife that he will call her at home at 7pm every night. He receives a call from a customer in New York who says "can you meet me in Los Angeles, at 11am tomorrow". Examining his schedule, he can quickly see that he will be talking with his wife at that time, and replies "No, but I can meet you for an hour in New York at 1pm".

- Socialite

  A socialite has a World Wildlife Fund meeting on the first Friday of each month, a Greenpeace meeting every two weeks on the Wednesday and Thursday nights. She is thinking of joining the National Rifle Association, which meets on the 13th of each month. She wants to know how many times in the year this will cause conflicts.

- Student

  A student enters his class schedule. The lecturer in one subject announces that she is spending the last two weeks of May on her honeymoon, that the lectures for those weeks are cancelled and that her lectures in June will each be extended by an hour. The student modifies his schedule accordingly.

- Communication

  Bob is going to a concert in a few months. He beams the details of the concert to his friend Betty who is also keen on going. (not implemented: Later, Betty looks up the concert online, adds more detail to her copy of the event, and emails the result back to Bob, who adds it into his calendar.)

## Features

- Beaming: Send and receive events via beaming.
- Recursion: Must be able to determin the pattern of user events in a defined period of time.
  - Daily - every N days.
  - Weekly - every N weeks, on days specified bye WEEKMASK
  - Monthly Day - The Xth week of every N months, X being day of week and week of the month for the first event in the series.
  - Monthly End Day - The Xth last week of every N months, X being day of week and week of the month (from end of month) for the first event in the series.
  - Monthly Date - The Xth day of the month every N months, X being the day of the month for the first event in the series.
  - Yearly Date - The Xth day of the Year every N years, X being the day of the year for the first event in the series.
  For a week mask, the mask should describe a week starting on the starting date of the series. Hence a mask of Wednesday, Saturday, Monday Should occur that Wednesday, the immidiately following Saturday, then the immidiately following Monday.
- Display: Should display information clearly, for day, week and month views. Should not show a time as blank if an event occurs in that time, and accordingly should not show an event for a time if the event does not occur during that time.
- Navigation: Should be easy and clear how to navigate between dates. Shown Date must be clear at all times.
- Alarms: Alarmed events should emit an alarm at the user specified time.
- AllDay events: These events should not be affected by time-zone changes.

## Prerequisites