1 /*
2  * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
3  *
4  * This library is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11  * for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors: Federico Mena-Quintero <federico@ximian.com>
17  *          JP Rosevear <jpr@ximian.com>
18  */
19 
20 #if !defined (__LIBECAL_H_INSIDE__) && !defined (LIBECAL_COMPILATION)
21 #error "Only <libecal/libecal.h> should be included directly."
22 #endif
23 
24 #ifndef E_CAL_ENUMS_H
25 #define E_CAL_ENUMS_H
26 
27 G_BEGIN_DECLS
28 
29 /**
30  * ECalClientSourceType:
31  * @E_CAL_CLIENT_SOURCE_TYPE_EVENTS: Events calander
32  * @E_CAL_CLIENT_SOURCE_TYPE_TASKS: Task list calendar
33  * @E_CAL_CLIENT_SOURCE_TYPE_MEMOS: Memo list calendar
34  * @E_CAL_CLIENT_SOURCE_TYPE_LAST: Artificial 'last' value of the enum
35  *
36  * Indicates the type of calendar
37  *
38  * Since: 3.2
39  **/
40 typedef enum {
41 	E_CAL_CLIENT_SOURCE_TYPE_EVENTS,
42 	E_CAL_CLIENT_SOURCE_TYPE_TASKS,
43 	E_CAL_CLIENT_SOURCE_TYPE_MEMOS,
44 	E_CAL_CLIENT_SOURCE_TYPE_LAST  /*< skip >*/
45 } ECalClientSourceType;
46 
47 /**
48  * ECalObjModType:
49  * @E_CAL_OBJ_MOD_THIS: Modify this component
50  * @E_CAL_OBJ_MOD_THIS_AND_PRIOR: Modify this component and all prior occurrances
51  * @E_CAL_OBJ_MOD_THIS_AND_FUTURE: Modify this component and all future occurrances
52  * @E_CAL_OBJ_MOD_ALL: Modify all occurrances of this component
53  * @E_CAL_OBJ_MOD_ONLY_THIS: Modify only this component
54  *
55  * Indicates the type of modification made to a calendar
56  *
57  * Since: 3.8
58  **/
59 typedef enum {
60 	E_CAL_OBJ_MOD_THIS = 1 << 0,
61 	E_CAL_OBJ_MOD_THIS_AND_PRIOR = 1 << 1,
62 	E_CAL_OBJ_MOD_THIS_AND_FUTURE = 1 << 2,
63 	E_CAL_OBJ_MOD_ALL = 0x07,
64 	E_CAL_OBJ_MOD_ONLY_THIS = 1 << 3
65 } ECalObjModType;
66 
67 /**
68  * ECalComponentVType:
69  * @E_CAL_COMPONENT_NO_TYPE: Unknown or unsupported component type
70  * @E_CAL_COMPONENT_EVENT: vEvent type
71  * @E_CAL_COMPONENT_TODO: vTodo type
72  * @E_CAL_COMPONENT_JOURNAL: vJournal type
73  * @E_CAL_COMPONENT_FREEBUSY: vFreeBusy type
74  * @E_CAL_COMPONENT_TIMEZONE: vTimezone type
75  *
76  * Types of calendar components to be stored by a ECalComponent, as per RFC 2445.
77  * We don't put the alarm component type here since we store alarms as separate
78  * structures inside the other "real" components.
79  **/
80 typedef enum {
81 	E_CAL_COMPONENT_NO_TYPE,
82 	E_CAL_COMPONENT_EVENT,
83 	E_CAL_COMPONENT_TODO,
84 	E_CAL_COMPONENT_JOURNAL,
85 	E_CAL_COMPONENT_FREEBUSY,
86 	E_CAL_COMPONENT_TIMEZONE
87 } ECalComponentVType;
88 
89 /**
90  * ECalComponentClassification:
91  * @E_CAL_COMPONENT_CLASS_NONE: None
92  * @E_CAL_COMPONENT_CLASS_PUBLIC: Public
93  * @E_CAL_COMPONENT_CLASS_PRIVATE: Private
94  * @E_CAL_COMPONENT_CLASS_CONFIDENTIAL: Confidential
95  * @E_CAL_COMPONENT_CLASS_UNKNOWN: Unknown
96  *
97  * CLASSIFICATION property
98  **/
99 typedef enum {
100 	E_CAL_COMPONENT_CLASS_NONE,
101 	E_CAL_COMPONENT_CLASS_PUBLIC,
102 	E_CAL_COMPONENT_CLASS_PRIVATE,
103 	E_CAL_COMPONENT_CLASS_CONFIDENTIAL,
104 	E_CAL_COMPONENT_CLASS_UNKNOWN
105 } ECalComponentClassification;
106 
107 /**
108  * ECalComponentPeriodKind:
109  * @E_CAL_COMPONENT_PERIOD_DATETIME: Date and time
110  * @E_CAL_COMPONENT_PERIOD_DURATION: Duration
111  *
112  * Way in which a period of time is specified
113  **/
114 typedef enum {
115 	E_CAL_COMPONENT_PERIOD_DATETIME,
116 	E_CAL_COMPONENT_PERIOD_DURATION
117 } ECalComponentPeriodKind;
118 
119 /**
120  * ECalComponentRangeKind:
121  * @E_CAL_COMPONENT_RANGE_SINGLE: Single
122  * @E_CAL_COMPONENT_RANGE_THISPRIOR: This and prior
123  * @E_CAL_COMPONENT_RANGE_THISFUTURE: This and future
124  *
125  * The kind of range
126  **/
127 typedef enum {
128 	E_CAL_COMPONENT_RANGE_SINGLE,
129 	E_CAL_COMPONENT_RANGE_THISPRIOR,
130 	E_CAL_COMPONENT_RANGE_THISFUTURE
131 } ECalComponentRangeKind;
132 
133 /**
134  * ECalComponentTransparency:
135  * @E_CAL_COMPONENT_TRANSP_NONE: None
136  * @E_CAL_COMPONENT_TRANSP_TRANSPARENT: Transparent
137  * @E_CAL_COMPONENT_TRANSP_OPAQUE: Opaque
138  * @E_CAL_COMPONENT_TRANSP_UNKNOWN: Unknown
139  *
140  * Time transparency
141  **/
142 typedef enum {
143 	E_CAL_COMPONENT_TRANSP_NONE,
144 	E_CAL_COMPONENT_TRANSP_TRANSPARENT,
145 	E_CAL_COMPONENT_TRANSP_OPAQUE,
146 	E_CAL_COMPONENT_TRANSP_UNKNOWN
147 } ECalComponentTransparency;
148 
149 /**
150  * ECalComponentAlarmAction:
151  * @E_CAL_COMPONENT_ALARM_NONE: None
152  * @E_CAL_COMPONENT_ALARM_AUDIO: Audio
153  * @E_CAL_COMPONENT_ALARM_DISPLAY: Display message
154  * @E_CAL_COMPONENT_ALARM_EMAIL: Email
155  * @E_CAL_COMPONENT_ALARM_PROCEDURE: Procedure
156  * @E_CAL_COMPONENT_ALARM_UNKNOWN: Unknown
157  *
158  * Alarm types
159  **/
160 typedef enum {
161 	E_CAL_COMPONENT_ALARM_NONE,
162 	E_CAL_COMPONENT_ALARM_AUDIO,
163 	E_CAL_COMPONENT_ALARM_DISPLAY,
164 	E_CAL_COMPONENT_ALARM_EMAIL,
165 	E_CAL_COMPONENT_ALARM_PROCEDURE,
166 	E_CAL_COMPONENT_ALARM_UNKNOWN
167 } ECalComponentAlarmAction;
168 
169 /**
170  * ECalComponentAlarmTriggerkind:
171  * @E_CAL_COMPONENT_ALARM_TRIGGER_NONE: None
172  * @E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START: Relative to the start
173  * @E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_END: Relative to the end
174  * @E_CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE: Absolute
175  *
176  * Whether a trigger is relative to the start or end of an event occurrence, or
177  * whether it is specified to occur at an absolute time.
178  */
179 typedef enum {
180 	E_CAL_COMPONENT_ALARM_TRIGGER_NONE,
181 	E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START,
182 	E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_END,
183 	E_CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE
184 } ECalComponentAlarmTriggerKind;
185 
186 /**
187  * ECalRecurDescribeRecurrenceFlags:
188  * @E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_NONE: no extra flags, either returns %NULL or the recurrence description,
189  *    something like "Every 2 weeks..."
190  * @E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_PREFIXED: either returns %NULL or the recurrence description prefixed
191  *    with text like "The meeting recurs", forming something like "The meeting recurs every 2 weeks..."
192  * @E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_FALLBACK: returns %NULL only if the component doesn't recur,
193  *    otherwise returns either the recurrence description or at least text like "The meeting recurs"
194  *
195  * Influences behaviour of e_cal_recur_describe_recurrence().
196  *
197  * Since: 3.30
198  **/
199 typedef enum { /*< flags >*/
200 	E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_NONE	= 0,
201 	E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_PREFIXED	= (1 << 0),
202 	E_CAL_RECUR_DESCRIBE_RECURRENCE_FLAG_FALLBACK	= (1 << 1)
203 } ECalRecurDescribeRecurrenceFlags;
204 
205 /**
206  * ECalOperationFlags:
207  * @E_CAL_OPERATION_FLAG_NONE: no operation flags defined
208  * @E_CAL_OPERATION_FLAG_CONFLICT_FAIL: conflict resolution mode, to fail and do not
209  *    do any changes, when a conflict is detected
210  * @E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER: conflict resolution mode, to use newer
211  *    of the local and the server side data, when a conflict is detected
212  * @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER: conflict resolution mode, to use
213  *    the server data (and local changed), when a conflict is detected
214  * @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL: conflict resolution mode, to use
215  *    local data (and always overwrite server data), when a conflict is detected
216  * @E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY: conflict resolution mode, to create
217  *    a copy of the data, when a conflict is detected
218  * @E_CAL_OPERATION_FLAG_DISABLE_ITIP_MESSAGE: request to disable send of an iTip
219  *    message by the server; this works only for servers which support iTip handling
220  *
221  * Calendar operation flags, to specify behavior in certain situations. The conflict
222  * resolution mode flags cannot be combined together, where the @E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL
223  * is the default behavior (and it is used when no other conflict resolution flag is set).
224  * The flags can be ignored when the operation or the backend don't support it.
225  *
226  * Since: 3.34
227  **/
228 typedef enum { /*< flags >*/
229 	E_CAL_OPERATION_FLAG_NONE			= 0,
230 	E_CAL_OPERATION_FLAG_CONFLICT_FAIL		= (1 << 0),
231 	E_CAL_OPERATION_FLAG_CONFLICT_USE_NEWER		= (1 << 1),
232 	E_CAL_OPERATION_FLAG_CONFLICT_KEEP_SERVER	= (1 << 2),
233 	E_CAL_OPERATION_FLAG_CONFLICT_KEEP_LOCAL	= 0,
234 	E_CAL_OPERATION_FLAG_CONFLICT_WRITE_COPY	= (1 << 3),
235 	E_CAL_OPERATION_FLAG_DISABLE_ITIP_MESSAGE	= (1 << 4)
236 } ECalOperationFlags;
237 
238 G_END_DECLS
239 
240 #endif /* E_CAL_ENUMS_H */
241