// CalendarJournal.cpp - CalendarJournal 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 "CalendarJournal.h" using namespace std; void CalendarJournalObject::SaveObjectData(string *saveData){ string dataLine = ""; string dataLineProcessed = ""; *saveData += "BEGIN:VJOURNAL\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 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. if (classData.size() > 0){ dataLine += "CLASS"; if (classDataTokens.size() > 0){ dataLine += ";"; dataLine += classDataTokens; } dataLine += ":"; dataLine += classData; 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 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 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 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 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 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 DESCRIPTION values. if (descriptionList.size() > 0){ for (int descriptionListSeek = 0; descriptionListSeek < descriptionList.size() > 0; descriptionListSeek++){ dataLine += "DESCRIPTION"; if (descriptionListAltRep[descriptionListSeek].size() > 0){ dataLine += ";ALTREP=\""; dataLine += descriptionListAltRep[descriptionListSeek]; dataLine += "\""; } if (descriptionListLanguage[descriptionListSeek].size() > 0){ dataLine += ";LANGUAGE="; dataLine += descriptionListLanguage[descriptionListSeek]; } if (descriptionListTokens[descriptionListSeek].size() > 0){ dataLine += ";"; dataLine += descriptionListTokens[descriptionListSeek]; } dataLine += ":"; dataLine += descriptionList[descriptionListSeek]; 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 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 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 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 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:VJOURNAL\n"; }