X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject-Save.cpp;h=a770ba84b08bb663f20a972672ed908e203d269e;hb=cba151c4b833a26c63984769f921bab5e755decd;hp=a1043845a2b2375a3862b4e62c67b35d6832fdd2;hpb=a54315de01abd57cf93870f550d27c46c2971446;p=xestiacalendar%2F.git diff --git a/source/objects/calendarobject/CalendarObject-Save.cpp b/source/objects/calendarobject/CalendarObject-Save.cpp index a104384..a770ba8 100644 --- a/source/objects/calendarobject/CalendarObject-Save.cpp +++ b/source/objects/calendarobject/CalendarObject-Save.cpp @@ -1,16 +1,123 @@ +// 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::SaveString(string *SaveStringData){ +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::SaveFile(string SaveFilename){ +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; } \ No newline at end of file