Calendar Overview

The Calendar component provides access to calendar stores, with functionality to fetch, update, save and delete calendar entries.

Purpose and scope

Calendar provides access to calendar stores, with functionality to fetch, update, save and delete calendar entries. This functionality is as the standard RFC 2445, which defines a common format for openly exchanging calendar and scheduling information across the internet. New functionality includes: attachment support, defining geographic locations, logging, expanded search capabilities and support for removable media.

Architectural relationship

The Calendar component uses the Alarm server and TZ (time zone converter) components and merges CalInterimApi and AgnModel.

Calendar is a single component that contains: Agenda Server, AgnModel and CalInterimAPI. CalInterimAPI contains classes that hold information about calendar entries. AgnModel is a DLL which is shared across the client and the server. Agenda Server provides calendar file management on behalf of all clients.

Calendar's implementation of import and export behaviour is done using the AgnVersit2 plug-in.

Figure 1. Calendar dependencies


This document describes the following key areas:

The Calendar Server

The Calendar Server manipulates calendar files and connects to the client when single or multiple sessions ( CCalSession ) are instantiated.

Calendar entries

A calendar entry , class CCalEntry , can be an appointment, a to-do item, an event, a reminder, or an anniversary. It contains repeat definition and synchronisation information as well as group scheduling data.

Calendar views

The API provides the following views for accessing the calendar:

Entry view

CCalEntryView allows accessing and manipulating calendar entries. For example, you can add, delete update and search for a calendar entry,

Instance view

CCalInstanceView allows individual instance(s) that are generated from an entry to be accessed and deleted.

Calendar user

CCalUser represents a calendar user , such as a meeting participant. The class provides attributes and methods that are common to all the calendar users, including the user’s email address, sent-by and common name fields.

Setting the Repeat Rule

Setting the repeat rule allows events to occur regularly at specified intervals.

Setting the alarm

Within a calendar entry CCalAlarm allows you to set an alarm of a specific type.

Categorising an entry

Categorisation of calendar entries can be done using built-in or user-defined types.

Importing and Exporting Entries

This API enables calendar entries to be exported and imported to and from a specific data format.

Callback interfaces

The API uses two types of callback interfaces : change notifications, and progress/completion notifications. Change notifications monitor changes to calendar entries. Progress/completion notifications monitor the progress and completion of asynchronous tasks.

Attachment support

Calendar provides the ability to associate an object with a calendar entry. An attachment can be a URI reference, a file or binary data.

Removable media support

Creates, modifies and deletes calendar files on removable media .

GEO property

The GEO property represents the geographical location of a calendar entry.

TRANSP property

The TRANSP property indicates whether an entry 'blocks' a calendar busy view.

iCalendar and vCalendar properties

Lists the properties in iCalendar and vCalendar that Calendar supports using the AgnVersit2 plug-in. Also details the import and export of time properties.

Expanded search capabilities

These offer the ability to search all text fields, to search entries within a given time frame, and to return results in an iterator class.

Adding a user-defined 32-bit field

Calendar entries now allows for creation of a user-defined 32-bit field . The value of the field is defined by the vendor. Field creation, storage and access are carried out by APIs within the CCalEntry class.