1 #include "CalendarTask.h"
5 void CalendarTaskObject::SaveObjectData(string *SaveData){
8 string DataLineProcessed = "";
10 *SaveData += "BEGIN:VTODO\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 CLASS value.
70 if (ClassData.size() > 0){
72 if (ClassDataTokens.size() > 0){
75 DataLine += ClassDataTokens;
84 DataLine += ClassData;
87 DataLineProcessed = OutputText(&DataLine);
89 *SaveData += DataLineProcessed;
92 DataLineProcessed.clear();
96 // Process the COMPLETED value.
98 if (CompletedData.size() > 0){
100 if (CompletedDataTokens.size() > 0){
102 DataLine += "COMPLETED;";
103 DataLine += CompletedDataTokens;
107 DataLine += "COMPLETED";
112 DataLine += CompletedData;
115 DataLineProcessed = OutputText(&DataLine);
117 *SaveData += DataLineProcessed;
120 DataLineProcessed.clear();
124 // Process the CREATED value.
126 if (DateTimeCreatedData.size() > 0){
128 if (DateTimeCreatedTokens.size() > 0){
130 DataLine += "CREATED;";
131 DataLine += DateTimeCreatedTokens;
135 DataLine += "CREATED";
140 DataLine += DateTimeCreatedData;
143 DataLineProcessed = OutputText(&DataLine);
145 *SaveData += DataLineProcessed;
148 DataLineProcessed.clear();
152 // Process the DESCRIPTION values. Write out the
153 // first DESCRPITION only as per RFC5545 specifcation.
155 if (DescriptionList.size() > 0){
157 DataLine += "DESCRIPTION";
159 if (DescriptionListAltRep[0].size() > 0){
161 DataLine += ";ALTREP=\"";
162 DataLine += DescriptionListAltRep[0];
167 if (DescriptionListLanguage[0].size() > 0){
169 DataLine += ";LANGUAGE=";
170 DataLine += DescriptionListLanguage[0];
174 if (DescriptionListTokens[0].size() > 0){
177 DataLine += DescriptionListTokens[0];
182 DataLine += DescriptionList[0];
185 DataLineProcessed = OutputText(&DataLine);
187 *SaveData += DataLineProcessed;
190 DataLineProcessed.clear();
194 // Process the DTSTART.
196 if (DateTimeStartData.size() > 0){
198 DataLine += "DTSTART";
200 if (DateTimeStartDataValue.size() > 0){
202 DataLine += ";VALUE=";
203 DataLine += DateTimeStartDataValue;
207 if (DateTimeStartDataTimeZoneID.size() > 0){
209 DataLine += ";TZID=";
210 DataLine += DateTimeStartDataTimeZoneID;
214 if (DateTimeStartDataTokens.size() > 0){
217 DataLine += DateTimeStartDataTokens;
222 DataLine += DateTimeStartData;
225 DataLineProcessed = OutputText(&DataLine);
227 *SaveData += DataLineProcessed;
230 DataLineProcessed.clear();
234 // Process the GEO value.
236 if (GeographicData.size() > 0){
238 if (GeographicTokens.size() > 0){
241 DataLine += GeographicTokens;
250 DataLine += GeographicData;
253 DataLineProcessed = OutputText(&DataLine);
255 *SaveData += DataLineProcessed;
258 DataLineProcessed.clear();
262 // Process the LAST-MODIFIED value.
264 if (LastModifiedData.size() > 0){
266 if (LastModifiedTokens.size() > 0){
268 DataLine += "LAST-MODIFIED;";
269 DataLine += LastModifiedTokens;
273 DataLine += "LAST-MODIFIED";
278 DataLine += LastModifiedData;
281 DataLineProcessed = OutputText(&DataLine);
283 *SaveData += DataLineProcessed;
286 DataLineProcessed.clear();
290 // Process the LOCATION value.
292 if (LocationData.size() > 0){
294 DataLine += "LOCATION";
296 if (LocationDataAltRep.size() > 0){
298 DataLine += ";ALTREP=\"";
299 DataLine += LocationDataAltRep;
304 if (LocationDataLanguage.size() > 0){
306 DataLine += ";LANGUAGE=";
307 DataLine += LocationDataLanguage;
311 if (LocationDataTokens.size() > 0){
314 DataLine += LocationDataTokens;
319 DataLine += LocationData;
322 DataLineProcessed = OutputText(&DataLine);
324 *SaveData += DataLineProcessed;
327 DataLineProcessed.clear();
331 // Process the ORGANIZER value.
333 if (OrganiserData.size() > 0){
335 DataLine += "ORGANIZER";
337 if (OrganiserDataCommonName.size() > 0){
340 DataLine += OrganiserDataCommonName;
344 if (OrganiserDataDirectoryEntry.size() > 0){
346 DataLine += ";DIR=\"";
347 DataLine += OrganiserDataDirectoryEntry;
352 if (OrganiserDataSentByParam.size() > 0){
354 DataLine += ";SENT-BY=\"";
355 DataLine += OrganiserDataSentByParam;
360 if (OrganiserDataLanguage.size() > 0){
362 DataLine += ";LANGUAGE=";
363 DataLine += OrganiserDataLanguage;
367 if (OrganiserDataTokens.size() > 0){
370 DataLine += OrganiserDataTokens;
375 DataLine += OrganiserData;
378 DataLineProcessed = OutputText(&DataLine);
380 *SaveData += DataLineProcessed;
383 DataLineProcessed.clear();
387 // Process the PERCENT-COMPLETE value.
389 if (PercentCompleteData.size() > 0){
391 if (PercentCompleteTokens.size() > 0){
393 DataLine += "PERCENT-COMPLETE;";
394 DataLine += PercentCompleteTokens;
398 DataLine += "PERCENT-COMPLETE";
403 DataLine += PercentCompleteData;
406 DataLineProcessed = OutputText(&DataLine);
408 *SaveData += DataLineProcessed;
411 DataLineProcessed.clear();
415 // Process the PRIORITY value.
417 if (PriorityData > -1 && PriorityData < 10){
419 DataLine += "PRIORITY";
421 if (PriorityTokens.size() > 0){
424 DataLine += PriorityTokens;
429 DataLine += to_string(PriorityData);
432 DataLineProcessed = OutputText(&DataLine);
434 *SaveData += DataLineProcessed;
437 DataLineProcessed.clear();
441 // Process the RECURRENCE-ID value.
443 if (RecurranceIDData.size() > 0){
445 DataLine += "RECURRENCE-ID";
447 if (RecurranceIDDataTimeZoneParam.size() > 0){
449 DataLine += ";TZID=";
450 DataLine += RecurranceIDDataTimeZoneParam;
454 if (RecurranceIDDataRangeParam.size() > 0){
456 DataLine += ";RANGE=";
457 DataLine += RecurranceIDDataRangeParam;
461 if (RecurranceIDDataValue.size() > 0){
463 DataLine += ";VALUE=";
464 DataLine += RecurranceIDDataValue;
468 if (RecurranceIDDataTokens.size() > 0){
471 DataLine += RecurranceIDDataTokens;
476 DataLine += RecurranceIDData;
479 DataLineProcessed = OutputText(&DataLine);
481 *SaveData += DataLineProcessed;
484 DataLineProcessed.clear();
488 // Process the SEQUENCE value.
490 if (SequenceData > -1 && SequenceData < 10){
492 DataLine += "SEQUENCE";
494 if (SequenceTokens.size() > 0){
497 DataLine += SequenceTokens;
502 DataLine += to_string(SequenceData);
505 DataLineProcessed = OutputText(&DataLine);
507 *SaveData += DataLineProcessed;
510 DataLineProcessed.clear();
514 // Process the STATUS value.
516 if (StatusData.size() > 0){
518 DataLine += "STATUS";
520 if (StatusLanguage.size() > 0){
522 DataLine += ";LANGUAGE=";
523 DataLine += StatusLanguage;
527 if (StatusTokens.size() > 0){
530 DataLine += StatusTokens;
535 DataLine += StatusData;
538 DataLineProcessed = OutputText(&DataLine);
540 *SaveData += DataLineProcessed;
543 DataLineProcessed.clear();
547 // Process the SUMMARY.
549 if (SummaryData.size() > 0){
551 DataLine += "SUMMARY";
553 if (SummaryDataAltRep.size() > 0){
555 DataLine += ";ALTREP=\"";
556 DataLine += SummaryDataAltRep;
561 if (SummaryDataLanguage.size() > 0){
563 DataLine += ";LANGUAGE=";
564 DataLine += SummaryDataLanguage;
568 if (SummaryDataTokens.size() > 0){
571 DataLine += SummaryDataTokens;
576 DataLine += SummaryData;
579 DataLineProcessed = OutputText(&DataLine);
581 *SaveData += DataLineProcessed;
584 DataLineProcessed.clear();
588 // Process the URL value.
590 if (URLData.size() > 0){
594 if (URLDataTokens.size() > 0){
597 DataLine += URLDataTokens;
605 DataLineProcessed = OutputText(&DataLine);
607 *SaveData += DataLineProcessed;
610 DataLineProcessed.clear();
614 // Process the RRULE value.
616 if (RecurranceRuleData.size() > 0){
620 if (RecurranceRuleDataTokens.size() > 0){
623 DataLine += RecurranceRuleDataTokens;
628 DataLine += RecurranceRuleData;
631 DataLineProcessed = OutputText(&DataLine);
633 *SaveData += DataLineProcessed;
636 DataLineProcessed.clear();
640 // Process the DUE value.
642 if (DueData.size() > 0){
646 if (DueDataTimeZoneID.size() > 0){
648 DataLine += ";TZID=";
649 DataLine += DueDataTimeZoneID;
653 if (DueDataValue.size() > 0){
655 DataLine += ";VALUE=";
656 DataLine += DueDataValue;
660 if (SummaryDataTokens.size() > 0){
663 DataLine += DueDataTokens;
671 DataLineProcessed = OutputText(&DataLine);
673 *SaveData += DataLineProcessed;
676 DataLineProcessed.clear();
680 // Process the ATTACH values.
682 if (AttachList.size() > 0){
684 for (int AttachListSeek = 0; AttachListSeek < AttachList.size();
687 DataLine += "ATTACH";
689 if (AttachListFormatType[AttachListSeek].size() > 0){
691 DataLine += ";FMTTYPE=";
692 DataLine += AttachListFormatType[AttachListSeek];
696 if (AttachListValue[AttachListSeek].size() > 0){
698 DataLine += ";VALUE=";
699 DataLine += AttachListValue[AttachListSeek];
703 if (AttachListEncoding[AttachListSeek].size() > 0){
705 DataLine += ";ENCODING=";
706 DataLine += AttachListEncoding[AttachListSeek];
710 if (AttachListTokens[AttachListSeek].size() > 0){
713 DataLine += AttachListTokens[AttachListSeek];
718 DataLine += AttachList[AttachListSeek];
721 DataLineProcessed = OutputText(&DataLine);
723 *SaveData += DataLineProcessed;
726 DataLineProcessed.clear();
732 // Process the ATTENDEE value.
734 if (AttendeeList.size() > 0){
736 for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size();
739 DataLine += "ATTENDEE";
741 if (AttendeeListMember[AttendeeListSeek].size() > 0){
743 DataLine += ";MEMBER=\"";
744 DataLine += AttendeeListMember[AttendeeListSeek];
749 if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){
751 DataLine += ";DELEGATED-FROM=\"";
752 DataLine += AttendeeListDelegatedFrom[AttendeeListSeek];
757 if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){
759 DataLine += ";DELEGATED-TO=\"";
760 DataLine += AttendeeListDelegatedTo[AttendeeListSeek];
765 if (AttendeeListRole[AttendeeListSeek].size() > 0){
767 DataLine += ";ROLE=";
768 DataLine += AttendeeListRole[AttendeeListSeek];
772 if (AttendeeListRSVP[AttendeeListSeek].size() > 0){
774 DataLine += ";RSVP=";
775 DataLine += AttendeeListRSVP[AttendeeListSeek];
779 if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){
781 DataLine += ";DIR=\"";
782 DataLine += AttendeeListDirectoryEntry[AttendeeListSeek];
787 if (AttendeeListSentBy[AttendeeListSeek].size() > 0){
789 DataLine += ";SENT-BY=\"";
790 DataLine += AttendeeListSentBy[AttendeeListSeek];
795 if (AttendeeListCommonName[AttendeeListSeek].size() > 0){
797 DataLine += ";CN=\"";
798 DataLine += AttendeeListCommonName[AttendeeListSeek];
803 if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){
805 DataLine += ";CUTYPE=";
806 DataLine += AttendeeListCalendarUserType[AttendeeListSeek];
810 if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){
812 DataLine += ";PARTSTAT=";
813 DataLine += AttendeeListParticipationStatus[AttendeeListSeek];
817 if (AttendeeListLanguage[AttendeeListSeek].size() > 0){
819 DataLine += ";LANGUAGE=";
820 DataLine += AttendeeListLanguage[AttendeeListSeek];
824 if (AttendeeListTokens[AttendeeListSeek].size() > 0){
827 DataLine += AttendeeListTokens[AttendeeListSeek];
832 DataLine += AttendeeList[AttendeeListSeek];
835 DataLineProcessed = OutputText(&DataLine);
837 *SaveData += DataLineProcessed;
840 DataLineProcessed.clear();
846 *SaveData += "END:VTODO\n";