f27f20f46e565f34c380b941a457bb935974f744
[platform/upstream/syncevolution.git] / src / syncevo / configs / datatypes / 11calendar-profile.xml
1     <!-- vCalendar with VTODO and VEVENT variants -->
2     <mimeprofile name="vCalendar" fieldlist="calendar">
3
4       <vtimezonegenmode>current</vtimezonegenmode>
5       <tzidgenmode>olson</tzidgenmode>
6
7       <profile name="VCALENDAR" nummandatory="1">
8
9         <property name="VERSION" mandatory="yes">
10           <value conversion="version"/>
11         </property>
12
13         <property onlyformode="standard" name="PRODID" mandatory="no">
14           <value conversion="prodid"/>
15         </property>
16
17         <property onlyformode="old" name="TZ" filter="false" suppressempty="yes">
18           <value field="DTSTART" conversion="tz"/>
19         </property>
20
21         <property onlyformode="old" name="DAYLIGHT" mode="daylight" filter="false" suppressempty="yes">
22           <value field="DTSTART" conversion="daylight"/>
23         </property>
24
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"/>
29         </property>
30
31         <subprofile onlyformode="standard" name="VTIMEZONE" mode="vtimezones"/>
32
33         <!-- sub-profile for tasks -->
34         <subprofile name="VTODO" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="0">
35
36           <property name="LAST-MODIFIED" suppressempty="yes">
37             <value field="DMODIFIED"/>
38           </property>
39
40           <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
41             <value field="DGENERATED"/>
42           </property>
43
44           <property name="DCREATED" suppressempty="yes" onlyformode="old">
45             <value field="DCREATED"/>
46           </property>
47           <property name="CREATED" suppressempty="yes" onlyformode="standard">
48             <value field="DCREATED"/>
49           </property>
50
51           <property name="UID" suppressempty="yes">
52             <value field="UID"/>
53           </property>
54
55           <property name="SEQUENCE" suppressempty="yes">
56             <value field="SEQNO"/>
57           </property>
58
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"/>
63           </property>
64
65           <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
66             <value field="CATEGORIES" />
67             <position field="CATEGORIES" repeat="array" minshow="0"/>
68           </property>
69
70           <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
71             <value field="CATEGORIES" />
72             <position field="CATEGORIES" repeat="array" minshow="0"/>
73           </property>
74
75           <property name="CLASS" suppressempty="yes">
76             <value field="CLASS">
77               <enum name="PUBLIC"       value="0"/>
78               <enum name="PRIVATE"      value="1"/>
79               <enum name="CONFIDENTIAL" value="2"/>
80             </value>
81           </property>
82
83           <property name="SUMMARY" mandatory="yes">
84             <value field="SUMMARY"/>
85           </property>
86
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"/>
92           </property>
93
94           <property name="LOCATION" suppressempty="yes" mandatory="no">
95             <value field="LOCATION"/>
96           </property>
97
98           <property name="URL" suppressempty="yes" mandatory="no">
99             <value field="URL"/>
100           </property>
101
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"/>
106             </parameter>
107             <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
108               <value field="DTSTART" conversion="VALUETYPE"/>
109             </parameter>
110           </property>
111
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"/>
116             </parameter>
117             <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
118               <value field="COMPLETED" conversion="VALUETYPE"/>
119             </parameter>
120           </property>
121
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"/>
126             </parameter>
127             <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
128               <value field="DUE" conversion="VALUETYPE"/>
129             </parameter>
130           </property>
131
132           <property name="PRIORITY" suppressempty="yes">
133             <value field="PRIORITY"/>
134           </property>
135
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"/>
150             </value>
151           </property>
152
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"/>
168             </value>
169           </property>
170
171           <property name="PERCENT-COMPLETE" onlyformode="standard" suppressempty="yes">
172             <value field="PERCENT_COMPLETE"/>
173           </property>          
174
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"/>
181           </property>
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"/>
187           </property>
188
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"/>
194               </parameter>
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"/>
200                 </value>
201               </parameter>
202             </property>
203             <property name="ACTION" suppressempty="yes" mandatory="yes">
204               <value field="ALARM_ACTION"/>
205             </property>
206             <property name="DESCRIPTION" suppressempty="yes">
207               <value field="ALARM_MSG"/>
208             </property>
209             <property name="REPEAT" suppressempty="yes">
210               <value field="ALARM_REPEAT"/>
211             </property>
212             <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
213               <value field="ALARM_UID"/>
214             </property>
215           </subprofile>
216
217           <property onlyformode="old" name="RELATED-TO" suppressempty="yes">
218             <value field="PARENT_UID"/>
219           </property>
220
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">
224               <value>
225                 <enum name="PARENT"/>
226                 <enum mode="defaultvalue" name="other"/>
227               </value>
228               <position hasnot="other" shows="PARENT" field="PARENT_UID"/>
229             </parameter>
230           </property>
231
232         </subprofile>
233
234         <!-- sub-profile for event -->
235         <subprofile name="VEVENT" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="1">
236
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"/>
250                 </value>
251             </property>
252
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"/>
258                 </value>
259             </property>
260
261           <property name="LAST-MODIFIED" suppressempty="yes">
262             <value field="DMODIFIED"/>
263           </property>
264
265           <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
266             <value field="DGENERATED"/>
267           </property>
268
269           <property name="DCREATED" suppressempty="yes" onlyformode="old">
270             <value field="DCREATED"/>
271           </property>
272           <property name="CREATED" suppressempty="yes" onlyformode="standard">
273             <value field="DCREATED"/>
274           </property>
275
276
277           <property name="UID" suppressempty="yes">
278             <value field="UID"/>
279           </property>
280
281           <property name="SEQUENCE" suppressempty="yes">
282             <value field="SEQNO"/>
283           </property>
284
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"/>
289           </property>
290
291           <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
292             <value field="CATEGORIES" />
293             <position field="CATEGORIES" repeat="array" minshow="0"/>
294           </property>
295
296           <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
297             <value field="CATEGORIES" />
298             <position field="CATEGORIES" repeat="array" minshow="0"/>
299           </property>
300
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"/>
306             </value>
307           </property>
308
309
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"/>
317             </value>
318           </property>
319           <property name="TRANSP" suppressempty="yes" onlyformode="old">
320             <value field="TRANSP"/> <!-- directly numeric in vCalendar 1.0 -->
321           </property>
322
323
324           <property name="PRIORITY" suppressempty="yes">
325             <value field="PRIORITY"/>
326           </property>
327
328           <property name="SUMMARY" mandatory="yes">
329             <value field="SUMMARY"/>
330           </property>
331
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"/>
337           </property>
338
339           <property name="LOCATION" suppressempty="yes" mandatory="no">
340             <value field="LOCATION"/>
341           </property>
342
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"/>
347             </parameter>
348             <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
349               <value field="DTSTART" conversion="VALUETYPE"/>
350             </parameter>
351           </property>
352
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"/>
358           </property>
359
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"/>
363           </property>
364
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"/>
369             </parameter>
370             <parameter name="VALUE" default="no" show="yes">
371               <value field="ORIGSTART" conversion="VALUETYPE"/>
372             </parameter>
373           </property>
374
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"/>
384             </parameter>
385           </property>
386
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"/>
390           </property>
391
392
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"/>
397             </parameter>
398             <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
399               <value field="DTEND" conversion="VALUETYPE"/>
400             </parameter>
401           </property>
402
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"/>
407             </parameter>
408           </property>
409
410           <property name="ATTENDEE" suppressempty="yes" onlyformode="old">
411             <value field="ATTENDEES"/>
412             <parameter name="ROLE" default="no" positional="yes" show="yes">
413               <value>
414                 <enum name="ORGANIZER"/>
415               </value>
416               <position has="ORGANIZER" field="ORGANIZER" overwriteempty="yes"/>
417               <position hasnot="ORGANIZER" field="ATTENDEES" repeat="array" increment="1" overwriteempty="yes"/>
418             </parameter>
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"/>
427               </value>
428             </parameter>
429           </property>
430
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"/>
436             </parameter>
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"/>
445               </value>
446             </parameter>
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"/>
453               </value>
454             </parameter>
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"/>
459               </value>
460             </parameter>
461             <parameter name="LANGUAGE" show="yes">
462               <value field="ATTENDEE_LANG"/>
463             </parameter>
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"/>
471               </value>
472             </parameter>
473           </property>
474
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"/>
479             </parameter>
480           </property>
481
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"/>
488           </property>
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"/>
494           </property>
495
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"/>
501               </parameter>
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"/>
507                 </value>
508               </parameter>
509             </property>
510             <property name="ACTION" suppressempty="yes" mandatory="yes">
511               <value field="ALARM_ACTION"/>
512             </property>
513             <property name="DESCRIPTION" suppressempty="yes">
514               <value field="ALARM_MSG"/>
515             </property>
516             <property name="REPEAT" suppressempty="yes">
517               <value field="ALARM_REPEAT"/>
518             </property>
519             <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
520               <value field="ALARM_UID"/>
521             </property>
522           </subprofile>
523
524         </subprofile>
525
526       </profile>
527     </mimeprofile>
528