1 #include "CalendarJournal.h"
5 void CalendarJournalObject::SaveObjectData(string *SaveData){
8 string DataLineProcessed = "";
10 *SaveData += "BEGIN:VJOURNAL\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 SUMMARY.
70 if (SummaryData.size() > 0){
72 DataLine += "SUMMARY";
74 if (SummaryDataAltRep.size() > 0){
76 DataLine += ";ALTREP=\"";
77 DataLine += SummaryDataAltRep;
82 if (SummaryDataLanguage.size() > 0){
84 DataLine += ";LANGUAGE=";
85 DataLine += SummaryDataLanguage;
89 if (SummaryDataTokens.size() > 0){
92 DataLine += SummaryDataTokens;
97 DataLine += SummaryData;
100 DataLineProcessed = OutputText(&DataLine);
102 *SaveData += DataLineProcessed;
105 DataLineProcessed.clear();
109 // Process the CLASS.
111 if (ClassData.size() > 0){
115 if (ClassDataTokens.size() > 0){
118 DataLine += ClassDataTokens;
123 DataLine += ClassData;
126 DataLineProcessed = OutputText(&DataLine);
128 *SaveData += DataLineProcessed;
131 DataLineProcessed.clear();
135 // Process the DTSTART.
137 if (DateTimeStartData.size() > 0){
139 DataLine += "DTSTART";
141 if (DateTimeStartDataValue.size() > 0){
143 DataLine += ";VALUE=";
144 DataLine += DateTimeStartDataValue;
148 if (DateTimeStartDataTimeZoneID.size() > 0){
150 DataLine += ";TZID=";
151 DataLine += DateTimeStartDataTimeZoneID;
155 if (DateTimeStartDataTokens.size() > 0){
158 DataLine += DateTimeStartDataTokens;
163 DataLine += DateTimeStartData;
166 DataLineProcessed = OutputText(&DataLine);
168 *SaveData += DataLineProcessed;
171 DataLineProcessed.clear();
175 // Process the LAST-MODIFIED value.
177 if (LastModifiedData.size() > 0){
179 if (LastModifiedTokens.size() > 0){
181 DataLine += "LAST-MODIFIED;";
182 DataLine += LastModifiedTokens;
186 DataLine += "LAST-MODIFIED";
191 DataLine += LastModifiedData;
194 DataLineProcessed = OutputText(&DataLine);
196 *SaveData += DataLineProcessed;
199 DataLineProcessed.clear();
203 // Process the ORGANIZER value.
205 if (OrganiserData.size() > 0){
207 DataLine += "ORGANIZER";
209 if (OrganiserDataCommonName.size() > 0){
212 DataLine += OrganiserDataCommonName;
216 if (OrganiserDataDirectoryEntry.size() > 0){
218 DataLine += ";DIR=\"";
219 DataLine += OrganiserDataDirectoryEntry;
224 if (OrganiserDataSentByParam.size() > 0){
226 DataLine += ";SENT-BY=\"";
227 DataLine += OrganiserDataSentByParam;
232 if (OrganiserDataLanguage.size() > 0){
234 DataLine += ";LANGUAGE=";
235 DataLine += OrganiserDataLanguage;
239 if (OrganiserDataTokens.size() > 0){
242 DataLine += OrganiserDataTokens;
247 DataLine += OrganiserData;
250 DataLineProcessed = OutputText(&DataLine);
252 *SaveData += DataLineProcessed;
255 DataLineProcessed.clear();
259 // Process the RECURRENCE-ID value.
261 if (RecurranceIDData.size() > 0){
263 DataLine += "RECURRENCE-ID";
265 if (RecurranceIDDataTimeZoneParam.size() > 0){
267 DataLine += ";TZID=";
268 DataLine += RecurranceIDDataTimeZoneParam;
272 if (RecurranceIDDataRangeParam.size() > 0){
274 DataLine += ";RANGE=";
275 DataLine += RecurranceIDDataRangeParam;
279 if (RecurranceIDDataValue.size() > 0){
281 DataLine += ";VALUE=";
282 DataLine += RecurranceIDDataValue;
286 if (RecurranceIDDataTokens.size() > 0){
289 DataLine += RecurranceIDDataTokens;
294 DataLine += RecurranceIDData;
297 DataLineProcessed = OutputText(&DataLine);
299 *SaveData += DataLineProcessed;
302 DataLineProcessed.clear();
306 // Process the SEQUENCE value.
308 if (SequenceData > -1 && SequenceData < 10){
310 DataLine += "SEQUENCE";
312 if (SequenceTokens.size() > 0){
315 DataLine += SequenceTokens;
320 DataLine += to_string(SequenceData);
323 DataLineProcessed = OutputText(&DataLine);
325 *SaveData += DataLineProcessed;
328 DataLineProcessed.clear();
332 // Process the STATUS value.
334 if (StatusData.size() > 0){
336 DataLine += "STATUS";
338 if (StatusLanguage.size() > 0){
340 DataLine += ";LANGUAGE=";
341 DataLine += StatusLanguage;
345 if (StatusTokens.size() > 0){
348 DataLine += StatusTokens;
353 DataLine += StatusData;
356 DataLineProcessed = OutputText(&DataLine);
358 *SaveData += DataLineProcessed;
361 DataLineProcessed.clear();
365 // Process the URL value.
367 if (URLData.size() > 0){
371 if (URLDataTokens.size() > 0){
374 DataLine += URLDataTokens;
382 DataLineProcessed = OutputText(&DataLine);
384 *SaveData += DataLineProcessed;
387 DataLineProcessed.clear();
391 // Process the RRULE value.
393 if (RecurranceRuleData.size() > 0){
397 if (RecurranceRuleDataTokens.size() > 0){
400 DataLine += RecurranceRuleDataTokens;
405 DataLine += RecurranceRuleData;
408 DataLineProcessed = OutputText(&DataLine);
410 *SaveData += DataLineProcessed;
413 DataLineProcessed.clear();
417 // Process the ATTACH values.
419 if (AttachList.size() > 0){
421 for (int AttachListSeek = 0; AttachListSeek < AttachList.size();
424 DataLine += "ATTACH";
426 if (AttachListFormatType[AttachListSeek].size() > 0){
428 DataLine += ";FMTTYPE=";
429 DataLine += AttachListFormatType[AttachListSeek];
433 if (AttachListValue[AttachListSeek].size() > 0){
435 DataLine += ";VALUE=";
436 DataLine += AttachListValue[AttachListSeek];
440 if (AttachListEncoding[AttachListSeek].size() > 0){
442 DataLine += ";ENCODING=";
443 DataLine += AttachListEncoding[AttachListSeek];
447 if (AttachListTokens[AttachListSeek].size() > 0){
450 DataLine += AttachListTokens[AttachListSeek];
455 DataLine += AttachList[AttachListSeek];
458 DataLineProcessed = OutputText(&DataLine);
460 *SaveData += DataLineProcessed;
463 DataLineProcessed.clear();
469 // Process the ATTENDEE value.
471 if (AttendeeList.size() > 0){
473 for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size();
476 DataLine += "ATTENDEE";
478 if (AttendeeListMember[AttendeeListSeek].size() > 0){
480 DataLine += ";MEMBER=\"";
481 DataLine += AttendeeListMember[AttendeeListSeek];
486 if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){
488 DataLine += ";DELEGATED-FROM=\"";
489 DataLine += AttendeeListDelegatedFrom[AttendeeListSeek];
494 if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){
496 DataLine += ";DELEGATED-TO=\"";
497 DataLine += AttendeeListDelegatedTo[AttendeeListSeek];
502 if (AttendeeListRole[AttendeeListSeek].size() > 0){
504 DataLine += ";ROLE=";
505 DataLine += AttendeeListRole[AttendeeListSeek];
509 if (AttendeeListRSVP[AttendeeListSeek].size() > 0){
511 DataLine += ";RSVP=";
512 DataLine += AttendeeListRSVP[AttendeeListSeek];
516 if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){
518 DataLine += ";DIR=\"";
519 DataLine += AttendeeListDirectoryEntry[AttendeeListSeek];
524 if (AttendeeListSentBy[AttendeeListSeek].size() > 0){
526 DataLine += ";SENT-BY=\"";
527 DataLine += AttendeeListSentBy[AttendeeListSeek];
532 if (AttendeeListCommonName[AttendeeListSeek].size() > 0){
534 DataLine += ";CN=\"";
535 DataLine += AttendeeListCommonName[AttendeeListSeek];
540 if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){
542 DataLine += ";CUTYPE=";
543 DataLine += AttendeeListCalendarUserType[AttendeeListSeek];
547 if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){
549 DataLine += ";PARTSTAT=";
550 DataLine += AttendeeListParticipationStatus[AttendeeListSeek];
554 if (AttendeeListLanguage[AttendeeListSeek].size() > 0){
556 DataLine += ";LANGUAGE=";
557 DataLine += AttendeeListLanguage[AttendeeListSeek];
561 if (AttendeeListTokens[AttendeeListSeek].size() > 0){
564 DataLine += AttendeeListTokens[AttendeeListSeek];
569 DataLine += AttendeeList[AttendeeListSeek];
572 DataLineProcessed = OutputText(&DataLine);
574 *SaveData += DataLineProcessed;
577 DataLineProcessed.clear();
583 // Process the CATEGORIES value.
585 if (CategoriesList.size() > 0){
587 for (int CategoriesListSeek = 0; CategoriesListSeek < CategoriesList.size();
588 CategoriesListSeek++){
590 DataLine += "CATEGORIES";
592 if (CategoriesListLanguage[CategoriesListSeek].size() > 0){
594 DataLine += ";LANGUAGE=";
595 DataLine += CategoriesListLanguage[CategoriesListSeek];
599 if (CategoriesListTokens[CategoriesListSeek].size() > 0){
602 DataLine += CategoriesListTokens[CategoriesListSeek];
607 DataLine += CategoriesList[CategoriesListSeek];
610 DataLineProcessed = OutputText(&DataLine);
612 *SaveData += DataLineProcessed;
615 DataLineProcessed.clear();
621 // Process the COMMENT value.
623 if (CommentList.size() > 0){
625 for (int CommentListSeek = 0; CommentListSeek < CommentList.size();
628 DataLine += "COMMENT";
630 if (CommentListAltRep[CommentListSeek].size() > 0){
632 DataLine += ";ALTREP=\"";
633 DataLine += CommentListAltRep[CommentListSeek];
638 if (CommentListLanguage[CommentListSeek].size() > 0){
640 DataLine += ";LANGUAGE=";
641 DataLine += CommentListLanguage[CommentListSeek];
645 if (CommentListTokens[CommentListSeek].size() > 0){
648 DataLine += CommentListTokens[CommentListSeek];
653 DataLine += CommentList[CommentListSeek];
656 DataLineProcessed = OutputText(&DataLine);
658 *SaveData += DataLineProcessed;
661 DataLineProcessed.clear();
667 // Process the CONTACT value.
669 if (ContactList.size() > 0){
671 for (int ContactListSeek = 0; ContactListSeek < ContactList.size();
674 DataLine += "CONTACT";
676 if (ContactListAltRep[ContactListSeek].size() > 0){
678 DataLine += ";ALTREP=\"";
679 DataLine += ContactListAltRep[ContactListSeek];
684 if (ContactListLanguage[ContactListSeek].size() > 0){
686 DataLine += ";LANGUAGE=";
687 DataLine += ContactListLanguage[ContactListSeek];
691 if (ContactListTokens[ContactListSeek].size() > 0){
694 DataLine += ContactListTokens[ContactListSeek];
699 DataLine += ContactList[ContactListSeek];
702 DataLineProcessed = OutputText(&DataLine);
704 *SaveData += DataLineProcessed;
707 DataLineProcessed.clear();
713 // Process the DESCRIPTION values.
715 if (DescriptionList.size() > 0){
717 for (int DescriptionListSeek = 0; DescriptionListSeek < DescriptionList.size() > 0;
718 DescriptionListSeek++){
720 DataLine += "DESCRIPTION";
722 if (DescriptionListAltRep[DescriptionListSeek].size() > 0){
724 DataLine += ";ALTREP=\"";
725 DataLine += DescriptionListAltRep[DescriptionListSeek];
730 if (DescriptionListLanguage[DescriptionListSeek].size() > 0){
732 DataLine += ";LANGUAGE=";
733 DataLine += DescriptionListLanguage[DescriptionListSeek];
737 if (DescriptionListTokens[DescriptionListSeek].size() > 0){
740 DataLine += DescriptionListTokens[DescriptionListSeek];
745 DataLine += DescriptionList[DescriptionListSeek];
748 DataLineProcessed = OutputText(&DataLine);
750 *SaveData += DataLineProcessed;
753 DataLineProcessed.clear();
759 // Process the EXDATE value.
761 if (ExcludeDateData.size() > 0){
763 for (int ExcludeDateDataSeek = 0; ExcludeDateDataSeek < ExcludeDateData.size();
764 ExcludeDateDataSeek++){
766 DataLine += "EXDATE";
768 if (ExcludeDateDataTimeZoneParam[ExcludeDateDataSeek].size() > 0){
770 DataLine += ";TZID=";
771 DataLine += ExcludeDateDataTimeZoneParam[ExcludeDateDataSeek];
775 if (ExcludeDateDataValue[ExcludeDateDataSeek].size() > 0){
777 DataLine += ";VALUE=";
778 DataLine += ExcludeDateDataValue[ExcludeDateDataSeek];
782 if (ExcludeDateDataTokens[ExcludeDateDataSeek].size() > 0){
785 DataLine += ExcludeDateDataTokens[ExcludeDateDataSeek];
790 DataLine += ExcludeDateData[ExcludeDateDataSeek];
793 DataLineProcessed = OutputText(&DataLine);
795 *SaveData += DataLineProcessed;
798 DataLineProcessed.clear();
804 // Process the RELATED-TO value.
806 if (RelatedToData.size() > 0){
808 for (int RequestToDataSeek = 0; RequestToDataSeek < RelatedToData.size();
809 RequestToDataSeek++){
811 DataLine += "RELATED-TO";
813 if (RelatedToDataRelationType[RequestToDataSeek].size() > 0){
815 DataLine += ";RELTYPE=";
816 DataLine += RelatedToDataRelationType[RequestToDataSeek];
820 if (RelatedToDataTokens[RequestToDataSeek].size() > 0){
823 DataLine += RelatedToDataTokens[RequestToDataSeek];
828 DataLine += RelatedToData[RequestToDataSeek];
831 DataLineProcessed = OutputText(&DataLine);
833 *SaveData += DataLineProcessed;
836 DataLineProcessed.clear();
842 // Process the RDATE value.
844 if (RecurranceDateData.size() > 0){
846 for (int RecurranceDateDataSeek = 0; RecurranceDateDataSeek < RecurranceDateData.size();
847 RecurranceDateDataSeek++){
851 if (RecurranceDateDataValue[RecurranceDateDataSeek].size() > 0){
853 DataLine += ";VALUE=";
854 DataLine += RecurranceDateDataValue[RecurranceDateDataSeek];
858 if (RecurranceDateDataTimeZoneParam[RecurranceDateDataSeek].size() > 0){
860 DataLine += ";TZID=";
861 DataLine += RecurranceDateDataTimeZoneParam[RecurranceDateDataSeek];
865 if (RecurranceDateDataTokens[RecurranceDateDataSeek].size() > 0){
868 DataLine += RecurranceDateDataTokens[RecurranceDateDataSeek];
873 DataLine += RecurranceDateData[RecurranceDateDataSeek];
876 DataLineProcessed = OutputText(&DataLine);
878 *SaveData += DataLineProcessed;
881 DataLineProcessed.clear();
887 // Process the REQUEST-STATUS value.
889 if (RequestStatusData.size() > 0){
891 for (int RequestStatusDataSeek = 0; RequestStatusDataSeek < RequestStatusData.size();
892 RequestStatusDataSeek++){
894 DataLine += "REQUEST-STATUS";
896 if (RequestStatusLanguage[RequestStatusDataSeek].size() > 0){
898 DataLine += ";LANGUAGE=";
899 DataLine += RequestStatusLanguage[RequestStatusDataSeek];
903 if (RequestStatusTokens[RequestStatusDataSeek].size() > 0){
906 DataLine += RequestStatusTokens[RequestStatusDataSeek];
911 DataLine += RequestStatusData[RequestStatusDataSeek];
914 DataLineProcessed = OutputText(&DataLine);
916 *SaveData += DataLineProcessed;
919 DataLineProcessed.clear();
925 // Process the X-Token values.
927 if (XTokensData.size() > 0){
929 for (int XTokenSeek = 0; XTokenSeek < XTokensData.size();
932 DataLine += XTokensDataTokens[XTokenSeek];
934 DataLine += XTokensData[XTokenSeek];
937 DataLineProcessed = OutputText(&DataLine);
939 *SaveData += DataLineProcessed;
942 DataLineProcessed.clear();
948 *SaveData += "END:VJOURNAL\n";