diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/calendar/base/public/calIICSService.idl | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/calendar/base/public/calIICSService.idl')
-rw-r--r-- | comm/calendar/base/public/calIICSService.idl | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/comm/calendar/base/public/calIICSService.idl b/comm/calendar/base/public/calIICSService.idl new file mode 100644 index 0000000000..46d5f90320 --- /dev/null +++ b/comm/calendar/base/public/calIICSService.idl @@ -0,0 +1,242 @@ +/* -*- Mode: idl; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// XXX use strings for kind values instead of enumerated constants? + + +#include "nsISupports.idl" + +interface calIItemBase; +interface calIDateTime; +interface calIDuration; +interface calITimezone; + +interface calIIcalProperty; +interface nsIInputStream; + +/** + * General notes: + * + * As with libical, use of getNextFoo(footype) is only valid if there have been + * no intervening getNextFoo(otherfootype)s, or removeFoo()s, or addFoo()s. In + * general, you want to do as little manipulation of your FooContainers as + * possible while iterating over them. + */ +[scriptable,uuid(59132cf2-e48c-4807-ab53-779f414a7fbc)] +interface calIIcalComponent : nsISupports +{ + /** + * The parent ical property + */ + readonly attribute calIIcalComponent parent; + + /** + * Access to the inner ical.js objects. Only use these if you know what you + * are doing. + */ + attribute jsval icalComponent; + attribute jsval icalTimezone; + + /** + * This is the value that an integer-valued getter will provide if + * there is no such property on the wrapped ical structure. + */ + const int32_t INVALID_VALUE = -1; + + /** + * @param kind ANY, XROOT, VCALENDAR, VEVENT, etc. + */ + calIIcalComponent getFirstSubcomponent(in AUTF8String componentType); + calIIcalComponent getNextSubcomponent(in AUTF8String componentType); + + readonly attribute AUTF8String componentType; + + attribute AUTF8String uid; + attribute AUTF8String prodid; + attribute AUTF8String version; + + /** + * PUBLISH, REQUEST, REPLY, etc. + */ + attribute AUTF8String method; + + /** + * TENTATIVE, CONFIRMED, CANCELLED, etc. + */ + attribute AUTF8String status; + + attribute AUTF8String summary; + attribute AUTF8String description; + attribute AUTF8String location; + attribute AUTF8String categories; + attribute AUTF8String URL; + + attribute int32_t priority; + + attribute calIDateTime startTime; + attribute calIDateTime endTime; + readonly attribute calIDuration duration; + attribute calIDateTime dueTime; + attribute calIDateTime stampTime; + + attribute calIDateTime createdTime; + attribute calIDateTime completedTime; + attribute calIDateTime lastModified; + + /** + * The recurrence ID, a.k.a. DTSTART-of-calculated-occurrence, + * or null if this isn't an occurrence. + */ + attribute calIDateTime recurrenceId; + + AUTF8String serializeToICS(); + + /** + * Return a string representation of this instance. + */ + AUTF8String toString(); + + /** + * Serializes this component (and subcomponents) directly to an + * input stream. Typically used for performance to avoid + * unnecessary conversions and XPConnect traversals. + * + * @result an input stream which can be read to get the serialized + * version of this component, encoded in UTF-8. Implements + * nsISeekableStream so that it can be used with + * nsIUploadChannel. + */ + nsIInputStream serializeToICSStream(); + + void addSubcomponent(in calIIcalComponent comp); +// If you add then remove a property/component, the referenced +// timezones won't get purged out. There's currently no client code. +// void removeSubcomponent(in calIIcalComponent comp); + + /** + * @param kind ANY, ATTENDEE, X-WHATEVER, etc. + */ + calIIcalProperty getFirstProperty(in AUTF8String kind); + calIIcalProperty getNextProperty(in AUTF8String kind); + void addProperty(in calIIcalProperty prop); +// If you add then remove a property/component, the referenced +// timezones won't get purged out. There's currently no client code. +// void removeProperty(in calIIcalProperty prop); + + /** + * Timezones need special handling, as they must be + * emitted as children of VCALENDAR, but can be referenced by + * any sub component. + * Adding a second timezone (of the same TZID) will remove the + * first one. + */ + void addTimezoneReference(in calITimezone aTimezone); + + /** + * Returns an array of VTIMEZONE components. + * These are the timezones that are in use by this + * component and its children. + */ + Array<calITimezone> getReferencedTimezones(); + + /** + * Clones the component. The cloned component is decoupled from any parent. + * @return cloned component + */ + calIIcalComponent clone(); +}; + +[scriptable,uuid(5b13a69c-53d3-44a0-9203-f89f7e5e1604)] +interface calIIcalProperty : nsISupports +{ + /** + * The whole property as an ical string. + * @exception Any error will be thrown as an calIError::ICS_ error. + */ + readonly attribute AUTF8String icalString; + + /** + * Access to the inner ical.js objects. Only use these if you know what you + * are doing. + */ + attribute jsval icalProperty; + + /** + * The parent component containing this property + */ + readonly attribute calIIcalComponent parent; + + /** + * Return a string representation of this instance. + */ + AUTF8String toString(); + + /** + * The value of the property as string. + * The exception for properties of TEXT or X- type, those will be unescaped + * when getting, and also expects an unescaped string when setting. + * Datetime, numeric and other non-text types are represented as ical string + */ + attribute AUTF8String value; + + /** + * The value of the property in (escaped) ical format. + */ + attribute AUTF8String valueAsIcalString; + + /** + * The value of the property as date/datetime value, keeping + * track of the used timezone referenced in the owning component. + */ + attribute calIDateTime valueAsDatetime; + + // XXX attribute AUTF8String stringValueWithParams; ? + readonly attribute AUTF8String propertyName; + + AUTF8String getParameter(in AUTF8String paramname); + void setParameter(in AUTF8String paramname, in AUTF8String paramval); + + AUTF8String getFirstParameterName(); + AUTF8String getNextParameterName(); + + void removeParameter(in AUTF8String paramname); + void clearXParameters(); +}; + +[scriptable,uuid(eda9565f-f9bb-4846-b134-1e0653b2e767)] +interface calIIcsComponentParsingListener : nsISupports +{ + /** + * Called when the parsing has completed. + * + * @param rc The result code of parsing + * @param rootComp The root ical component that was parsed + */ + void onParsingComplete(in nsresult rc, in calIIcalComponent rootComp); +}; + +[scriptable,uuid(31e7636b-5a64-4d15-bc60-67b67cd85176)] +interface calIICSService : nsISupports +{ + /** + * Parse an ICS string into components. + * + * @param serialized an ICS string + */ + calIIcalComponent parseICS(in AUTF8String serialized); + + /** + * Asynchronously parse an ICS string into components. + * + * @param serialized an ICS string + * @param listener The listener that notifies the root component + */ + void parseICSAsync(in AUTF8String serialized, + in calIIcsComponentParsingListener listener); + + calIIcalComponent createIcalComponent(in AUTF8String kind); + calIIcalProperty createIcalProperty(in AUTF8String kind); + calIIcalProperty createIcalPropertyFromString(in AUTF8String str); +}; |