1 #include "CalendarTimezone.h"
5 void CalendarTimezoneObject::SaveObjectData(string *SaveData){
8 string DataLineProcessed = "";
10 *SaveData += "BEGIN:VTIMEZONE\n";
14 if (TimeZoneData.size() > 0){
16 if (TimeZoneDataTokens.size() > 0){
19 DataLine += TimeZoneDataTokens;
28 DataLine += TimeZoneData;
31 DataLineProcessed = OutputText(&DataLine);
33 *SaveData += DataLineProcessed;
36 DataLineProcessed.clear();
40 // Process the LAST-MODIFIED value.
42 if (LastModifiedData.size() > 0){
44 if (LastModifiedTokens.size() > 0){
46 DataLine += "LAST-MODIFIED;";
47 DataLine += LastModifiedTokens;
51 DataLine += "LAST-MODIFIED";
56 DataLine += LastModifiedData;
59 DataLineProcessed = OutputText(&DataLine);
61 *SaveData += DataLineProcessed;
64 DataLineProcessed.clear();
68 // Process the TZURL value.
70 if (TimeZoneURLData.size() > 0){
72 if (TimeZoneURLTokens.size() > 0){
75 DataLine += TimeZoneURLTokens;
84 DataLine += TimeZoneURLData;
87 DataLineProcessed = OutputText(&DataLine);
89 *SaveData += DataLineProcessed;
92 DataLineProcessed.clear();
96 // Process Standard timezones.
98 if (TimezoneStandardCollection.size() > 0){
100 for (int TimezoneStandardSeek = 0; TimezoneStandardSeek < TimezoneStandardCollection.size();
101 TimezoneStandardSeek++){
103 *SaveData += "BEGIN:STANDARD\n";
105 // Process the DTSTART value.
107 if (TimezoneStandardCollection[TimezoneStandardSeek].DateTimeStartData.size() > 0){
109 if (TimezoneStandardCollection[TimezoneStandardSeek].DateTimeStartTokens.size() > 0){
111 DataLine += "DTSTART;";
112 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].DateTimeStartTokens;
116 DataLine += "DTSTART";
121 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].DateTimeStartData;
124 DataLineProcessed = OutputText(&DataLine);
126 *SaveData += DataLineProcessed;
129 DataLineProcessed.clear();
133 // Process the TZOFFSETFROM value.
135 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetFromData.size() > 0){
137 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetFromTokens.size() > 0){
139 DataLine += "TZOFFSETFROM;";
140 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetFromTokens;
144 DataLine += "TZOFFSETFROM";
149 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetFromData;
152 DataLineProcessed = OutputText(&DataLine);
154 *SaveData += DataLineProcessed;
157 DataLineProcessed.clear();
161 // Process the TZOFFSETTO value.
163 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetToData.size() > 0){
165 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetToTokens.size() > 0){
167 DataLine += "TZOFFSETTO;";
168 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetToTokens;
172 DataLine += "TZOFFSETTO";
177 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneOffsetToData;
180 DataLineProcessed = OutputText(&DataLine);
182 *SaveData += DataLineProcessed;
185 DataLineProcessed.clear();
189 // Process the RRULE value.
191 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceRuleData.size() > 0){
193 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceRuleDataTokens.size() > 0){
195 DataLine += "RRULE;";
196 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceRuleDataTokens;
205 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceRuleData;
208 DataLineProcessed = OutputText(&DataLine);
210 *SaveData += DataLineProcessed;
213 DataLineProcessed.clear();
217 // Process the COMMENT value.
219 if (TimezoneStandardCollection[TimezoneStandardSeek].CommentList.size() > 0){
221 for (int CommentListSeek = 0; CommentListSeek < TimezoneStandardCollection[TimezoneStandardSeek].CommentList.size();
224 DataLine += "COMMENT";
226 if (TimezoneStandardCollection[TimezoneStandardSeek].CommentListAltRep[CommentListSeek].size() > 0){
228 DataLine += ";ALTREP=\"";
229 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].CommentListAltRep[CommentListSeek];
234 if (TimezoneStandardCollection[TimezoneStandardSeek].CommentListLanguage[CommentListSeek].size() > 0){
236 DataLine += ";LANGUAGE=";
237 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].CommentListLanguage[CommentListSeek];
241 if (TimezoneStandardCollection[TimezoneStandardSeek].CommentListTokens[CommentListSeek].size() > 0){
244 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].CommentListTokens[CommentListSeek];
249 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].CommentList[CommentListSeek];
252 DataLineProcessed = OutputText(&DataLine);
254 *SaveData += DataLineProcessed;
257 DataLineProcessed.clear();
263 // Process the RDATE value.
265 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateData.size() > 0){
267 for (int RecurranceDataSeek = 0; RecurranceDataSeek < TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateData.size();
268 RecurranceDataSeek++){
272 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataValue[RecurranceDataSeek].size() > 0){
274 DataLine += ";VALUE=";
275 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataValue[RecurranceDataSeek];
279 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataTimeZoneParam[RecurranceDataSeek].size() > 0){
281 DataLine += ";TZID=";
282 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataTimeZoneParam[RecurranceDataSeek];
286 if (TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataTokens[RecurranceDataSeek].size() > 0){
289 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateDataTokens[RecurranceDataSeek];
294 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].RecurranceDateData[RecurranceDataSeek];
297 DataLineProcessed = OutputText(&DataLine);
299 *SaveData += DataLineProcessed;
302 DataLineProcessed.clear();
308 // Process the TZNAME value.
310 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameData.size() > 0){
312 for (int TimezoneNameSeek = 0; TimezoneNameSeek < TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameData.size();
315 DataLine += "TZNAME";
317 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameLanguage[TimezoneNameSeek].size() > 0){
319 DataLine += ";LANGUAGE=";
320 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameLanguage[TimezoneNameSeek];
324 if (TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameTokens[TimezoneNameSeek].size() > 0){
327 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameTokens[TimezoneNameSeek];
332 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].TimeZoneNameData[TimezoneNameSeek];
335 DataLineProcessed = OutputText(&DataLine);
337 *SaveData += DataLineProcessed;
340 DataLineProcessed.clear();
346 // Process data from X-*
348 if (TimezoneStandardCollection[TimezoneStandardSeek].XTokensData.size() > 0){
350 for (int TimezoneXTokenSeek = 0; TimezoneXTokenSeek < TimezoneStandardCollection[TimezoneStandardSeek].XTokensData.size();
351 TimezoneXTokenSeek++){
353 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].XTokensDataTokens[TimezoneXTokenSeek];
355 DataLine += TimezoneStandardCollection[TimezoneStandardSeek].XTokensData[TimezoneXTokenSeek];
358 DataLineProcessed = OutputText(&DataLine);
360 *SaveData += DataLineProcessed;
363 DataLineProcessed.clear();
369 *SaveData += "END:STANDARD\n";
375 // Process Daylight timezones.
377 if (TimezoneDaylightCollection.size() > 0){
379 for (int TimezoneDaylightSeek = 0; TimezoneDaylightSeek < TimezoneDaylightCollection.size();
380 TimezoneDaylightSeek++){
382 *SaveData += "BEGIN:DAYLIGHT\n";
384 // Process the DTSTART value.
386 if (TimezoneDaylightCollection[TimezoneDaylightSeek].DateTimeStartData.size() > 0){
388 if (TimezoneStandardCollection[TimezoneDaylightSeek].DateTimeStartTokens.size() > 0){
390 DataLine += "DTSTART;";
391 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].DateTimeStartTokens;
395 DataLine += "DTSTART";
400 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].DateTimeStartData;
403 DataLineProcessed = OutputText(&DataLine);
405 *SaveData += DataLineProcessed;
408 DataLineProcessed.clear();
412 // Process the TZOFFSETFROM value.
414 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetFromData.size() > 0){
416 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetFromTokens.size() > 0){
418 DataLine += "TZOFFSETFROM;";
419 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetFromTokens;
423 DataLine += "TZOFFSETFROM";
428 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetFromData;
431 DataLineProcessed = OutputText(&DataLine);
433 *SaveData += DataLineProcessed;
436 DataLineProcessed.clear();
440 // Process the TZOFFSETTO value.
442 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetToData.size() > 0){
444 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetToTokens.size() > 0){
446 DataLine += "TZOFFSETTO;";
447 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetToTokens;
451 DataLine += "TZOFFSETTO";
456 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneOffsetToData;
459 DataLineProcessed = OutputText(&DataLine);
461 *SaveData += DataLineProcessed;
464 DataLineProcessed.clear();
468 // Process the RRULE value.
470 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceRuleData.size() > 0){
472 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceRuleDataTokens.size() > 0){
474 DataLine += "RRULE;";
475 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceRuleDataTokens;
484 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceRuleData;
487 DataLineProcessed = OutputText(&DataLine);
489 *SaveData += DataLineProcessed;
492 DataLineProcessed.clear();
496 // Process the COMMENT value.
498 if (TimezoneDaylightCollection[TimezoneDaylightSeek].CommentList.size() > 0){
500 for (int CommentListSeek = 0; CommentListSeek < TimezoneDaylightCollection[TimezoneDaylightSeek].CommentList.size();
503 DataLine += "COMMENT";
505 if (TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListAltRep[CommentListSeek].size() > 0){
507 DataLine += ";ALTREP=\"";
508 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListAltRep[CommentListSeek];
513 if (TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListLanguage[CommentListSeek].size() > 0){
515 DataLine += ";LANGUAGE=";
516 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListLanguage[CommentListSeek];
520 if (TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListTokens[CommentListSeek].size() > 0){
523 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].CommentListTokens[CommentListSeek];
528 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].CommentList[CommentListSeek];
531 DataLineProcessed = OutputText(&DataLine);
533 *SaveData += DataLineProcessed;
536 DataLineProcessed.clear();
542 // Process the RDATE value.
544 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateData.size() > 0){
546 for (int RecurranceDataSeek = 0; RecurranceDataSeek < TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateData.size();
547 RecurranceDataSeek++){
551 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataValue[RecurranceDataSeek].size() > 0){
553 DataLine += ";VALUE=";
554 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataValue[RecurranceDataSeek];
558 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataTimeZoneParam[RecurranceDataSeek].size() > 0){
560 DataLine += ";TZID=";
561 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataTimeZoneParam[RecurranceDataSeek];
565 if (TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataTokens[RecurranceDataSeek].size() > 0){
568 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateDataTokens[RecurranceDataSeek];
573 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].RecurranceDateData[RecurranceDataSeek];
576 DataLineProcessed = OutputText(&DataLine);
578 *SaveData += DataLineProcessed;
581 DataLineProcessed.clear();
587 // Process the TZNAME value.
589 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameData.size() > 0){
591 for (int TimezoneNameSeek = 0; TimezoneNameSeek < TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameData.size();
594 DataLine += "TZNAME";
596 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameLanguage[TimezoneNameSeek].size() > 0){
598 DataLine += ";LANGUAGE=";
599 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameLanguage[TimezoneNameSeek];
603 if (TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameTokens[TimezoneNameSeek].size() > 0){
606 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameTokens[TimezoneNameSeek];
611 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].TimeZoneNameData[TimezoneNameSeek];
614 DataLineProcessed = OutputText(&DataLine);
616 *SaveData += DataLineProcessed;
619 DataLineProcessed.clear();
625 // Process data from X-*
627 if (TimezoneDaylightCollection[TimezoneDaylightSeek].XTokensData.size() > 0){
629 for (int TimezoneXTokenSeek = 0; TimezoneXTokenSeek < TimezoneDaylightCollection[TimezoneDaylightSeek].XTokensData.size();
630 TimezoneXTokenSeek++){
632 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].XTokensDataTokens[TimezoneXTokenSeek];
634 DataLine += TimezoneDaylightCollection[TimezoneDaylightSeek].XTokensData[TimezoneXTokenSeek];
637 DataLineProcessed = OutputText(&DataLine);
639 *SaveData += DataLineProcessed;
642 DataLineProcessed.clear();
648 *SaveData += "END:DAYLIGHT\n";
654 *SaveData += "END:VTIMEZONE\n";