The Mozilla
Organization
At A Glance
Feedback
Get Involved
Newsgroups
License Terms
Newsbot
Developer Docs
Roadmap
Projects
Ports
Module Owners
Hacking
Get the Source
Build It
Testing
Download
Bugzilla
Bug Writing
Tools
View Source
Tree Status
New Checkins
Submit A Bug
FAQ
Search

iCalendar Model Design

Last Updated: October 16, 1998.

The iCalendar Model classes represent iCalendar data.
iCalendar is the new Internet standard used to represent calendaring and scheduling data.
The iCalendar Model Specification and other related documents can be found at the Calendaring and Scheduling IETF Group.

These classes do NOT follow the XPCOM model for modularizing code.
There is an ongoing effort to modular all the classes in this module.

The code for these classes can be found the mozilla/calendar/modules/core/ical.


Classes:

There are three levels of hierarchy in iCalendar, the calendar level, the component level, and the property level.
Thus in the module, there are three level of classes:

NSCalendar

The NSCalendar class is used to contain a user's calendaring data. Typically, an NSCalendar may contain several Calendar
components (events, todos, journals, timezone, and free-busy). An NSCalendar may also contain individual properties, such as the name of the calendar.  A sample object (not class design) hierarchy of an NSCalendar may look some like this:


Calendar Components

Class Hierarchy:

The Calendar Component classes represent iCalendar components.
Components include events, todos, journals, timezones, free-busy info, and alarms.
Components contains calendar properties.  Events and Todos may also contain Alarm Components.
All classes must implement the ICalComponent interface.
(Abstract classes are italicized.)

  • ICalComponent - interface that all components must implement
  • TimeBasedEvent - an abstract class that encapsulates commonality between VEvent, VTodo and VJournal.
  • VEvent - used to describe a calendar event.  Examples of events include a block of time event, or an-all day event such as a holiday.
  • VTodo - used to todo entry or task.
  • VJournal - represents a journal entry.
  • VFreebusy - represents the free-busy information of user during a block of time.
  • VTimeZone - represents a iCalendar Timezone.
  • VAlarm - represents a notification of an event or todo.

Calendar Properties

Class Hierarchy:

The Property classes represent iCalendar properties.
For example, the starting time of an event is represented by the DTSTART Property.
Each property has a type associated with it.  Thus the Property classes have been broken down by type.
All property must implement the ICalProperty interface, which components use to communicate with.
(Abstract classes are italicized.)

  • ICalProperty - interface that all properties must implement.
  • Attendee - class used to represent the Attendee property
  • Freebusy - class used to represent the Freebusy property
  • nsCalRecurrenceID - class used to represent the Recurrence-ID property
  • StandardProperty - abstract class that encapsulates commonality between all other properties.  This class contains code to store parameters in a generic sense.
  • DateTimeProperty - class to represent a DateTime property. (i.e. DTSTART).  Subclasses StandardProperty.
  • StringProperty - class to represent a String property.  (i.e DESCRIPTION) Subclasses StandardProperty.
  • BooleanProperty - class to represent a Boolean property.  Subclasses StandardProperty.
  • DurationProperty - class to represent a Duration property (i.e. TRIGGER).  Subclasses StandardProperty.
  • PeriodProperty - class to represent a Period property.  Subclasses StandardProperty.
  • IntegerProperty - class to represent a Integer property (i.e. PRIORITY). Subclasses StandardProperty.


Author: John Sun
Last Updated: October 16, 1998.
Copyright © 1998-2000 The Mozilla Organization.
Last modified January 15, 1999.