// CalendarFreeBusy-Save.cpp - CalendarFreeBusy 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 "CalendarFreeBusy.h" using namespace std; void CalendarFreeBusyObject::SaveObjectData(string *saveData){ string dataLine = ""; string dataLineProcessed = ""; *saveData += "BEGIN:VFREEBUSY\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 CONTACT value. if (contactList.size() > 0){ if (contactList[0].size() > 0){ dataLine += "CONTACT"; if (contactListAltRep[0].size() > 0){ dataLine += ";ALTREP=\""; dataLine += contactListAltRep[0]; dataLine += "\""; } if (contactListLanguage[0].size() > 0){ dataLine += ";LANGUAGE="; dataLine += contactListLanguage[0]; } if (contactListTokens[0].size() > 0){ dataLine += ";"; dataLine += contactListTokens[0]; } dataLine += ":"; dataLine += contactList[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 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 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 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 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 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 FREEBUSY value. if (freeBusyList.size() > 0){ for (int freeBusyListSeek = 0; freeBusyListSeek < freeBusyList.size(); freeBusyListSeek++){ dataLine += "FREEBUSY"; if (freeBusyListType[freeBusyListSeek].size() > 0){ dataLine += ";FBTYPE="; dataLine += freeBusyListType[freeBusyListSeek]; } if (freeBusyListTokens[freeBusyListSeek].size() > 0){ dataLine += ";"; dataLine += freeBusyListTokens[freeBusyListSeek]; } dataLine += ":"; dataLine += freeBusyList[freeBusyListSeek]; 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:VFREEBUSY\n"; }