1 #include "CalendarFreeBusy.h"
5 void CalendarFreeBusyObject::SaveObjectData(string *SaveData){
8 string DataLineProcessed = "";
10 *SaveData += "BEGIN:VFREEBUSY\n";
14 if (UniqueID.size() > 0){
16 if (UniqueIDTokens.size() > 0){
19 DataLine += UniqueIDTokens;
31 DataLineProcessed = OutputText(&DataLine);
33 *SaveData += DataLineProcessed;
36 DataLineProcessed.clear();
40 // Process the DTSTAMP.
42 if (DateTimeStampData.size() > 0){
44 if (DateTimeStampTokens.size() > 0){
46 DataLine += "DTSTAMP;";
47 DataLine += DateTimeStampTokens;
51 DataLine += "DTSTAMP";
56 DataLine += DateTimeStampData;
59 DataLineProcessed = OutputText(&DataLine);
61 *SaveData += DataLineProcessed;
64 DataLineProcessed.clear();
68 // Process the CONTACT value.
70 if (ContactList.size() > 0){
72 if (ContactList[0].size() > 0){
74 DataLine += "CONTACT";
76 if (ContactListAltRep[0].size() > 0){
78 DataLine += ";ALTREP=\"";
79 DataLine += ContactListAltRep[0];
84 if (ContactListLanguage[0].size() > 0){
86 DataLine += ";LANGUAGE=";
87 DataLine += ContactListLanguage[0];
91 if (ContactListTokens[0].size() > 0){
94 DataLine += ContactListTokens[0];
99 DataLine += ContactList[0];
102 DataLineProcessed = OutputText(&DataLine);
104 *SaveData += DataLineProcessed;
107 DataLineProcessed.clear();
113 // Process the DTSTART.
115 if (DateTimeStartData.size() > 0){
117 DataLine += "DTSTART";
119 if (DateTimeStartDataValue.size() > 0){
121 DataLine += ";VALUE=";
122 DataLine += DateTimeStartDataValue;
126 if (DateTimeStartDataTimeZoneID.size() > 0){
128 DataLine += ";TZID=";
129 DataLine += DateTimeStartDataTimeZoneID;
133 if (DateTimeStartDataTokens.size() > 0){
136 DataLine += DateTimeStartDataTokens;
141 DataLine += DateTimeStartData;
144 DataLineProcessed = OutputText(&DataLine);
146 *SaveData += DataLineProcessed;
149 DataLineProcessed.clear();
153 // Process the DTEND.
155 if (DateTimeEndData.size() > 0){
159 if (DateTimeEndDataValue.size() > 0){
161 DataLine += ";VALUE=";
162 DataLine += DateTimeEndDataValue;
166 if (DateTimeEndDataTimeZoneID.size() > 0){
168 DataLine += ";TZID=";
169 DataLine += DateTimeEndDataTimeZoneID;
173 if (DateTimeEndDataTokens.size() > 0){
176 DataLine += DateTimeEndDataTokens;
181 DataLine += DateTimeEndData;
184 DataLineProcessed = OutputText(&DataLine);
186 *SaveData += DataLineProcessed;
189 DataLineProcessed.clear();
193 // Process the ORGANIZER value.
195 if (OrganiserData.size() > 0){
197 DataLine += "ORGANIZER";
199 if (OrganiserDataCommonName.size() > 0){
202 DataLine += OrganiserDataCommonName;
206 if (OrganiserDataDirectoryEntry.size() > 0){
208 DataLine += ";DIR=\"";
209 DataLine += OrganiserDataDirectoryEntry;
214 if (OrganiserDataSentByParam.size() > 0){
216 DataLine += ";SENT-BY=\"";
217 DataLine += OrganiserDataSentByParam;
222 if (OrganiserDataLanguage.size() > 0){
224 DataLine += ";LANGUAGE=";
225 DataLine += OrganiserDataLanguage;
229 if (OrganiserDataTokens.size() > 0){
232 DataLine += OrganiserDataTokens;
237 DataLine += OrganiserData;
240 DataLineProcessed = OutputText(&DataLine);
242 *SaveData += DataLineProcessed;
245 DataLineProcessed.clear();
249 // Process the URL value.
251 if (URLData.size() > 0){
255 if (URLDataTokens.size() > 0){
258 DataLine += URLDataTokens;
266 DataLineProcessed = OutputText(&DataLine);
268 *SaveData += DataLineProcessed;
271 DataLineProcessed.clear();
275 // Process the ATTENDEE value.
277 if (AttendeeList.size() > 0){
279 for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size();
282 DataLine += "ATTENDEE";
284 if (AttendeeListMember[AttendeeListSeek].size() > 0){
286 DataLine += ";MEMBER=\"";
287 DataLine += AttendeeListMember[AttendeeListSeek];
292 if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){
294 DataLine += ";DELEGATED-FROM=\"";
295 DataLine += AttendeeListDelegatedFrom[AttendeeListSeek];
300 if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){
302 DataLine += ";DELEGATED-TO=\"";
303 DataLine += AttendeeListDelegatedTo[AttendeeListSeek];
308 if (AttendeeListRole[AttendeeListSeek].size() > 0){
310 DataLine += ";ROLE=";
311 DataLine += AttendeeListRole[AttendeeListSeek];
315 if (AttendeeListRSVP[AttendeeListSeek].size() > 0){
317 DataLine += ";RSVP=";
318 DataLine += AttendeeListRSVP[AttendeeListSeek];
322 if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){
324 DataLine += ";DIR=\"";
325 DataLine += AttendeeListDirectoryEntry[AttendeeListSeek];
330 if (AttendeeListSentBy[AttendeeListSeek].size() > 0){
332 DataLine += ";SENT-BY=\"";
333 DataLine += AttendeeListSentBy[AttendeeListSeek];
338 if (AttendeeListCommonName[AttendeeListSeek].size() > 0){
340 DataLine += ";CN=\"";
341 DataLine += AttendeeListCommonName[AttendeeListSeek];
346 if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){
348 DataLine += ";CUTYPE=";
349 DataLine += AttendeeListCalendarUserType[AttendeeListSeek];
353 if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){
355 DataLine += ";PARTSTAT=";
356 DataLine += AttendeeListParticipationStatus[AttendeeListSeek];
360 if (AttendeeListLanguage[AttendeeListSeek].size() > 0){
362 DataLine += ";LANGUAGE=";
363 DataLine += AttendeeListLanguage[AttendeeListSeek];
367 if (AttendeeListTokens[AttendeeListSeek].size() > 0){
370 DataLine += AttendeeListTokens[AttendeeListSeek];
375 DataLine += AttendeeList[AttendeeListSeek];
378 DataLineProcessed = OutputText(&DataLine);
380 *SaveData += DataLineProcessed;
383 DataLineProcessed.clear();
389 // Process the COMMENT value.
391 if (CommentList.size() > 0){
393 for (int CommentListSeek = 0; CommentListSeek < CommentList.size();
396 DataLine += "COMMENT";
398 if (CommentListAltRep[CommentListSeek].size() > 0){
400 DataLine += ";ALTREP=\"";
401 DataLine += CommentListAltRep[CommentListSeek];
406 if (CommentListLanguage[CommentListSeek].size() > 0){
408 DataLine += ";LANGUAGE=";
409 DataLine += CommentListLanguage[CommentListSeek];
413 if (CommentListTokens[CommentListSeek].size() > 0){
416 DataLine += CommentListTokens[CommentListSeek];
421 DataLine += CommentList[CommentListSeek];
424 DataLineProcessed = OutputText(&DataLine);
426 *SaveData += DataLineProcessed;
429 DataLineProcessed.clear();
435 // Process the FREEBUSY value.
437 if (FreeBusyList.size() > 0){
439 for (int FreeBusyListSeek = 0; FreeBusyListSeek < FreeBusyList.size();
442 DataLine += "FREEBUSY";
444 if (FreeBusyListType[FreeBusyListSeek].size() > 0){
446 DataLine += ";FBTYPE=";
447 DataLine += FreeBusyListType[FreeBusyListSeek];
451 if (FreeBusyListTokens[FreeBusyListSeek].size() > 0){
454 DataLine += FreeBusyListTokens[FreeBusyListSeek];
459 DataLine += FreeBusyList[FreeBusyListSeek];
462 DataLineProcessed = OutputText(&DataLine);
464 *SaveData += DataLineProcessed;
467 DataLineProcessed.clear();
473 // Process the REQUEST-STATUS value.
475 if (RequestStatusData.size() > 0){
477 for (int RequestStatusDataSeek = 0; RequestStatusDataSeek < RequestStatusData.size();
478 RequestStatusDataSeek++){
480 DataLine += "REQUEST-STATUS";
482 if (RequestStatusLanguage[RequestStatusDataSeek].size() > 0){
484 DataLine += ";LANGUAGE=";
485 DataLine += RequestStatusLanguage[RequestStatusDataSeek];
489 if (RequestStatusTokens[RequestStatusDataSeek].size() > 0){
492 DataLine += RequestStatusTokens[RequestStatusDataSeek];
497 DataLine += RequestStatusData[RequestStatusDataSeek];
500 DataLineProcessed = OutputText(&DataLine);
502 *SaveData += DataLineProcessed;
505 DataLineProcessed.clear();
511 // Process the X-Token values.
513 if (XTokensData.size() > 0){
515 for (int XTokenSeek = 0; XTokenSeek < XTokensData.size();
518 DataLine += XTokensDataTokens[XTokenSeek];
520 DataLine += XTokensData[XTokenSeek];
523 DataLineProcessed = OutputText(&DataLine);
525 *SaveData += DataLineProcessed;
528 DataLineProcessed.clear();
534 *SaveData += "END:VFREEBUSY\n";