Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
CalendarObject: Update code
[xestiacalendar/.git] / source / objects / calendarobject / CalendarObject-Save.cpp
1 #include "CalendarObject.h"
2 #include "../../common/file.h"
4 using namespace std;
6 CalendarObjectSaveResult CalendarObject::SaveFile(string SaveFilename){
8         ofstream FileStream;
9         string ReceivedStringData = "";
10         
11         // Open the file.
12         
13         FileStream.open(SaveFilename, ofstream::out);
14         
15         if (FileStream.rdstate() & ofstream::failbit){
16                 return CALENDAROBJECTSAVE_CANNOTOPEN;
17         }
19         if (FileStream.rdstate() & ofstream::badbit){
20                 return CALENDAROBJECTSAVE_CANNOTOPEN;
21         }
22         
23         // Process the data into a string.
24         
25         CalendarObjectSaveResult SaveResult = CALENDAROBJECTSAVE_UNITTESTFAIL;
26         string SaveStringData;
27         
28         SaveResult = SaveString(&SaveStringData);
29         
30         FileStream.write(SaveStringData.c_str(), SaveStringData.size());
31         
32         FileStream.close();
33         
34         return SaveResult;
35         
36 }
38 CalendarObjectSaveResult CalendarObject::SaveString(string *SaveStringData){
40         *SaveStringData += "BEGIN:VCALENDAR\n";
41         *SaveStringData += "VERSION:2.0\n";
42         
43         // Check if METHOD has a value and print it if it does (and
44         // any token data if there).
45         
46         if (MethodData.size() > 0){
47                 
48                 if (MethodTokens.size() > 0){
49                 
50                         *SaveStringData += "METHOD;";
51                         *SaveStringData += MethodTokens;
52                         
53                 } else {
55                         *SaveStringData += "METHOD";
56                         
57                 }
59                 *SaveStringData += ":";
60                 *SaveStringData += MethodData;
61                 *SaveStringData += "\n";
62                 
63         }
64         
65         // Check if CALSCALE has a value and print it if it does (and
66         // any token data if there).
67         
68         if (CalendarScaleData.size() > 0){
69                 
70                 if (CalendarScaleTokens.size() > 0){
71                 
72                         *SaveStringData += "CALSCALE;";
73                         *SaveStringData += CalendarScaleTokens;
74                         
75                 } else {
77                         *SaveStringData += "CALSCALE";
78                         
79                 }
81                 *SaveStringData += ":";
82                 *SaveStringData += CalendarScaleData;
83                 *SaveStringData += "\n";
84                 
85         }
86         
87 #if defined(XESTIACAL_UNITTEST)
88         
89         *SaveStringData += "PRODID:-//Xestia//Calendar Unit Testing//KW\n";
90         
91 #else
93         *SaveStringData += "PRODID:-//Xestia//Calendar Version ";
94         *SaveStringData += XSDCAL_VERSION;
95         *SaveStringData += "//KW\n";
96         
97 #endif
98         
99         SaveObjectData(SaveStringData);
100         
101         *SaveStringData += "END:VCALENDAR";
102         
103         return CALENDAROBJECTSAVE_OK;
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy