/usr/share/idl/thunderbird/calIRecurrenceInfo.idl is in thunderbird-dev 1:52.8.0-1~deb8u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | /* 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/. */
#include "nsISupports.idl"
interface calIItemBase;
interface calIDateTime;
interface calIRecurrenceItem;
interface calIIcalProperty;
[scriptable, uuid(8ca5db89-2583-4f0c-b845-4a6d2f229efd)]
interface calIRecurrenceInfo : nsISupports
{
// returns true if this thing is able to be modified;
// if the item is not mutable, attempts to modify
// any data will throw CAL_ERROR_ITEM_IS_IMMUTABLE
readonly attribute boolean isMutable;
// makes this item immutable
void makeImmutable();
// clone always returns a mutable event
calIRecurrenceInfo clone();
// initialize this with the item for which this recurrence
// applies, so that the start date can be tracked
attribute calIItemBase item;
/**
* The start date of an item is directly referenced by parts of calIRecurrenceInfo,
* thus changing the former without adjusting the latter would break the internal structure.
* This method provides the necessary functionality. There's no need to call it manually
* after writing to the start date of an item, since it's called automatically in the
* appropriate setter of an item.
*/
void onStartDateChange(in calIDateTime aNewStartTime, in calIDateTime aOldStartTime);
/**
* If the base item's UID changes, this implicitly has to change all overridden items' UID, too.
*
* @param id new UID
*/
void onIdChange(in AUTF8String aNewId);
/*
* Set of recurrence items; the order of these matters.
*/
void getRecurrenceItems(out unsigned long aCount, [array,size_is(aCount),retval] out calIRecurrenceItem aItems);
void setRecurrenceItems(in unsigned long aCount, [array,size_is(aCount)] in calIRecurrenceItem aItems);
unsigned long countRecurrenceItems();
void clearRecurrenceItems();
void appendRecurrenceItem(in calIRecurrenceItem aItem);
calIRecurrenceItem getRecurrenceItemAt(in unsigned long aIndex);
void deleteRecurrenceItemAt(in unsigned long aIndex);
void deleteRecurrenceItem(in calIRecurrenceItem aItem);
// inserts the item at the given index, pushing the item that was previously there forward
void insertRecurrenceItemAt(in calIRecurrenceItem aItem, in unsigned long aIndex);
/**
* isFinite is true if the recurrence items specify a finite number
* of occurrences. This is useful for UI and for possibly other users.
*/
readonly attribute boolean isFinite;
/**
* This is a shortcut to appending or removing a single negative date
* assertion. aRecurrenceId needs to be a normal recurrence id, it may not be
* RDATE.
*/
void removeOccurrenceAt(in calIDateTime aRecurrenceId);
void restoreOccurrenceAt(in calIDateTime aRecurrenceId);
/*
* exceptions
*/
/**
* Modify an a particular occurrence with the given exception proxy
* item. If the recurrenceId isn't an already existing exception item,
* a new exception is added. Otherwise, the existing exception
* is modified.
*
* The item's parentItem must be equal to this RecurrenceInfo's
* item. <-- XXX check this, compare by calendar/id only
*
* @param anItem exceptional/overridden item
* @param aTakeOverOwnership whether the recurrence info object can take over
* the item or needs to clone it
*/
void modifyException(in calIItemBase anItem, in boolean aTakeOverOwnership);
/**
* Return an existing exception item for the given recurrence ID.
* If an exception does not exist, null is returned.
*/
calIItemBase getExceptionFor(in calIDateTime aRecurrenceId);
/**
* Removes an exception item for the given recurrence ID, if
* any exist.
*/
void removeExceptionFor(in calIDateTime aRecurrenceId);
/**
* Returns a list of all recurrence ids that have exceptions.
*/
void getExceptionIds(out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aIds);
/*
* Recurrence calculation
*/
/*
* Get the occurrence at the given recurrence ID; if there is no
* exception, then create a new proxy object with the normal occurrence.
* Otherwise, return the exception.
*
* @param aRecurrenceId The recurrence ID to get the occurrence for.
* @return The occurrence or exception corresponding to the id
*/
calIItemBase getOccurrenceFor(in calIDateTime aRecurrenceId);
/**
* Return the chronologically next occurrence after aTime. This takes
* exceptions and EXDATE/RDATEs into account.
*
* @param aTime The (exclusive) date to start searching.
* @return The next occurrence, or null if there is none.
*/
calIItemBase getNextOccurrence(in calIDateTime aTime);
/**
* Return the chronologically previous occurrence after aTime. This takes
* exceptions and EXDATE/RDATEs into account.
*
* @param aTime The (exclusive) date to start searching.
* @return The previous occurrence, or null if there is none.
*/
calIItemBase getPreviousOccurrence(in calIDateTime aTime);
/**
* Return an array of calIDateTime representing all start times of this event
* between start (inclusive) and end (non-inclusive). Exceptions are taken
* into account.
*
* @param aRangeStart The (inclusive) date to start searching.
* @param aRangeEnd The (exclusive) date to end searching.
* @param aMaxCount The maximum number of dates to return
*
* @param aCount The number of dates returned.
* @return The array of dates.
*/
void getOccurrenceDates(in calIDateTime aRangeStart,
in calIDateTime aRangeEnd,
in unsigned long aMaxCount,
out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aDates);
/**
* Return an array of calIItemBase representing all occurrences of this event
* between start (inclusive) and end (non-inclusive). Exceptions are taken
* into account.
*
* @param aRangeStart The (inclusive) date to start searching.
* @param aRangeEnd The (exclusive) date to end searching.
* @param aMaxCount The maximum number of occurrences to return
*
* @param aCount The number of occurrences returned.
* @return The array of occurrences.
*/
void getOccurrences(in calIDateTime aRangeStart,
in calIDateTime aRangeEnd,
in unsigned long aMaxCount,
out unsigned long aCount, [array,size_is(aCount),retval] out calIItemBase aItems);
};
|