X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject-Save.cpp;h=0d72b46d81d485b056cd84a264aeb444499ad5b2;hp=41424956cbf24a222baef27260db190545b505c4;hb=49789773e2797383c866dca470fb99e80cb49e41;hpb=c1695c7e62609eadcb15afdf2316b2321a7da9b9 diff --git a/source/objects/calendarobject/CalendarObject-Save.cpp b/source/objects/calendarobject/CalendarObject-Save.cpp index 4142495..0d72b46 100644 --- a/source/objects/calendarobject/CalendarObject-Save.cpp +++ b/source/objects/calendarobject/CalendarObject-Save.cpp @@ -1,104 +1,142 @@ +// 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){ +CalendarObjectSaveResult CalendarObject::SaveFile(string saveFilename){ - ofstream FileStream; - string ReceivedStringData = ""; + ofstream fileStream; + string receivedStringData = ""; // Open the file. - FileStream.open(SaveFilename, ofstream::out); +#ifndef WIN32 + + fileStream.open(saveFilename, ofstream::out); + +#else + + wstring saveFilename_utf16; + + int len = MultiByteToWideChar(CP_UTF8, 0, &saveFilename[0], (int)saveFilename.size(), NULL, 0); + + if (len > 0) + { + saveFilename_utf16.resize(len); + MultiByteToWideChar(CP_UTF8, 0, &saveFilename[0], (int)saveFilename.size(), &saveFilename_utf16[0], len); + } + + fileStream.open(saveFilename_utf16, ofstream::out); + +#endif - if (FileStream.rdstate() & ofstream::failbit){ + if (fileStream.rdstate() & ofstream::failbit){ return CALENDAROBJECTSAVE_CANNOTOPEN; } - if (FileStream.rdstate() & ofstream::badbit){ + if (fileStream.rdstate() & ofstream::badbit){ return CALENDAROBJECTSAVE_CANNOTOPEN; } // Process the data into a string. - CalendarObjectSaveResult SaveResult = CALENDAROBJECTSAVE_UNITTESTFAIL; - string SaveStringData; + CalendarObjectSaveResult saveResult = CALENDAROBJECTSAVE_UNITTESTFAIL; + string saveStringData; - SaveResult = SaveString(&SaveStringData); + saveResult = SaveString(&saveStringData); - FileStream.write(SaveStringData.c_str(), SaveStringData.size()); + //fileStream.write(saveStringData.c_str(), saveStringData.size()); - FileStream.close(); + fileStream << saveStringData.c_str(); + + fileStream.close(); - return SaveResult; + return saveResult; } -CalendarObjectSaveResult CalendarObject::SaveString(string *SaveStringData){ +CalendarObjectSaveResult CalendarObject::SaveString(string *saveStringData){ - *SaveStringData += "BEGIN:VCALENDAR\n"; - *SaveStringData += "VERSION:2.0\n"; + *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 (methodData.size() > 0){ - if (MethodTokens.size() > 0){ + if (methodTokens.size() > 0){ - *SaveStringData += "METHOD;"; - *SaveStringData += MethodTokens; + *saveStringData += "METHOD;"; + *saveStringData += methodTokens; } else { - *SaveStringData += "METHOD"; + *saveStringData += "METHOD"; } - *SaveStringData += ":"; - *SaveStringData += MethodData; - *SaveStringData += "\n"; + *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 (calendarScaleData.size() > 0){ - if (CalendarScaleTokens.size() > 0){ + if (calendarScaleTokens.size() > 0){ - *SaveStringData += "CALSCALE;"; - *SaveStringData += CalendarScaleTokens; + *saveStringData += "CALSCALE;"; + *saveStringData += calendarScaleTokens; } else { - *SaveStringData += "CALSCALE"; + *saveStringData += "CALSCALE"; } - *SaveStringData += ":"; - *SaveStringData += CalendarScaleData; - *SaveStringData += "\n"; + *saveStringData += ":"; + *saveStringData += calendarScaleData; + *saveStringData += "\n"; } #if defined(XESTIACAL_UNITTEST) - *SaveStringData += "PRODID:-//Xestia//Calendar Unit Testing//KW\n"; + *saveStringData += "PRODID:-//Xestia//Calendar Unit Testing//KW\n"; #else - *SaveStringData += "PRODID:-//Xestia//Calendar Version "; - *SaveStringData += XSDCAL_VERSION; - *SaveStringData += "//KW\n"; + *saveStringData += "PRODID:-//Xestia//Calendar Version "; + *saveStringData += XSDCAL_VERSION; + *saveStringData += "//KW\n"; #endif - SaveObjectData(SaveStringData); + SaveObjectData(saveStringData); - *SaveStringData += "END:VCALENDAR"; + *saveStringData += "END:VCALENDAR"; return CALENDAROBJECTSAVE_OK;