summaryrefslogtreecommitdiffstats
path: root/comm/calendar/base/public/calIAlarm.idl
blob: 4fe5f9c945dbf6e06f5ebeadee30df4a8a995276 (plain)
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
/* 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 nsIVariant;

interface calIAttachment;
interface calIAttendee;
interface calIDateTime;
interface calIDuration;
interface calIItemBase;
interface calIIcalComponent;

[scriptable, uuid(b8db7c7f-c168-4e11-becb-f26c1c4f5f8f)]
interface calIAlarm : nsISupports
{
    /**
     * Returns true if this alarm is able to be modified
     */
    readonly attribute boolean isMutable;

    /**
     * Makes this alarm immutable.
     */
    void makeImmutable();

    /**
     * Make a copy of this alarm. The returned alarm will be mutable.
     */
    calIAlarm clone();

    /**
     * How this alarm is shown. Special values as described in rfc2445 are
     * AUDIO, DISPLAY, EMAIL
     * In addition, custom actions may be defined as an X-Prop, i.e
     * X-SMS.
     *
     * Note that aside from setting this action, the frontend must be able to
     * handle the specified action. Unknown actions WILL NOT be notified for.
     */
    attribute AUTF8String action;

    /**
     * The offset between the item's date and the alarm time.
     * This will be null for absolute alarms.
     */
    attribute calIDuration offset;

    /**
     * The absolute date and time the alarm should fire.
     * This will be null for relative alarms.
     */
    attribute calIDateTime alarmDate;

    /**
     * One of the ALARM_RELATED constants below.
     */
    attribute unsigned long related;

    /**
     * The alarm is absolute and is therefore not related to either.
     */
    const unsigned long ALARM_RELATED_ABSOLUTE = 0;

    /**
     * The alarm's offset should be based off of the startDate or
     * entryDate (for events and tasks, respectively)
     */
    const unsigned long ALARM_RELATED_START = 1;

    /**
     * the alarm's offset should be based off of the endDate or
     * dueDate (for events and tasks, respectively)
     */
    const unsigned long ALARM_RELATED_END = 2;

    /**
     * Times the alarm should be repeated. This value is the number of
     * ADDITIONAL alarms, aside from the actual alarm.
     *
     * For the alarm to be valid, if repeat is specified, the repeatOffset
     * attribute MUST also be specified.
     */
    attribute unsigned long repeat;

    /**
     * The duration between the alarm and each subsequent repeat
     *
     * For the alarm to be valid, if repeatOffset is specified, the repeat
     * attribute MUST also be specified.
     */
    attribute calIDuration repeatOffset;

    /**
     * If repeat is specified, this helper returns the first DATETIME the alarm
     * should be repeated on.
     * This will be null for relative alarms.
     */
    readonly attribute calIDateTime repeatDate;

    /**
     * The description of the alarm. Not valid for AUDIO alarms.
     */
    attribute AUTF8String description;

    /**
     * The summary of the alarm. Not valid for AUDIO and DISPLAY alarms.
     */
    attribute AUTF8String summary;

    /**
     * Manage Attendee for this alarm. Not valid for AUDIO and DISPLAY alarms.
     */
     void addAttendee(in calIAttendee aAttendee);
     void deleteAttendee(in calIAttendee aAttendee);
     void clearAttendees();
     Array<calIAttendee> getAttendees();

    /**
     * Manage Attachments for this alarm.
     * For EMAIL alarms, more than one attachment can be specified.
     * For AUDIO alarms, one Attachment can be specified.
     * For DISPLAY alarms, attachments are invalid.
     */
     void addAttachment(in calIAttachment aAttachment);
     void deleteAttachment(in calIAttachment aAttachment);
     void clearAttachments();
     Array<calIAttachment> getAttachments();

    /**
     * The human readable representation of this alarm. Uses locale strings.
     *
     * @param aItem     The item to base the string on. Defaults to an event.
     */
    AUTF8String toString([optional] in calIItemBase aItem);

    /**
     * The ical representation of this VALARM
     */
    attribute AUTF8String icalString;

    /**
     * The ical component of this VALARM
     */
    attribute calIIcalComponent icalComponent;

    // Property bag
    boolean hasProperty(in AUTF8String name);
    nsIVariant getProperty(in AUTF8String name);
    void setProperty(in AUTF8String name, in nsIVariant value);
    void deleteProperty(in AUTF8String name);

    // Each inner array has two elements: a string and a nsIVariant.
    readonly attribute Array<Array<jsval> > properties;
};