X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fobjects%2Fcalendartask%2FCalendarTask-Save.cpp;h=6a138bd070675f173171f48b401d45d5eaf82c0a;hp=740beb71b3e47853b114f6462f2de8030a203e6e;hb=3e3ae5dc244fc2f0a905d0e3ba04d974809f02b7;hpb=1e64482f6662b22b3e544aa191485150e1b6e2b4 diff --git a/source/objects/calendartask/CalendarTask-Save.cpp b/source/objects/calendartask/CalendarTask-Save.cpp index 740beb7..6a138bd 100644 --- a/source/objects/calendartask/CalendarTask-Save.cpp +++ b/source/objects/calendartask/CalendarTask-Save.cpp @@ -1,40 +1,1655 @@ +// CalendarTask-Save.cpp - CalendarTask 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 "CalendarTask.h" using namespace std; void CalendarTaskObject::SaveObjectData(string *SaveData){ - string DataLine = ""; - string DataLineProcessed = ""; + string dataLine = ""; + string dataLineProcessed = ""; - *SaveData += "BEGIN:VTODO\n"; + *saveData += "BEGIN:VTODO\n"; // Process the UID. - if (UniqueID.size() > 0){ + 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 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 COMPLETED value. + + if (completedData.size() > 0){ + + if (completedDataTokens.size() > 0){ + + dataLine += "COMPLETED;"; + dataLine += completedDataTokens; + + } else { + + dataLine += "COMPLETED"; + + } + + dataLine += ":"; + dataLine += completedData; + 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 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 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 PERCENT-COMPLETE value. + + if (percentCompleteData.size() > 0){ - if (UniqueIDTokens.size() > 0){ + if (percentCompleteTokens.size() > 0){ - DataLine += "UID;"; - DataLine += UniqueIDTokens; + dataLine += "PERCENT-COMPLETE;"; + dataLine += percentCompleteTokens; } else { - DataLine += "UID"; + dataLine += "PERCENT-COMPLETE"; + + } + + dataLine += ":"; + dataLine += percentCompleteData; + 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 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 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 += ":"; - DataLine += UniqueID; - DataLine += "\n"; + dataLine.clear(); + dataLineProcessed.clear(); - DataLineProcessed = OutputText(&DataLine); + } + + // Process the SEQUENCE value. + + if (sequenceData > -1 && sequenceData < 10){ - *SaveData += DataLineProcessed; + dataLine += "SEQUENCE"; - DataLine.clear(); - DataLineProcessed.clear(); + 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 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 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 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 DUE value. + + if (dueData.size() > 0){ + + dataLine += "DUE"; + + if (dueDataTimeZoneID.size() > 0){ + + dataLine += ";TZID="; + dataLine += dueDataTimeZoneID; + + } + + if (dueDataValue.size() > 0){ + + dataLine += ";VALUE="; + dataLine += dueDataValue; + + } + + if (dueDataTokens.size() > 0){ + + dataLine += ";"; + dataLine += dueDataTokens; + + } + + dataLine += ":"; + dataLine += dueData; + 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 (xTokenData.size() > 0){ + + for (int XTokenSeek = 0; XTokenSeek < xTokenData.size(); + XTokenSeek++){ + + dataLine += xTokenDataTokens[XTokenSeek]; + dataLine += ":"; + dataLine += xTokenData[XTokenSeek]; + dataLine += "\n"; + + dataLineProcessed = OutputText(&dataLine); + + *SaveData += dataLineProcessed; + + dataLine.clear(); + dataLineProcessed.clear(); + + } + } *SaveData += "END:VTODO\n";