// 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"; }