The Mozilla
Organization
Our Mission
Who We Are
Getting Involved
Community
Editorials
What's New
Newsbot
Development
Roadmap
Module Owners
Blue Sky
Projects
Status
Tools
Products
Source Code
Binaries
Documentation
License Terms
Bug Reports
Quality
Search
Feedback

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-1999 The Mozilla Organization.