#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 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 (SummaryDataTokens.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(); } } *SaveData += "END:VTODO\n"; }