// CalendarObject-Save.cpp - CalendarObject 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 "CalendarObject.h" #include "../../common/file.h" using namespace std; CalendarObjectSaveResult CalendarObject::SaveFile(string SaveFilename){ ofstream FileStream; string ReceivedStringData = ""; // Open the file. FileStream.open(SaveFilename, ofstream::out); if (FileStream.rdstate() & ofstream::failbit){ return CALENDAROBJECTSAVE_CANNOTOPEN; } if (FileStream.rdstate() & ofstream::badbit){ return CALENDAROBJECTSAVE_CANNOTOPEN; } // Process the data into a string. CalendarObjectSaveResult SaveResult = CALENDAROBJECTSAVE_UNITTESTFAIL; string SaveStringData; SaveResult = SaveString(&SaveStringData); FileStream.write(SaveStringData.c_str(), SaveStringData.size()); FileStream.close(); return SaveResult; } CalendarObjectSaveResult CalendarObject::SaveString(string *SaveStringData){ *SaveStringData += "BEGIN:VCALENDAR\n"; *SaveStringData += "VERSION:2.0\n"; // Check if METHOD has a value and print it if it does (and // any token data if there). if (MethodData.size() > 0){ if (MethodTokens.size() > 0){ *SaveStringData += "METHOD;"; *SaveStringData += MethodTokens; } else { *SaveStringData += "METHOD"; } *SaveStringData += ":"; *SaveStringData += MethodData; *SaveStringData += "\n"; } // Check if CALSCALE has a value and print it if it does (and // any token data if there). if (CalendarScaleData.size() > 0){ if (CalendarScaleTokens.size() > 0){ *SaveStringData += "CALSCALE;"; *SaveStringData += CalendarScaleTokens; } else { *SaveStringData += "CALSCALE"; } *SaveStringData += ":"; *SaveStringData += CalendarScaleData; *SaveStringData += "\n"; } #if defined(XESTIACAL_UNITTEST) *SaveStringData += "PRODID:-//Xestia//Calendar Unit Testing//KW\n"; #else *SaveStringData += "PRODID:-//Xestia//Calendar Version "; *SaveStringData += XSDCAL_VERSION; *SaveStringData += "//KW\n"; #endif SaveObjectData(SaveStringData); *SaveStringData += "END:VCALENDAR"; return CALENDAROBJECTSAVE_OK; }