X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject-Save.cpp;h=0d72b46d81d485b056cd84a264aeb444499ad5b2;hp=a770ba84b08bb663f20a972672ed908e203d269e;hb=49789773e2797383c866dca470fb99e80cb49e41;hpb=cba151c4b833a26c63984769f921bab5e755decd diff --git a/source/objects/calendarobject/CalendarObject-Save.cpp b/source/objects/calendarobject/CalendarObject-Save.cpp index a770ba8..0d72b46 100644 --- a/source/objects/calendarobject/CalendarObject-Save.cpp +++ b/source/objects/calendarobject/CalendarObject-Save.cpp @@ -21,102 +21,122 @@ 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;