// CalendarEvent.cpp - CalendarEventObject class save functions // // (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // // Xestia Calendar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // // Xestia Calendar is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with Xestia Calendar. If not, see #include "CalendarEvent.h" using namespace std; void CalendarEventObject::SaveObjectData(string *SaveData){ string DataLine = ""; string DataLineProcessed = ""; *SaveData += "BEGIN:VEVENT\n"; // Process the UID. if (UniqueID.size() > 0){ if (UniqueIDTokens.size() > 0){ DataLine += "UID;"; DataLine += UniqueIDTokens; } else { DataLine += "UID"; } DataLine += ":"; DataLine += UniqueID; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DTSTAMP. if (DateTimeStampData.size() > 0){ if (DateTimeStampTokens.size() > 0){ DataLine += "DTSTAMP;"; DataLine += DateTimeStampTokens; } else { DataLine += "DTSTAMP"; } DataLine += ":"; DataLine += DateTimeStampData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DTSTART. if (DateTimeStartData.size() > 0){ DataLine += "DTSTART"; if (DateTimeStartDataValue.size() > 0){ DataLine += ";VALUE="; DataLine += DateTimeStartDataValue; } if (DateTimeStartDataTimeZoneID.size() > 0){ DataLine += ";TZID="; DataLine += DateTimeStartDataTimeZoneID; } if (DateTimeStartDataTokens.size() > 0){ DataLine += ";"; DataLine += DateTimeStartDataTokens; } DataLine += ":"; DataLine += DateTimeStartData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DTEND. if (DateTimeEndData.size() > 0){ DataLine += "DTEND"; if (DateTimeEndDataValue.size() > 0){ DataLine += ";VALUE="; DataLine += DateTimeEndDataValue; } if (DateTimeEndDataTimeZoneID.size() > 0){ DataLine += ";TZID="; DataLine += DateTimeEndDataTimeZoneID; } if (DateTimeEndDataTokens.size() > 0){ DataLine += ";"; DataLine += DateTimeEndDataTokens; } DataLine += ":"; DataLine += DateTimeEndData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the SUMMARY. if (SummaryData.size() > 0){ DataLine += "SUMMARY"; if (SummaryDataAltRep.size() > 0){ DataLine += ";ALTREP=\""; DataLine += SummaryDataAltRep; DataLine += "\""; } if (SummaryDataLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += SummaryDataLanguage; } if (SummaryDataTokens.size() > 0){ DataLine += ";"; DataLine += SummaryDataTokens; } DataLine += ":"; DataLine += SummaryData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the CLASS value. if (ClassData.size() > 0){ if (ClassDataTokens.size() > 0){ DataLine += "CLASS;"; DataLine += ClassDataTokens; } else { DataLine += "CLASS"; } DataLine += ":"; DataLine += ClassData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the CREATED value. if (DateTimeCreatedData.size() > 0){ if (DateTimeCreatedTokens.size() > 0){ DataLine += "CREATED;"; DataLine += DateTimeCreatedTokens; } else { DataLine += "CREATED"; } DataLine += ":"; DataLine += DateTimeCreatedData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DESCRIPTION values. Write out the // first DESCRPITION only as per RFC5545 specifcation. if (DescriptionList.size() > 0){ DataLine += "DESCRIPTION"; if (DescriptionListAltRep[0].size() > 0){ DataLine += ";ALTREP=\""; DataLine += DescriptionListAltRep[0]; DataLine += "\""; } if (DescriptionListLanguage[0].size() > 0){ DataLine += ";LANGUAGE="; DataLine += DescriptionListLanguage[0]; } if (DescriptionListTokens[0].size() > 0){ DataLine += ";"; DataLine += DescriptionListTokens[0]; } DataLine += ":"; DataLine += DescriptionList[0]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the GEO value. if (GeographicData.size() > 0){ if (GeographicTokens.size() > 0){ DataLine += "GEO;"; DataLine += GeographicTokens; } else { DataLine += "GEO"; } DataLine += ":"; DataLine += GeographicData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the LAST-MODIFIED value. if (LastModifiedData.size() > 0){ if (LastModifiedTokens.size() > 0){ DataLine += "LAST-MODIFIED;"; DataLine += LastModifiedTokens; } else { DataLine += "LAST-MODIFIED"; } DataLine += ":"; DataLine += LastModifiedData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the LOCATION value. if (LocationData.size() > 0){ DataLine += "LOCATION"; if (LocationDataAltRep.size() > 0){ DataLine += ";ALTREP=\""; DataLine += LocationDataAltRep; DataLine += "\""; } if (LocationDataLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += LocationDataLanguage; } if (LocationDataTokens.size() > 0){ DataLine += ";"; DataLine += LocationDataTokens; } DataLine += ":"; DataLine += LocationData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the ORGANIZER value. if (OrganiserData.size() > 0){ DataLine += "ORGANIZER"; if (OrganiserDataCommonName.size() > 0){ DataLine += ";CN="; DataLine += OrganiserDataCommonName; } if (OrganiserDataDirectoryEntry.size() > 0){ DataLine += ";DIR=\""; DataLine += OrganiserDataDirectoryEntry; DataLine += "\""; } if (OrganiserDataSentByParam.size() > 0){ DataLine += ";SENT-BY=\""; DataLine += OrganiserDataSentByParam; DataLine += "\""; } if (OrganiserDataLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += OrganiserDataLanguage; } if (OrganiserDataTokens.size() > 0){ DataLine += ";"; DataLine += OrganiserDataTokens; } DataLine += ":"; DataLine += OrganiserData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the PRIORITY value. if (PriorityData > -1 && PriorityData < 10){ DataLine += "PRIORITY"; if (PriorityTokens.size() > 0){ DataLine += ";"; DataLine += PriorityTokens; } DataLine += ":"; DataLine += to_string(PriorityData); DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the SEQUENCE value. if (SequenceData > -1 && SequenceData < 10){ DataLine += "SEQUENCE"; if (SequenceTokens.size() > 0){ DataLine += ";"; DataLine += SequenceTokens; } DataLine += ":"; DataLine += to_string(SequenceData); DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the STATUS value. if (StatusData.size() > 0){ DataLine += "STATUS"; if (StatusLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += StatusLanguage; } if (StatusTokens.size() > 0){ DataLine += ";"; DataLine += StatusTokens; } DataLine += ":"; DataLine += StatusData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the TRANSP value. if (TimeTransparencyData.size() > 0){ DataLine += "TRANSP"; if (TimeTransparencyDataTokens.size() > 0){ DataLine += ";"; DataLine += TimeTransparencyDataTokens; } DataLine += ":"; DataLine += TimeTransparencyData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the URL value. if (URLData.size() > 0){ DataLine += "URL"; if (URLDataTokens.size() > 0){ DataLine += ";"; DataLine += URLDataTokens; } DataLine += ":"; DataLine += URLData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the RECURRENCE-ID value. if (RecurranceIDData.size() > 0){ DataLine += "RECURRENCE-ID"; if (RecurranceIDDataTimeZoneParam.size() > 0){ DataLine += ";TZID="; DataLine += RecurranceIDDataTimeZoneParam; } if (RecurranceIDDataRangeParam.size() > 0){ DataLine += ";RANGE="; DataLine += RecurranceIDDataRangeParam; } if (RecurranceIDDataValue.size() > 0){ DataLine += ";VALUE="; DataLine += RecurranceIDDataValue; } if (RecurranceIDDataTokens.size() > 0){ DataLine += ";"; DataLine += RecurranceIDDataTokens; } DataLine += ":"; DataLine += RecurranceIDData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DURATION value. if (DurationData.size() > 0){ DataLine += "DURATION"; if (DurationDataTokens.size() > 0){ DataLine += ";"; DataLine += DurationDataTokens; } DataLine += ":"; DataLine += DurationData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the RRULE value. if (RecurranceRuleData.size() > 0){ DataLine += "RRULE"; if (RecurranceRuleDataTokens.size() > 0){ DataLine += ";"; DataLine += RecurranceRuleDataTokens; } DataLine += ":"; DataLine += RecurranceRuleData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the ATTACH values. if (AttachList.size() > 0){ for (int AttachListSeek = 0; AttachListSeek < AttachList.size(); AttachListSeek++){ DataLine += "ATTACH"; if (AttachListFormatType[AttachListSeek].size() > 0){ DataLine += ";FMTTYPE="; DataLine += AttachListFormatType[AttachListSeek]; } if (AttachListValue[AttachListSeek].size() > 0){ DataLine += ";VALUE="; DataLine += AttachListValue[AttachListSeek]; } if (AttachListEncoding[AttachListSeek].size() > 0){ DataLine += ";ENCODING="; DataLine += AttachListEncoding[AttachListSeek]; } if (AttachListTokens[AttachListSeek].size() > 0){ DataLine += ";"; DataLine += AttachListTokens[AttachListSeek]; } DataLine += ":"; DataLine += AttachList[AttachListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the ATTENDEE value. if (AttendeeList.size() > 0){ for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size(); AttendeeListSeek++){ DataLine += "ATTENDEE"; if (AttendeeListMember[AttendeeListSeek].size() > 0){ DataLine += ";MEMBER=\""; DataLine += AttendeeListMember[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){ DataLine += ";DELEGATED-FROM=\""; DataLine += AttendeeListDelegatedFrom[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){ DataLine += ";DELEGATED-TO=\""; DataLine += AttendeeListDelegatedTo[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListRole[AttendeeListSeek].size() > 0){ DataLine += ";ROLE="; DataLine += AttendeeListRole[AttendeeListSeek]; } if (AttendeeListRSVP[AttendeeListSeek].size() > 0){ DataLine += ";RSVP="; DataLine += AttendeeListRSVP[AttendeeListSeek]; } if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){ DataLine += ";DIR=\""; DataLine += AttendeeListDirectoryEntry[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListSentBy[AttendeeListSeek].size() > 0){ DataLine += ";SENT-BY=\""; DataLine += AttendeeListSentBy[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListCommonName[AttendeeListSeek].size() > 0){ DataLine += ";CN=\""; DataLine += AttendeeListCommonName[AttendeeListSeek]; DataLine += "\""; } if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){ DataLine += ";CUTYPE="; DataLine += AttendeeListCalendarUserType[AttendeeListSeek]; } if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){ DataLine += ";PARTSTAT="; DataLine += AttendeeListParticipationStatus[AttendeeListSeek]; } if (AttendeeListLanguage[AttendeeListSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += AttendeeListLanguage[AttendeeListSeek]; } if (AttendeeListTokens[AttendeeListSeek].size() > 0){ DataLine += ";"; DataLine += AttendeeListTokens[AttendeeListSeek]; } DataLine += ":"; DataLine += AttendeeList[AttendeeListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the CATEGORIES value. if (CategoriesList.size() > 0){ for (int CategoriesListSeek = 0; CategoriesListSeek < CategoriesList.size(); CategoriesListSeek++){ DataLine += "CATEGORIES"; if (CategoriesListLanguage[CategoriesListSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += CategoriesListLanguage[CategoriesListSeek]; } if (CategoriesListTokens[CategoriesListSeek].size() > 0){ DataLine += ";"; DataLine += CategoriesListTokens[CategoriesListSeek]; } DataLine += ":"; DataLine += CategoriesList[CategoriesListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the COMMENT value. if (CommentList.size() > 0){ for (int CommentListSeek = 0; CommentListSeek < CommentList.size(); CommentListSeek++){ DataLine += "COMMENT"; if (CommentListAltRep[CommentListSeek].size() > 0){ DataLine += ";ALTREP=\""; DataLine += CommentListAltRep[CommentListSeek]; DataLine += "\""; } if (CommentListLanguage[CommentListSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += CommentListLanguage[CommentListSeek]; } if (CommentListTokens[CommentListSeek].size() > 0){ DataLine += ";"; DataLine += CommentListTokens[CommentListSeek]; } DataLine += ":"; DataLine += CommentList[CommentListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the CONTACT value. if (ContactList.size() > 0){ for (int ContactListSeek = 0; ContactListSeek < ContactList.size(); ContactListSeek++){ DataLine += "CONTACT"; if (ContactListAltRep[ContactListSeek].size() > 0){ DataLine += ";ALTREP=\""; DataLine += ContactListAltRep[ContactListSeek]; DataLine += "\""; } if (ContactListLanguage[ContactListSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += ContactListLanguage[ContactListSeek]; } if (ContactListTokens[ContactListSeek].size() > 0){ DataLine += ";"; DataLine += ContactListTokens[ContactListSeek]; } DataLine += ":"; DataLine += ContactList[ContactListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the EXDATE value. if (ExcludeDateData.size() > 0){ for (int ExcludeDateDataSeek = 0; ExcludeDateDataSeek < ExcludeDateData.size(); ExcludeDateDataSeek++){ DataLine += "EXDATE"; if (ExcludeDateDataTimeZoneParam[ExcludeDateDataSeek].size() > 0){ DataLine += ";TZID="; DataLine += ExcludeDateDataTimeZoneParam[ExcludeDateDataSeek]; } if (ExcludeDateDataValue[ExcludeDateDataSeek].size() > 0){ DataLine += ";VALUE="; DataLine += ExcludeDateDataValue[ExcludeDateDataSeek]; } if (ExcludeDateDataTokens[ExcludeDateDataSeek].size() > 0){ DataLine += ";"; DataLine += ExcludeDateDataTokens[ExcludeDateDataSeek]; } DataLine += ":"; DataLine += ExcludeDateData[ExcludeDateDataSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the REQUEST-STATUS value. if (RequestStatusData.size() > 0){ for (int RequestStatusDataSeek = 0; RequestStatusDataSeek < RequestStatusData.size(); RequestStatusDataSeek++){ DataLine += "REQUEST-STATUS"; if (RequestStatusLanguage[RequestStatusDataSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += RequestStatusLanguage[RequestStatusDataSeek]; } if (RequestStatusTokens[RequestStatusDataSeek].size() > 0){ DataLine += ";"; DataLine += RequestStatusTokens[RequestStatusDataSeek]; } DataLine += ":"; DataLine += RequestStatusData[RequestStatusDataSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the RELATED-TO value. if (RelatedToData.size() > 0){ for (int RequestToDataSeek = 0; RequestToDataSeek < RelatedToData.size(); RequestToDataSeek++){ DataLine += "RELATED-TO"; if (RelatedToDataRelationType[RequestToDataSeek].size() > 0){ DataLine += ";RELTYPE="; DataLine += RelatedToDataRelationType[RequestToDataSeek]; } if (RelatedToDataTokens[RequestToDataSeek].size() > 0){ DataLine += ";"; DataLine += RelatedToDataTokens[RequestToDataSeek]; } DataLine += ":"; DataLine += RelatedToData[RequestToDataSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the RESOURCES value. if (ResourcesData.size() > 0){ for (int ResourcesDataSeek = 0; ResourcesDataSeek < ResourcesData.size(); ResourcesDataSeek++){ DataLine += "RESOURCES"; if (ResourcesDataAltRep[ResourcesDataSeek].size() > 0){ DataLine += ";ALTREP=\""; DataLine += ResourcesDataAltRep[ResourcesDataSeek]; DataLine += "\""; } if (ResourcesDataLanguage[ResourcesDataSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += ResourcesDataLanguage[ResourcesDataSeek]; } if (ResourcesDataTokens[ResourcesDataSeek].size() > 0){ DataLine += ";"; DataLine += ResourcesDataTokens[ResourcesDataSeek]; } DataLine += ":"; DataLine += ResourcesData[ResourcesDataSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the RDATE value. if (RecurranceDateData.size() > 0){ for (int RecurranceDateDataSeek = 0; RecurranceDateDataSeek < RecurranceDateData.size(); RecurranceDateDataSeek++){ DataLine += "RDATE"; if (RecurranceDateDataValue[RecurranceDateDataSeek].size() > 0){ DataLine += ";VALUE="; DataLine += RecurranceDateDataValue[RecurranceDateDataSeek]; } if (RecurranceDateDataTimeZoneParam[RecurranceDateDataSeek].size() > 0){ DataLine += ";TZID="; DataLine += RecurranceDateDataTimeZoneParam[RecurranceDateDataSeek]; } if (RecurranceDateDataTokens[RecurranceDateDataSeek].size() > 0){ DataLine += ";"; DataLine += RecurranceDateDataTokens[RecurranceDateDataSeek]; } DataLine += ":"; DataLine += RecurranceDateData[RecurranceDateDataSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the VALARMS. if (CalendarAlarmData.size() > 0){ for (int CalendarAlarmDataSeek = 0; CalendarAlarmDataSeek < CalendarAlarmData.size(); CalendarAlarmDataSeek++){ *SaveData += "BEGIN:VALARM\n"; // Process the ACTION VALARM value. DataLine += "ACTION"; if (CalendarAlarmData[CalendarAlarmDataSeek].AlarmActionTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AlarmActionTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AlarmAction; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); // Process the TRIGGER VALARM value. if (CalendarAlarmData[CalendarAlarmDataSeek].TriggerData.size() > 0){ DataLine += "TRIGGER"; if (CalendarAlarmData[CalendarAlarmDataSeek].TriggerRelated.size() > 0){ DataLine += ";RELATED="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].TriggerRelated; } if (CalendarAlarmData[CalendarAlarmDataSeek].TriggerValue.size() > 0){ DataLine += ";VALUE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].TriggerValue; } if (CalendarAlarmData[CalendarAlarmDataSeek].TriggerTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].TriggerTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].TriggerData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DURATION VALARM value. if (CalendarAlarmData[CalendarAlarmDataSeek].DurationData.size() > 0){ DataLine += "DURATION"; if (CalendarAlarmData[CalendarAlarmDataSeek].DurationTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DurationTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DurationData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the DESCRIPTION VALARM value. if (CalendarAlarmData[CalendarAlarmDataSeek].DescriptionData.size() > 0){ DataLine += "DESCRIPTION"; if (CalendarAlarmData[CalendarAlarmDataSeek].DescriptionAltRep.size() > 0){ DataLine += ";ALTREP=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DescriptionAltRep; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].DescriptionLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DescriptionLanguage; } if (CalendarAlarmData[CalendarAlarmDataSeek].DescriptionTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DescriptionTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].DescriptionData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the SUMMARY VALARM value. if (CalendarAlarmData[CalendarAlarmDataSeek].SummaryData.size() > 0){ DataLine += "SUMMARY"; if (CalendarAlarmData[CalendarAlarmDataSeek].SummaryAltRep.size() > 0){ DataLine += ";ALTREP=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].SummaryAltRep; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].SummaryLanguage.size() > 0){ DataLine += ";LANGUAGE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].SummaryLanguage; } if (CalendarAlarmData[CalendarAlarmDataSeek].SummaryTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].SummaryTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].SummaryData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the REPEAT VALARM value. if (CalendarAlarmData[CalendarAlarmDataSeek].RepeatData.size() > 0){ DataLine += "REPEAT"; if (CalendarAlarmData[CalendarAlarmDataSeek].RepeatTokens.size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].RepeatTokens; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].RepeatData; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } // Process the ATTENDEE VALARM values. if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeList.size() > 0){ for (int AttendeeListSeek = 0; AttendeeListSeek < CalendarAlarmData[CalendarAlarmDataSeek].AttendeeList.size(); AttendeeListSeek++){ DataLine += "ATTENDEE"; if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListMember[AttendeeListSeek].size() > 0){ DataLine += ";MEMBER=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListMember[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){ DataLine += ";DELEGATED-FROM=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDelegatedFrom[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){ DataLine += ";DELEGATED-TO=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDelegatedTo[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListRole[AttendeeListSeek].size() > 0){ DataLine += ";ROLE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListRole[AttendeeListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListRSVP[AttendeeListSeek].size() > 0){ DataLine += ";RSVP="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListRSVP[AttendeeListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){ DataLine += ";DIR=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListDirectoryEntry[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListSentBy[AttendeeListSeek].size() > 0){ DataLine += ";SENT-BY=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListSentBy[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListCommonName[AttendeeListSeek].size() > 0){ DataLine += ";CN=\""; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListCommonName[AttendeeListSeek]; DataLine += "\""; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){ DataLine += ";CUTYPE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListCalendarUserType[AttendeeListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){ DataLine += ";PARTSTAT="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListParticipationStatus[AttendeeListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListLanguage[AttendeeListSeek].size() > 0){ DataLine += ";LANGUAGE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListLanguage[AttendeeListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListTokens[AttendeeListSeek].size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeListTokens[AttendeeListSeek]; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttendeeList[AttendeeListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the ATTACH VALARM values. if (CalendarAlarmData[CalendarAlarmDataSeek].AttachList.size() > 0){ for (int AttachListSeek = 0; AttachListSeek < CalendarAlarmData[CalendarAlarmDataSeek].AttachList.size(); AttachListSeek++){ DataLine += "ATTACH"; if (CalendarAlarmData[CalendarAlarmDataSeek].AttachListFormatType[AttachListSeek].size() > 0){ DataLine += ";FMTTYPE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttachListFormatType[AttachListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttachListValue[AttachListSeek].size() > 0){ DataLine += ";VALUE="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttachListValue[AttachListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttachListEncoding[AttachListSeek].size() > 0){ DataLine += ";ENCODING="; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttachListEncoding[AttachListSeek]; } if (CalendarAlarmData[CalendarAlarmDataSeek].AttachListTokens[AttachListSeek].size() > 0){ DataLine += ";"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttachListTokens[AttachListSeek]; } DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].AttachList[AttachListSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } // Process the X-Token VALARM values. if (CalendarAlarmData[CalendarAlarmDataSeek].XTokensData.size() > 0){ for (int XTokenSeek = 0; XTokenSeek < CalendarAlarmData[CalendarAlarmDataSeek].XTokensData.size(); XTokenSeek++){ DataLine += CalendarAlarmData[CalendarAlarmDataSeek].XTokensDataTokens[XTokenSeek]; DataLine += ":"; DataLine += CalendarAlarmData[CalendarAlarmDataSeek].XTokensData[XTokenSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } *SaveData += "END:VALARM\n"; } } // Process the X-Token values. if (XTokensData.size() > 0){ for (int XTokenSeek = 0; XTokenSeek < XTokensData.size(); XTokenSeek++){ DataLine += XTokensDataTokens[XTokenSeek]; DataLine += ":"; DataLine += XTokensData[XTokenSeek]; DataLine += "\n"; DataLineProcessed = OutputText(&DataLine); *SaveData += DataLineProcessed; DataLine.clear(); DataLineProcessed.clear(); } } *SaveData += "END:VEVENT\n"; }