X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject-Save.cpp;h=0cbe83ea1fecbcda76aa7ab059e1f281807168c5;hb=1fe6e43892e5c572949a293a9e19704b5debadad;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..0cbe83e 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