1 <!-- vCalendar with VTODO and VEVENT variants -->
2 <mimeprofile name="vCalendar" fieldlist="calendar">
4 <vtimezonegenmode>current</vtimezonegenmode>
5 <tzidgenmode>olson</tzidgenmode>
7 <profile name="VCALENDAR" nummandatory="1">
9 <property name="VERSION" mandatory="yes">
10 <value conversion="version"/>
13 <property onlyformode="standard" name="PRODID" mandatory="no">
14 <value conversion="prodid"/>
17 <property onlyformode="old" name="TZ" filter="false" suppressempty="yes">
18 <value field="DTSTART" conversion="tz"/>
21 <property onlyformode="old" name="DAYLIGHT" mode="daylight" filter="false" suppressempty="yes">
22 <value field="DTSTART" conversion="daylight"/>
25 <property name="GEO" values="2" suppressempty="yes" onlyformode="old" valueseparator=",">
26 <!-- LON,LAT in vCalendar 1.0 -->
27 <value index="0" field="GEO_LAT"/>
28 <value index="1" field="GEO_LONG"/>
31 <subprofile onlyformode="standard" name="VTIMEZONE" mode="vtimezones"/>
33 <!-- sub-profile for tasks -->
34 <subprofile name="VTODO" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="0">
36 <property name="LAST-MODIFIED" suppressempty="yes">
37 <value field="DMODIFIED"/>
40 <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
41 <value field="DGENERATED"/>
44 <property name="DCREATED" suppressempty="yes" onlyformode="old">
45 <value field="DCREATED"/>
47 <property name="CREATED" suppressempty="yes" onlyformode="standard">
48 <value field="DCREATED"/>
51 <property name="UID" suppressempty="yes">
55 <property name="SEQUENCE" suppressempty="yes">
56 <value field="SEQNO"/>
59 <property name="GEO" values="2" suppressempty="yes" onlyformode="standard" valueseparator=";">
60 <!-- LAT;LON in iCalendar 2.0 -->
61 <value index="0" field="GEO_LONG"/>
62 <value index="1" field="GEO_LAT"/>
65 <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
66 <value field="CATEGORIES" />
67 <position field="CATEGORIES" repeat="array" minshow="0"/>
70 <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
71 <value field="CATEGORIES" />
72 <position field="CATEGORIES" repeat="array" minshow="0"/>
75 <property name="CLASS" suppressempty="yes">
77 <enum name="PUBLIC" value="0"/>
78 <enum name="PRIVATE" value="1"/>
79 <enum name="CONFIDENTIAL" value="2"/>
83 <property name="SUMMARY" mandatory="yes">
84 <value field="SUMMARY"/>
87 <!-- DESCRIPTION is an optional property and libical does not like
88 empty properties, so suppress it here. However, in the scripts
89 we ensure that the DESCRIPTION field should never be empty. -->
90 <property name="DESCRIPTION" suppressempty="yes" mandatory="no">
91 <value field="DESCRIPTION"/>
94 <property name="LOCATION" suppressempty="yes" mandatory="no">
95 <value field="LOCATION"/>
98 <property name="URL" suppressempty="yes" mandatory="no">
102 <property name="DTSTART" suppressempty="yes" delayedparsing="1">
103 <value field="DTSTART" conversion="autodate"/>
104 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
105 <value field="DTSTART" conversion="TZID"/>
107 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
108 <value field="DTSTART" conversion="VALUETYPE"/>
112 <property name="COMPLETED" suppressempty="yes" delayedparsing="1">
113 <value field="COMPLETED" conversion="autoenddate"/>
114 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
115 <value field="COMPLETED" conversion="TZID"/>
117 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
118 <value field="COMPLETED" conversion="VALUETYPE"/>
122 <property name="DUE" suppressempty="yes" delayedparsing="1">
123 <value field="DUE" conversion="autodate"/>
124 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
125 <value field="DUE" conversion="TZID"/>
127 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
128 <value field="DUE" conversion="VALUETYPE"/>
132 <property name="PRIORITY" suppressempty="yes">
133 <value field="PRIORITY"/>
136 <property name="STATUS" onlyformode="standard" suppressempty="yes">
137 <value field="STATUS" conversion="emptyonly">
138 <enum name="COMPLETED" value="0"/>
139 <enum name="NEEDS-ACTION" value="1"/>
140 <enum name="IN-PROCESS" value="2"/>
141 <enum name="CANCELLED" value="3"/>
142 <enum name="ACCEPTED" value="4"/>
143 <enum name="TENTATIVE" value="5"/>
144 <enum name="DELEGATED" value="6"/>
145 <enum name="DECLINED" value="7"/>
146 <enum name="SENT" value="8"/>
147 <enum name="CONFIRMED" value="9"/>
148 <enum name="DRAFT" value="10"/>
149 <enum name="FINAL" value="11"/>
153 <property name="STATUS" onlyformode="old" suppressempty="yes">
154 <value field="STATUS" conversion="emptyonly">
155 <enum name="COMPLETED" value="0"/>
156 <enum name="NEEDS ACTION" value="1"/>
157 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
158 <enum name="IN PROCESS" value="2"/>
159 <enum name="CANCELLED" value="3"/>
160 <enum name="ACCEPTED" value="4"/>
161 <enum name="TENTATIVE" value="5"/>
162 <enum name="DELEGATED" value="6"/>
163 <enum name="DECLINED" value="7"/>
164 <enum name="SENT" value="8"/>
165 <enum name="CONFIRMED" value="9"/>
166 <enum name="DRAFT" value="10"/>
167 <enum name="FINAL" value="11"/>
171 <property name="PERCENT-COMPLETE" onlyformode="standard" suppressempty="yes">
172 <value field="PERCENT_COMPLETE"/>
175 <!-- AALARM and DALARM both use the same fields -->
176 <property name="AALARM" onlyformode="old" values="4" suppressempty="yes">
177 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
178 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
179 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
180 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
182 <property name="DALARM" onlyformode="old" values="4" suppressempty="yes">
183 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
184 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
185 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
186 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
189 <subprofile onlyformode="standard" name="VALARM" nummandatory="1" field="ALARM_TIME">
190 <property name="TRIGGER" suppressempty="no" mandatory="yes">
191 <value field="ALARM_TIME"/>
192 <parameter name="VALUE" default="no" show="yes">
193 <value field="ALARM_TIME" conversion="FULLVALUETYPE"/>
195 <parameter name="RELATED" default="no" show="yes">
196 <value field="ALARM_REL">
197 <enum mode="ignore" value="0"/>
198 <enum name="START" value="1"/>
199 <enum name="END" value="2"/>
203 <property name="ACTION" suppressempty="yes" mandatory="yes">
204 <value field="ALARM_ACTION"/>
206 <property name="DESCRIPTION" suppressempty="yes">
207 <value field="ALARM_MSG"/>
209 <property name="REPEAT" suppressempty="yes">
210 <value field="ALARM_REPEAT"/>
212 <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
213 <value field="ALARM_UID"/>
217 <property onlyformode="old" name="RELATED-TO" suppressempty="yes">
218 <value field="PARENT_UID"/>
221 <property onlyformode="standard" name="RELATED-TO" suppressempty="yes">
222 <value field="PARENT_UID"/>
223 <parameter onlyformode="standard" name="RELTYPE" default="no" positional="yes" show="yes">
225 <enum name="PARENT"/>
226 <enum mode="defaultvalue" name="other"/>
228 <position hasnot="other" shows="PARENT" field="PARENT_UID"/>
234 <!-- sub-profile for event -->
235 <subprofile name="VEVENT" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="1">
237 <property name="STATUS" suppressempty="yes" onlyformode="old">
238 <value field="STATUS" conversion="emptyonly">
239 <enum name="COMPLETED" value="0"/>
240 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
241 <enum name="NEEDS ACTION" value="1"/>
242 <enum name="CANCELLED" value="3"/>
243 <enum name="ACCEPTED" value="4"/>
244 <enum name="TENTATIVE" value="5"/>
245 <enum name="DELEGATED" value="6"/>
246 <enum name="DECLINED" value="7"/>
247 <enum name="SENT" value="8"/>
248 <enum name="CONFIRMED" value="9"/>
249 <enum name="FINAL" value="11"/>
253 <property name="STATUS" suppressempty="yes" onlyformode="standard">
254 <value field="STATUS" conversion="emptyonly">
255 <enum name="CANCELLED" value="3"/>
256 <enum name="TENTATIVE" value="5"/>
257 <enum name="CONFIRMED" value="9"/>
261 <property name="LAST-MODIFIED" suppressempty="yes">
262 <value field="DMODIFIED"/>
265 <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
266 <value field="DGENERATED"/>
269 <property name="DCREATED" suppressempty="yes" onlyformode="old">
270 <value field="DCREATED"/>
272 <property name="CREATED" suppressempty="yes" onlyformode="standard">
273 <value field="DCREATED"/>
277 <property name="UID" suppressempty="yes">
281 <property name="SEQUENCE" suppressempty="yes">
282 <value field="SEQNO"/>
285 <property name="GEO" values="2" suppressempty="yes" onlyformode="standard" valueseparator=";">
286 <!-- LAT;LON in iCalendar 2.0 -->
287 <value index="0" field="GEO_LONG"/>
288 <value index="1" field="GEO_LAT"/>
291 <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
292 <value field="CATEGORIES" />
293 <position field="CATEGORIES" repeat="array" minshow="0"/>
296 <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
297 <value field="CATEGORIES" />
298 <position field="CATEGORIES" repeat="array" minshow="0"/>
301 <property name="CLASS" suppressempty="yes">
302 <value field="CLASS">
303 <enum name="PUBLIC" value="0"/>
304 <enum name="PRIVATE" value="1"/>
305 <enum name="CONFIDENTIAL" value="2"/>
310 <property name="TRANSP" suppressempty="yes" onlyformode="standard">
311 <value field="TRANSP">
312 <enum name="OPAQUE" value="0"/>
313 <enum name="TRANSPARENT" value="1"/>
314 <enum name="TENTATIVE" value="2"/> <!-- according to Oracle de facto usage in vCalendar 1.0 -->
315 <enum name="OUT_OF_OFFICE" value="3"/> <!-- according to Oracle de facto usage in vCalendar 1.0 -->
316 <enum mode="defaultvalue" value="0"/>
319 <property name="TRANSP" suppressempty="yes" onlyformode="old">
320 <value field="TRANSP"/> <!-- directly numeric in vCalendar 1.0 -->
324 <property name="PRIORITY" suppressempty="yes">
325 <value field="PRIORITY"/>
328 <property name="SUMMARY" mandatory="yes">
329 <value field="SUMMARY"/>
332 <!-- DESCRIPTION is an optional property and libical does not like
333 empty properties, so suppress it here. However, in the scripts
334 we ensure that the DESCRIPTION field should never be empty. -->
335 <property name="DESCRIPTION" suppressempty="yes" mandatory="no">
336 <value field="DESCRIPTION"/>
339 <property name="LOCATION" suppressempty="yes" mandatory="no">
340 <value field="LOCATION"/>
343 <property name="DTSTART" suppressempty="yes" delayedparsing="1">
344 <value field="DTSTART" conversion="autodate"/>
345 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
346 <value field="DTSTART" conversion="TZID"/>
348 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
349 <value field="DTSTART" conversion="VALUETYPE"/>
353 <!-- recurrence rule (with delayed parsing, as it is dependent on DTSTART) -->
354 <property name="RRULE" suppressempty="yes" delayedparsing="2">
355 <!-- Note: RR_FREQ is the beginning of a block of fields
356 suitable for the "rrule" conversion mode -->
357 <value field="RR_FREQ" conversion="rrule"/>
360 <!-- Symbian uses this, so it might make the client work with symbian-prepared servers better -->
361 <property name="X-RECURRENCE-ID" suppressempty="yes" onlyformode="old">
362 <value field="ORIGSTART" conversion="autodate"/>
365 <property name="RECURRENCE-ID" suppressempty="yes" onlyformode="standard" delayedparsing="1">
366 <value field="ORIGSTART" conversion="autodate"/>
367 <parameter name="TZID" default="no" show="yes">
368 <value field="ORIGSTART" conversion="TZID"/>
370 <parameter name="VALUE" default="no" show="yes">
371 <value field="ORIGSTART" conversion="VALUETYPE"/>
375 <!-- ScheduleWorld has a problem (bugzilla.moblin.org #2226)
376 with the EXDATE:value1,value2 format (correct in iCalendar 2.0):
377 as a workaround, accept all valid formats plus ; but
378 generate separate properties with one value each. -->
379 <property name="EXDATE" values="expandedlist" suppressempty="yes" onlyformode="standard" delayedparsing="1" valueseparator="," altvalueseparator=";">
380 <value field="EXDATES"/>
381 <position field="EXDATES" repeat="array" increment="1" minshow="0"/>
382 <parameter name="TZID" default="no" show="yes">
383 <value field="EXDATES" conversion="TZID"/>
387 <property name="EXDATE" values="list" suppressempty="yes" onlyformode="old" delayedparsing="1" valueseparator=";" altvalueseparator=",">
388 <value field="EXDATES"/>
389 <position field="EXDATES" repeat="array" increment="1" minshow="0"/>
393 <property name="DTEND" suppressempty="yes" delayedparsing="1">
394 <value field="DTEND" conversion="autoenddate"/>
395 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
396 <value field="DTEND" conversion="TZID"/>
398 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
399 <value field="DTEND" conversion="VALUETYPE"/>
403 <property name="DURATION" suppressempty="yes" delayedparsing="1" onlyformode="standard">
404 <value field="DURATION"/>
405 <parameter onlyformode="standard" name="VALUE" default="no" show="no">
406 <value field="DURATION" conversion="VALUETYPE"/>
410 <property name="ATTENDEE" suppressempty="yes" onlyformode="old">
411 <value field="ATTENDEES"/>
412 <parameter name="ROLE" default="no" positional="yes" show="yes">
414 <enum name="ORGANIZER"/>
416 <position has="ORGANIZER" field="ORGANIZER" overwriteempty="yes"/>
417 <position hasnot="ORGANIZER" field="ATTENDEES" repeat="array" increment="1" overwriteempty="yes"/>
419 <parameter name="STATUS" default="no" show="yes">
420 <value field="ATTENDEE_PARTSTATS">
421 <enum name="NEEDS ACTION" value="1"/>
422 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
423 <enum name="ACCEPTED" value="4"/>
424 <enum name="DECLINED" value="7"/>
425 <enum name="TENTATIVE" value="5"/>
426 <enum name="DELEGATED" value="6"/>
431 <property name="ATTENDEE" suppressempty="yes" onlyformode="standard">
432 <value field="ATTENDEES" conversion="mailto"/>
433 <position field="ATTENDEES" repeat="array" increment="1" minshow="0"/>
434 <parameter name="CN" default="no" show="yes" shownonempty="yes">
435 <value field="ATTENDEE_CNS"/>
437 <parameter name="PARTSTAT" default="no" show="yes">
438 <value field="ATTENDEE_PARTSTATS">
439 <enum name="NEEDS-ACTION" value="1"/>
440 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
441 <enum name="ACCEPTED" value="4"/>
442 <enum name="DECLINED" value="7"/>
443 <enum name="TENTATIVE" value="5"/>
444 <enum name="DELEGATED" value="6"/>
447 <parameter name="ROLE" default="no" show="yes">
448 <value field="ATTENDEE_ROLE">
449 <enum name="CHAIR" value="1"/>
450 <enum name="REQ-PARTICIPANT" value="2"/>
451 <enum name="OPT-PARTICIPANT" value="3"/>
452 <enum name="NON-PARTICIPANT" value="4"/>
455 <parameter name="RSVP" default="no" show="yes">
456 <value field="ATTENDEE_RSVP">
457 <enum name="TRUE" value="1"/>
458 <enum name="FALSE" value="0"/>
461 <parameter name="LANGUAGE" show="yes">
462 <value field="ATTENDEE_LANG"/>
464 <parameter name="CUTYPE" default="no" show="yes">
465 <value field="ATTENDEE_CUTYPE">
466 <enum name="INDIVIDUAL" value="1"/>
467 <enum name="GROUP" value="2"/>
468 <enum name="RESOURCE" value="3"/>
469 <enum name="ROOM" value="4"/>
470 <enum name="UNKNOWN" value="5"/>
475 <property name="ORGANIZER" suppressempty="yes" onlyformode="standard">
476 <value field="ORGANIZER" conversion="mailto"/>
477 <parameter name="CN" default="no" show="yes">
478 <value field="ORGANIZER_CN"/>
482 <!-- AALARM and DALARM both use the same fields -->
483 <property name="AALARM" onlyformode="old" values="4" suppressempty="yes">
484 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
485 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
486 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
487 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
489 <property name="DALARM" onlyformode="old" values="4" suppressempty="yes">
490 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
491 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
492 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
493 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
496 <subprofile onlyformode="standard" name="VALARM" nummandatory="1" field="ALARM_TIME">
497 <property name="TRIGGER" suppressempty="no" mandatory="yes">
498 <value field="ALARM_TIME"/>
499 <parameter name="VALUE" default="no" show="yes">
500 <value field="ALARM_TIME" conversion="FULLVALUETYPE"/>
502 <parameter name="RELATED" default="no" show="yes">
503 <value field="ALARM_REL">
504 <enum mode="ignore" value="0"/>
505 <enum name="START" value="1"/>
506 <enum name="END" value="2"/>
510 <property name="ACTION" suppressempty="yes" mandatory="yes">
511 <value field="ALARM_ACTION"/>
513 <property name="DESCRIPTION" suppressempty="yes">
514 <value field="ALARM_MSG"/>
516 <property name="REPEAT" suppressempty="yes">
517 <value field="ALARM_REPEAT"/>
519 <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
520 <value field="ALARM_UID"/>