+// 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 <http://www.gnu.org/licenses/>
+
#include "CalendarFreeBusy.h"
using namespace std;
void CalendarFreeBusyObject::SaveObjectData(string *SaveData){
- string DataLine = "";
- string DataLineProcessed = "";
+ string dataLine = "";
+ string dataLineProcessed = "";
- *SaveData += "BEGIN:VFREEBUSY\n";
+ *saveData += "BEGIN:VFREEBUSY\n";
// Process the UID.
- if (UniqueID.size() > 0){
+ if (uniqueID.size() > 0){
- if (UniqueIDTokens.size() > 0){
+ if (uniqueIDTokens.size() > 0){
- DataLine += "UID;";
- DataLine += UniqueIDTokens;
+ dataLine += "UID;";
+ dataLine += uniqueIDTokens;
} else {
- DataLine += "UID";
+ dataLine += "UID";
}
- DataLine += ":";
- DataLine += UniqueID;
- DataLine += "\n";
+ dataLine += ":";
+ dataLine += uniqueID;
+ dataLine += "\n";
- DataLineProcessed = OutputText(&DataLine);
+ dataLineProcessed = OutputText(&dataLine);
- *SaveData += DataLineProcessed;
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
}
// Process the DTSTAMP.
- if (DateTimeStampData.size() > 0){
+ if (dateTimeStampData.size() > 0){
- if (DateTimeStampTokens.size() > 0){
+ if (dateTimeStampTokens.size() > 0){
- DataLine += "DTSTAMP;";
- DataLine += DateTimeStampTokens;
+ dataLine += "DTSTAMP;";
+ dataLine += dateTimeStampTokens;
} else {
- DataLine += "DTSTAMP";
+ dataLine += "DTSTAMP";
}
- DataLine += ":";
- DataLine += DateTimeStampData;
- DataLine += "\n";
+ dataLine += ":";
+ dataLine += dateTimeStampData;
+ dataLine += "\n";
- DataLineProcessed = OutputText(&DataLine);
+ dataLineProcessed = OutputText(&dataLine);
- *SaveData += DataLineProcessed;
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
}
// Process the CONTACT value.
- if (ContactList.size() > 0){
+ if (contactList.size() > 0){
- if (ContactList[0].size() > 0){
+ if (contactList[0].size() > 0){
- DataLine += "CONTACT";
+ dataLine += "CONTACT";
- if (ContactListAltRep[0].size() > 0){
+ if (contactListAltRep[0].size() > 0){
- DataLine += ";ALTREP=\"";
- DataLine += ContactListAltRep[0];
- DataLine += "\"";
+ dataLine += ";ALTREP=\"";
+ dataLine += contactListAltRep[0];
+ dataLine += "\"";
}
- if (ContactListLanguage[0].size() > 0){
+ if (contactListLanguage[0].size() > 0){
- DataLine += ";LANGUAGE=";
- DataLine += ContactListLanguage[0];
+ dataLine += ";LANGUAGE=";
+ dataLine += contactListLanguage[0];
}
- if (ContactListTokens[0].size() > 0){
+ if (contactListTokens[0].size() > 0){
- DataLine += ";";
- DataLine += ContactListTokens[0];
+ dataLine += ";";
+ dataLine += contactListTokens[0];
}
- DataLine += ":";
- DataLine += ContactList[0];
- DataLine += "\n";
+ dataLine += ":";
+ dataLine += contactList[0];
+ dataLine += "\n";
- DataLineProcessed = OutputText(&DataLine);
+ dataLineProcessed = OutputText(&dataLine);
- *SaveData += DataLineProcessed;
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
}
// Process the DTSTART.
- if (DateTimeStartData.size() > 0){
+ if (dateTimeStartData.size() > 0){
- DataLine += "DTSTART";
+ dataLine += "DTSTART";
- if (DateTimeStartDataValue.size() > 0){
+ if (dateTimeStartDataValue.size() > 0){
- DataLine += ";VALUE=";
- DataLine += DateTimeStartDataValue;
+ dataLine += ";VALUE=";
+ dataLine += dateTimeStartDataValue;
}
- if (DateTimeStartDataTimeZoneID.size() > 0){
+ if (dateTimeStartDataTimeZoneID.size() > 0){
- DataLine += ";TZID=";
- DataLine += DateTimeStartDataTimeZoneID;
+ dataLine += ";TZID=";
+ dataLine += dateTimeStartDataTimeZoneID;
}
- if (DateTimeStartDataTokens.size() > 0){
+ if (dateTimeStartDataTokens.size() > 0){
- DataLine += ";";
- DataLine += DateTimeStartDataTokens;
+ dataLine += ";";
+ dataLine += dateTimeStartDataTokens;
}
- DataLine += ":";
- DataLine += DateTimeStartData;
- DataLine += "\n";
+ dataLine += ":";
+ dataLine += dateTimeStartData;
+ dataLine += "\n";
- DataLineProcessed = OutputText(&DataLine);
+ dataLineProcessed = OutputText(&dataLine);
- *SaveData += DataLineProcessed;
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
}
// Process the DTEND.
- if (DateTimeEndData.size() > 0){
+ if (dateTimeEndData.size() > 0){
- DataLine += "DTEND";
+ dataLine += "DTEND";
- if (DateTimeEndDataValue.size() > 0){
+ if (dateTimeEndDataValue.size() > 0){
- DataLine += ";VALUE=";
- DataLine += DateTimeEndDataValue;
+ dataLine += ";VALUE=";
+ dataLine += dateTimeEndDataValue;
}
- if (DateTimeEndDataTimeZoneID.size() > 0){
+ if (dateTimeEndDataTimeZoneID.size() > 0){
- DataLine += ";TZID=";
- DataLine += DateTimeEndDataTimeZoneID;
+ dataLine += ";TZID=";
+ dataLine += dateTimeEndDataTimeZoneID;
}
- if (DateTimeEndDataTokens.size() > 0){
+ if (dateTimeEndDataTokens.size() > 0){
- DataLine += ";";
- DataLine += DateTimeEndDataTokens;
+ dataLine += ";";
+ dataLine += dateTimeEndDataTokens;
}
- DataLine += ":";
- DataLine += DateTimeEndData;
- DataLine += "\n";
+ dataLine += ":";
+ dataLine += dateTimeEndData;
+ dataLine += "\n";
- DataLineProcessed = OutputText(&DataLine);
+ dataLineProcessed = OutputText(&dataLine);
- *SaveData += DataLineProcessed;
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
}
// Process the ORGANIZER value.
- if (OrganiserData.size() > 0){
+ if (organiserData.size() > 0){
- DataLine += "ORGANIZER";
+ dataLine += "ORGANIZER";
- if (OrganiserDataCommonName.size() > 0){
+ if (organiserDataCommonName.size() > 0){
- DataLine += ";CN=";
- DataLine += OrganiserDataCommonName;
+ dataLine += ";CN=";
+ dataLine += organiserDataCommonName;
}
- if (OrganiserDataDirectoryEntry.size() > 0){
+ if (organiserDataDirectoryEntry.size() > 0){
+
+ dataLine += ";DIR=\"";
+ dataLine += organiserDataDirectoryEntry;
+ dataLine += "\"";
+
+ }
+
+ if (organiserDataSentByParam.size() > 0){
- DataLine += ";DIR=\"";
- DataLine += OrganiserDataDirectoryEntry;
- DataLine += "\"";
+ dataLine += ";SENT-BY=\"";
+ dataLine += organiserDataSentByParam;
+ dataLine += "\"";
}
- if (OrganiserDataSentByParam.size() > 0){
+ 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 += ";SENT-BY=\"";
- DataLine += OrganiserDataSentByParam;
- DataLine += "\"";
+ 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){
- if (OrganiserDataLanguage.size() > 0){
+ for (int commentListSeek = 0; commentListSeek < commentList.size();
+ commentListSeek++){
+
+ dataLine += "COMMENT";
+
+ if (commentListAltRep[commentListSeek].size() > 0){
- DataLine += ";LANGUAGE=";
- DataLine += OrganiserDataLanguage;
+ 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();
+
}
- if (OrganiserDataTokens.size() > 0){
+ }
+
+ // Process the FREEBUSY value.
+
+ if (freeBusyList.size() > 0){
- DataLine += ";";
- DataLine += OrganiserDataTokens;
+ 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();
+
}
- DataLine += ":";
- DataLine += OrganiserData;
- DataLine += "\n";
+ }
+
+ // 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){
- DataLineProcessed = OutputText(&DataLine);
+ dataLine += ";";
+ dataLine += requestStatusTokens[requestStatusDataSeek];
+
+ }
+
+ dataLine += ":";
+ dataLine += requestStatusData[requestStatusDataSeek];
+ dataLine += "\n";
- *SaveData += DataLineProcessed;
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
- DataLine.clear();
- DataLineProcessed.clear();
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
}
- *SaveData += "END:VFREEBUSY\n";
+ // 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";
}
\ No newline at end of file