1 #include "CalendarEvent.h"
5 void CalendarEventObject::SaveObjectData(string *SaveData){
8 string DataLineProcessed = "";
10 *SaveData += "BEGIN:VEVENT\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 DTSTART.
70 if (DateTimeStartData.size() > 0){
72 DataLine += "DTSTART";
74 if (DateTimeStartDataValue.size() > 0){
76 DataLine += ";VALUE=";
77 DataLine += DateTimeStartDataValue;
81 if (DateTimeStartDataTimeZoneID.size() > 0){
84 DataLine += DateTimeStartDataTimeZoneID;
88 if (DateTimeStartDataTokens.size() > 0){
91 DataLine += DateTimeStartDataTokens;
96 DataLine += DateTimeStartData;
99 DataLineProcessed = OutputText(&DataLine);
101 *SaveData += DataLineProcessed;
104 DataLineProcessed.clear();
108 // Process the DTEND.
110 if (DateTimeEndData.size() > 0){
114 if (DateTimeEndDataValue.size() > 0){
116 DataLine += ";VALUE=";
117 DataLine += DateTimeEndDataValue;
121 if (DateTimeEndDataTimeZoneID.size() > 0){
123 DataLine += ";TZID=";
124 DataLine += DateTimeEndDataTimeZoneID;
128 if (DateTimeEndDataTokens.size() > 0){
131 DataLine += DateTimeEndDataTokens;
136 DataLine += DateTimeEndData;
139 DataLineProcessed = OutputText(&DataLine);
141 *SaveData += DataLineProcessed;
144 DataLineProcessed.clear();
148 // Process the SUMMARY.
150 if (SummaryData.size() > 0){
152 DataLine += "SUMMARY";
154 if (SummaryDataAltRep.size() > 0){
156 DataLine += ";ALTREP=\"";
157 DataLine += SummaryDataAltRep;
162 if (SummaryDataLanguage.size() > 0){
164 DataLine += ";LANGUAGE=";
165 DataLine += SummaryDataLanguage;
169 if (SummaryDataTokens.size() > 0){
172 DataLine += SummaryDataTokens;
177 DataLine += SummaryData;
180 DataLineProcessed = OutputText(&DataLine);
182 *SaveData += DataLineProcessed;
185 DataLineProcessed.clear();
189 // Process the CLASS value.
191 if (ClassData.size() > 0){
193 if (ClassDataTokens.size() > 0){
195 DataLine += "CLASS;";
196 DataLine += ClassDataTokens;
205 DataLine += ClassData;
208 DataLineProcessed = OutputText(&DataLine);
210 *SaveData += DataLineProcessed;
213 DataLineProcessed.clear();
217 // Process the CREATED value.
219 if (DateTimeCreatedData.size() > 0){
221 if (DateTimeCreatedTokens.size() > 0){
223 DataLine += "CREATED;";
224 DataLine += DateTimeCreatedTokens;
228 DataLine += "CREATED";
233 DataLine += DateTimeCreatedData;
236 DataLineProcessed = OutputText(&DataLine);
238 *SaveData += DataLineProcessed;
241 DataLineProcessed.clear();
245 // Process the DESCRIPTION values. Write out the
246 // first DESCRPITION only as per RFC5545 specifcation.
248 if (DescriptionList.size() > 0){
250 DataLine += "DESCRIPTION";
252 if (DescriptionListAltRep[0].size() > 0){
254 DataLine += ";ALTREP=\"";
255 DataLine += DescriptionListAltRep[0];
260 if (DescriptionListLanguage[0].size() > 0){
262 DataLine += ";LANGUAGE=";
263 DataLine += DescriptionListLanguage[0];
267 if (DescriptionListTokens[0].size() > 0){
270 DataLine += DescriptionListTokens[0];
275 DataLine += DescriptionList[0];
278 DataLineProcessed = OutputText(&DataLine);
280 *SaveData += DataLineProcessed;
283 DataLineProcessed.clear();
287 // Process the GEO value.
289 if (GeographicData.size() > 0){
291 if (GeographicTokens.size() > 0){
294 DataLine += GeographicTokens;
303 DataLine += GeographicData;
306 DataLineProcessed = OutputText(&DataLine);
308 *SaveData += DataLineProcessed;
311 DataLineProcessed.clear();
315 // Process the LAST-MODIFIED value.
317 if (LastModifiedData.size() > 0){
319 if (LastModifiedTokens.size() > 0){
321 DataLine += "LAST-MODIFIED;";
322 DataLine += LastModifiedTokens;
326 DataLine += "LAST-MODIFIED";
331 DataLine += LastModifiedData;
334 DataLineProcessed = OutputText(&DataLine);
336 *SaveData += DataLineProcessed;
339 DataLineProcessed.clear();
343 // Process the LOCATION value.
345 if (LocationData.size() > 0){
347 DataLine += "LOCATION";
349 if (LocationDataAltRep.size() > 0){
351 DataLine += ";ALTREP=\"";
352 DataLine += LocationDataAltRep;
357 if (LocationDataLanguage.size() > 0){
359 DataLine += ";LANGUAGE=";
360 DataLine += LocationDataLanguage;
364 if (LocationDataTokens.size() > 0){
367 DataLine += LocationDataTokens;
372 DataLine += LocationData;
375 DataLineProcessed = OutputText(&DataLine);
377 *SaveData += DataLineProcessed;
380 DataLineProcessed.clear();
384 // Process the ORGANIZER value.
386 if (OrganiserData.size() > 0){
388 DataLine += "ORGANIZER";
390 if (OrganiserDataCommonName.size() > 0){
393 DataLine += OrganiserDataCommonName;
397 if (OrganiserDataDirectoryEntry.size() > 0){
399 DataLine += ";DIR=\"";
400 DataLine += OrganiserDataDirectoryEntry;
405 if (OrganiserDataSentByParam.size() > 0){
407 DataLine += ";SENT-BY=\"";
408 DataLine += OrganiserDataSentByParam;
413 if (OrganiserDataLanguage.size() > 0){
415 DataLine += ";LANGUAGE=";
416 DataLine += OrganiserDataLanguage;
420 if (OrganiserDataTokens.size() > 0){
423 DataLine += OrganiserDataTokens;
428 DataLine += OrganiserData;
431 DataLineProcessed = OutputText(&DataLine);
433 *SaveData += DataLineProcessed;
436 DataLineProcessed.clear();
440 // Process the PRIORITY value.
442 if (PriorityData > -1 && PriorityData < 10){
444 DataLine += "PRIORITY";
446 if (PriorityTokens.size() > 0){
449 DataLine += PriorityTokens;
454 DataLine += to_string(PriorityData);
457 DataLineProcessed = OutputText(&DataLine);
459 *SaveData += DataLineProcessed;
462 DataLineProcessed.clear();
466 // Process the SEQUENCE value.
468 if (SequenceData > -1 && SequenceData < 10){
470 DataLine += "SEQUENCE";
472 if (SequenceTokens.size() > 0){
475 DataLine += SequenceTokens;
480 DataLine += to_string(SequenceData);
483 DataLineProcessed = OutputText(&DataLine);
485 *SaveData += DataLineProcessed;
488 DataLineProcessed.clear();
492 // Process the STATUS value.
494 if (StatusData.size() > 0){
496 DataLine += "STATUS";
498 if (StatusLanguage.size() > 0){
500 DataLine += ";LANGUAGE=";
501 DataLine += StatusLanguage;
505 if (StatusTokens.size() > 0){
508 DataLine += StatusTokens;
513 DataLine += StatusData;
516 DataLineProcessed = OutputText(&DataLine);
518 *SaveData += DataLineProcessed;
521 DataLineProcessed.clear();
525 // Process the TRANSP value.
527 if (TimeTransparencyData.size() > 0){
529 DataLine += "TRANSP";
531 if (TimeTransparencyDataTokens.size() > 0){
534 DataLine += TimeTransparencyDataTokens;
539 DataLine += TimeTransparencyData;
542 DataLineProcessed = OutputText(&DataLine);
544 *SaveData += DataLineProcessed;
547 DataLineProcessed.clear();
551 // Process the URL value.
553 if (URLData.size() > 0){
557 if (URLDataTokens.size() > 0){
560 DataLine += URLDataTokens;
568 DataLineProcessed = OutputText(&DataLine);
570 *SaveData += DataLineProcessed;
573 DataLineProcessed.clear();
577 // Process the RECURRENCE-ID value.
579 if (RecurranceIDData.size() > 0){
581 DataLine += "RECURRENCE-ID";
583 if (RecurranceIDDataTimeZoneParam.size() > 0){
585 DataLine += ";TZID=";
586 DataLine += RecurranceIDDataTimeZoneParam;
590 if (RecurranceIDDataRangeParam.size() > 0){
592 DataLine += ";RANGE=";
593 DataLine += RecurranceIDDataRangeParam;
597 if (RecurranceIDDataValue.size() > 0){
599 DataLine += ";VALUE=";
600 DataLine += RecurranceIDDataValue;
604 if (RecurranceIDDataTokens.size() > 0){
607 DataLine += RecurranceIDDataTokens;
612 DataLine += RecurranceIDData;
615 DataLineProcessed = OutputText(&DataLine);
617 *SaveData += DataLineProcessed;
620 DataLineProcessed.clear();
624 // Process the RRULE value.
626 if (RecurranceRuleData.size() > 0){
630 if (RecurranceRuleDataTokens.size() > 0){
633 DataLine += RecurranceRuleDataTokens;
638 DataLine += RecurranceRuleData;
641 DataLineProcessed = OutputText(&DataLine);
643 *SaveData += DataLineProcessed;
646 DataLineProcessed.clear();
650 // Process the ATTACH values.
652 if (AttachList.size() > 0){
654 for (int AttachListSeek = 0; AttachListSeek < AttachList.size();
657 DataLine += "ATTACH";
659 if (AttachListFormatType[AttachListSeek].size() > 0){
661 DataLine += ";FMTTYPE=";
662 DataLine += AttachListFormatType[AttachListSeek];
666 if (AttachListValue[AttachListSeek].size() > 0){
668 DataLine += ";VALUE=";
669 DataLine += AttachListValue[AttachListSeek];
673 if (AttachListEncoding[AttachListSeek].size() > 0){
675 DataLine += ";ENCODING=";
676 DataLine += AttachListEncoding[AttachListSeek];
680 if (AttachListTokens[AttachListSeek].size() > 0){
683 DataLine += AttachListTokens[AttachListSeek];
688 DataLine += AttachList[AttachListSeek];
691 DataLineProcessed = OutputText(&DataLine);
693 *SaveData += DataLineProcessed;
696 DataLineProcessed.clear();
702 // Process the ATTENDEE value.
704 if (AttendeeList.size() > 0){
706 for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size();
709 DataLine += "ATTENDEE";
711 if (AttendeeListMember[AttendeeListSeek].size() > 0){
713 DataLine += ";MEMBER=\"";
714 DataLine += AttendeeListMember[AttendeeListSeek];
719 if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){
721 DataLine += ";DELEGATED-FROM=\"";
722 DataLine += AttendeeListDelegatedFrom[AttendeeListSeek];
727 if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){
729 DataLine += ";DELEGATED-TO=\"";
730 DataLine += AttendeeListDelegatedTo[AttendeeListSeek];
735 if (AttendeeListRole[AttendeeListSeek].size() > 0){
737 DataLine += ";ROLE=";
738 DataLine += AttendeeListRole[AttendeeListSeek];
742 if (AttendeeListRSVP[AttendeeListSeek].size() > 0){
744 DataLine += ";RSVP=";
745 DataLine += AttendeeListRSVP[AttendeeListSeek];
749 if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){
751 DataLine += ";DIR=\"";
752 DataLine += AttendeeListDirectoryEntry[AttendeeListSeek];
757 if (AttendeeListSentBy[AttendeeListSeek].size() > 0){
759 DataLine += ";SENT-BY=\"";
760 DataLine += AttendeeListSentBy[AttendeeListSeek];
765 if (AttendeeListCommonName[AttendeeListSeek].size() > 0){
767 DataLine += ";CN=\"";
768 DataLine += AttendeeListCommonName[AttendeeListSeek];
773 if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){
775 DataLine += ";CUTYPE=";
776 DataLine += AttendeeListCalendarUserType[AttendeeListSeek];
780 if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){
782 DataLine += ";PARTSTAT=";
783 DataLine += AttendeeListParticipationStatus[AttendeeListSeek];
787 if (AttendeeListLanguage[AttendeeListSeek].size() > 0){
789 DataLine += ";LANGUAGE=";
790 DataLine += AttendeeListLanguage[AttendeeListSeek];
794 if (AttendeeListTokens[AttendeeListSeek].size() > 0){
797 DataLine += AttendeeListTokens[AttendeeListSeek];
802 DataLine += AttendeeList[AttendeeListSeek];
805 DataLineProcessed = OutputText(&DataLine);
807 *SaveData += DataLineProcessed;
810 DataLineProcessed.clear();
816 // Process the CATEGORIES value.
818 if (CategoriesList.size() > 0){
820 for (int CategoriesListSeek = 0; CategoriesListSeek < CategoriesList.size();
821 CategoriesListSeek++){
823 DataLine += "CATEGORIES";
825 if (CategoriesListLanguage[CategoriesListSeek].size() > 0){
827 DataLine += ";LANGUAGE=";
828 DataLine += CategoriesListLanguage[CategoriesListSeek];
832 if (CategoriesListTokens[CategoriesListSeek].size() > 0){
835 DataLine += CategoriesListTokens[CategoriesListSeek];
840 DataLine += CategoriesList[CategoriesListSeek];
843 DataLineProcessed = OutputText(&DataLine);
845 *SaveData += DataLineProcessed;
848 DataLineProcessed.clear();
854 *SaveData += "END:VEVENT\n";