// 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 = ""; *saveData += "BEGIN:VTODO\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 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 (percentCompleteTokens.size() > 0){ dataLine += "PERCENT-COMPLETE;"; dataLine += percentCompleteTokens; } else { 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.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 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"; }