Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
4dd40c7a69cbe3867a009b940755513087dd5c3d
[xestiacalendar/.git] / source / objects / calendarfreebusy / CalendarFreeBusy-Save.cpp
1 // CalendarFreeBusy-Save.cpp - CalendarFreeBusy class save functions
2 //
3 // (c) 2016-2017 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
7 // Xestia Calendar is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
10 //
11 // Xestia Calendar is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "CalendarFreeBusy.h"
21 using namespace std;
23 void CalendarFreeBusyObject::SaveObjectData(string *SaveData){
25         string DataLine = "";
26         string DataLineProcessed = "";
27         
28         *SaveData += "BEGIN:VFREEBUSY\n";
29         
30         // Process the UID.
31         
32         if (UniqueID.size() > 0){
33                 
34                 if (UniqueIDTokens.size() > 0){
35                 
36                         DataLine += "UID;";
37                         DataLine += UniqueIDTokens;
38                         
39                 } else {
41                         DataLine += "UID";
42                         
43                 }
45                 DataLine += ":";
46                 DataLine += UniqueID;
47                 DataLine += "\n";
48                 
49                 DataLineProcessed = OutputText(&DataLine);
50                 
51                 *SaveData += DataLineProcessed;
52                 
53                 DataLine.clear();
54                 DataLineProcessed.clear();
55                 
56         }
57         
58         // Process the DTSTAMP.
59         
60         if (DateTimeStampData.size() > 0){
61                 
62                 if (DateTimeStampTokens.size() > 0){
63                 
64                         DataLine += "DTSTAMP;";
65                         DataLine += DateTimeStampTokens;
66                         
67                 } else {
69                         DataLine += "DTSTAMP";
70                         
71                 }
73                 DataLine += ":";
74                 DataLine += DateTimeStampData;
75                 DataLine += "\n";
76                 
77                 DataLineProcessed = OutputText(&DataLine);
78                 
79                 *SaveData += DataLineProcessed;
80                 
81                 DataLine.clear();
82                 DataLineProcessed.clear();
83                 
84         }
85         
86         // Process the CONTACT value.
87         
88         if (ContactList.size() > 0){
89                 
90                 if (ContactList[0].size() > 0){
91                 
92                         DataLine += "CONTACT";
93                 
94                         if (ContactListAltRep[0].size() > 0){
95                 
96                                 DataLine += ";ALTREP=\"";
97                                 DataLine += ContactListAltRep[0];
98                                 DataLine += "\"";
99                         
100                         }
101                 
102                         if (ContactListLanguage[0].size() > 0){
103                 
104                                 DataLine += ";LANGUAGE=";
105                                 DataLine += ContactListLanguage[0];
106                         
107                         }
108                 
109                         if (ContactListTokens[0].size() > 0){
110                 
111                                 DataLine += ";";
112                                 DataLine += ContactListTokens[0];
113                         
114                         }
115                 
116                         DataLine += ":";
117                         DataLine += ContactList[0];
118                         DataLine += "\n";
119                 
120                         DataLineProcessed = OutputText(&DataLine);
121                 
122                         *SaveData += DataLineProcessed;
124                         DataLine.clear();
125                         DataLineProcessed.clear();
126                 
127                 }
128                 
129         }
130         
131         // Process the DTSTART.
132         
133         if (DateTimeStartData.size() > 0){
134                 
135                 DataLine += "DTSTART";
136                 
137                 if (DateTimeStartDataValue.size() > 0){
138                 
139                         DataLine += ";VALUE=";
140                         DataLine += DateTimeStartDataValue;                     
141                         
142                 }
143                 
144                 if (DateTimeStartDataTimeZoneID.size() > 0){
145                 
146                         DataLine += ";TZID=";
147                         DataLine += DateTimeStartDataTimeZoneID;                        
148                         
149                 }
150                 
151                 if (DateTimeStartDataTokens.size() > 0){
152                 
153                         DataLine += ";";
154                         DataLine += DateTimeStartDataTokens;
155                         
156                 }
158                 DataLine += ":";
159                 DataLine += DateTimeStartData;
160                 DataLine += "\n";
161                 
162                 DataLineProcessed = OutputText(&DataLine);
163                 
164                 *SaveData += DataLineProcessed;
165                 
166                 DataLine.clear();
167                 DataLineProcessed.clear();
168                 
169         }
170         
171         // Process the DTEND.
172         
173         if (DateTimeEndData.size() > 0){
174                 
175                 DataLine += "DTEND";
176                 
177                 if (DateTimeEndDataValue.size() > 0){
178                 
179                         DataLine += ";VALUE=";
180                         DataLine += DateTimeEndDataValue;                       
181                         
182                 }
183                 
184                 if (DateTimeEndDataTimeZoneID.size() > 0){
185                 
186                         DataLine += ";TZID=";
187                         DataLine += DateTimeEndDataTimeZoneID;                  
188                         
189                 }
190                 
191                 if (DateTimeEndDataTokens.size() > 0){
192                 
193                         DataLine += ";";
194                         DataLine += DateTimeEndDataTokens;
195                         
196                 }
198                 DataLine += ":";
199                 DataLine += DateTimeEndData;
200                 DataLine += "\n";
201                 
202                 DataLineProcessed = OutputText(&DataLine);
203                 
204                 *SaveData += DataLineProcessed;
205                 
206                 DataLine.clear();
207                 DataLineProcessed.clear();
208                 
209         }
210         
211         // Process the ORGANIZER value.
212         
213         if (OrganiserData.size() > 0){
214                 
215                 DataLine += "ORGANIZER";
216                 
217                 if (OrganiserDataCommonName.size() > 0){
218                 
219                         DataLine += ";CN=";
220                         DataLine += OrganiserDataCommonName;
221                         
222                 }
224                 if (OrganiserDataDirectoryEntry.size() > 0){
225                 
226                         DataLine += ";DIR=\"";
227                         DataLine += OrganiserDataDirectoryEntry;
228                         DataLine += "\"";
229                         
230                 }
231                 
232                 if (OrganiserDataSentByParam.size() > 0){
233                 
234                         DataLine += ";SENT-BY=\"";
235                         DataLine += OrganiserDataSentByParam;                   
236                         DataLine += "\"";
237                         
238                 }
239                 
240                 if (OrganiserDataLanguage.size() > 0){
241                 
242                         DataLine += ";LANGUAGE=";
243                         DataLine += OrganiserDataLanguage;                      
244                         
245                 }
246                 
247                 if (OrganiserDataTokens.size() > 0){
248                 
249                         DataLine += ";";
250                         DataLine += OrganiserDataTokens;
251                         
252                 }
253                 
254                 DataLine += ":";
255                 DataLine += OrganiserData;
256                 DataLine += "\n";
257                 
258                 DataLineProcessed = OutputText(&DataLine);
259                 
260                 *SaveData += DataLineProcessed;
262                 DataLine.clear();
263                 DataLineProcessed.clear();
264                 
265         }
266         
267         // Process the URL value.
268         
269         if (URLData.size() > 0){
270                 
271                 DataLine += "URL";
273                 if (URLDataTokens.size() > 0){
274                 
275                         DataLine += ";";
276                         DataLine += URLDataTokens;
277                         
278                 }
279                 
280                 DataLine += ":";
281                 DataLine += URLData;
282                 DataLine += "\n";
283                 
284                 DataLineProcessed = OutputText(&DataLine);
285                 
286                 *SaveData += DataLineProcessed;
288                 DataLine.clear();
289                 DataLineProcessed.clear();
290                 
291         }
292         
293         // Process the ATTENDEE value.
294         
295         if (AttendeeList.size() > 0){
296                 
297                 for (int AttendeeListSeek = 0; AttendeeListSeek < AttendeeList.size();
298                         AttendeeListSeek++){
299         
300                         DataLine += "ATTENDEE";
302                         if (AttendeeListMember[AttendeeListSeek].size() > 0){
303                 
304                                 DataLine += ";MEMBER=\"";
305                                 DataLine += AttendeeListMember[AttendeeListSeek];
306                                 DataLine += "\"";
307                         
308                         }
309                                 
310                         if (AttendeeListDelegatedFrom[AttendeeListSeek].size() > 0){
311                 
312                                 DataLine += ";DELEGATED-FROM=\"";
313                                 DataLine += AttendeeListDelegatedFrom[AttendeeListSeek];
314                                 DataLine += "\"";
315                         
316                         }
318                         if (AttendeeListDelegatedTo[AttendeeListSeek].size() > 0){
319                 
320                                 DataLine += ";DELEGATED-TO=\"";
321                                 DataLine += AttendeeListDelegatedTo[AttendeeListSeek];
322                                 DataLine += "\"";
323                         
324                         }
326                         if (AttendeeListRole[AttendeeListSeek].size() > 0){
327                 
328                                 DataLine += ";ROLE=";
329                                 DataLine += AttendeeListRole[AttendeeListSeek];
330                         
331                         }
332                         
333                         if (AttendeeListRSVP[AttendeeListSeek].size() > 0){
334                 
335                                 DataLine += ";RSVP=";
336                                 DataLine += AttendeeListRSVP[AttendeeListSeek];
337                         
338                         }
339                         
340                         if (AttendeeListDirectoryEntry[AttendeeListSeek].size() > 0){
341                 
342                                 DataLine += ";DIR=\"";
343                                 DataLine += AttendeeListDirectoryEntry[AttendeeListSeek];
344                                 DataLine += "\"";
345                         
346                         }
347                         
348                         if (AttendeeListSentBy[AttendeeListSeek].size() > 0){
349                                 
350                                 DataLine += ";SENT-BY=\"";
351                                 DataLine += AttendeeListSentBy[AttendeeListSeek];
352                                 DataLine += "\"";
353                                 
354                         }
356                         if (AttendeeListCommonName[AttendeeListSeek].size() > 0){
357                                 
358                                 DataLine += ";CN=\"";
359                                 DataLine += AttendeeListCommonName[AttendeeListSeek];
360                                 DataLine += "\"";
361                                 
362                         }
364                         if (AttendeeListCalendarUserType[AttendeeListSeek].size() > 0){
365                                 
366                                 DataLine += ";CUTYPE=";
367                                 DataLine += AttendeeListCalendarUserType[AttendeeListSeek];
368                                 
369                         }
370                         
371                         if (AttendeeListParticipationStatus[AttendeeListSeek].size() > 0){
372                                 
373                                 DataLine += ";PARTSTAT=";
374                                 DataLine += AttendeeListParticipationStatus[AttendeeListSeek];
375                                 
376                         }
377                         
378                         if (AttendeeListLanguage[AttendeeListSeek].size() > 0){
379                                 
380                                 DataLine += ";LANGUAGE=";
381                                 DataLine += AttendeeListLanguage[AttendeeListSeek];
382                                 
383                         }
384                         
385                         if (AttendeeListTokens[AttendeeListSeek].size() > 0){
386                 
387                                 DataLine += ";";
388                                 DataLine += AttendeeListTokens[AttendeeListSeek];
389                         
390                         }
391                                 
392                         DataLine += ":";
393                         DataLine += AttendeeList[AttendeeListSeek];
394                         DataLine += "\n";
395                 
396                         DataLineProcessed = OutputText(&DataLine);
397                 
398                         *SaveData += DataLineProcessed;
400                         DataLine.clear();
401                         DataLineProcessed.clear();
402                                 
403                 }
404                         
405         }
406         
407         // Process the COMMENT value.
408         
409         if (CommentList.size() > 0){
410                 
411                 for (int CommentListSeek = 0; CommentListSeek < CommentList.size();
412                         CommentListSeek++){
413         
414                         DataLine += "COMMENT";
415                         
416                         if (CommentListAltRep[CommentListSeek].size() > 0){
417                 
418                                 DataLine += ";ALTREP=\"";
419                                 DataLine += CommentListAltRep[CommentListSeek];
420                                 DataLine += "\"";
421                         
422                         }
423                                 
424                         if (CommentListLanguage[CommentListSeek].size() > 0){
425                 
426                                 DataLine += ";LANGUAGE=";
427                                 DataLine += CommentListLanguage[CommentListSeek];
428                         
429                         }
430                         
431                         if (CommentListTokens[CommentListSeek].size() > 0){
432                 
433                                 DataLine += ";";
434                                 DataLine += CommentListTokens[CommentListSeek];
435                         
436                         }
437                                 
438                         DataLine += ":";
439                         DataLine += CommentList[CommentListSeek];
440                         DataLine += "\n";
441                 
442                         DataLineProcessed = OutputText(&DataLine);
443                 
444                         *SaveData += DataLineProcessed;
446                         DataLine.clear();
447                         DataLineProcessed.clear();
448                                 
449                 }
450                 
451         }
452         
453         // Process the FREEBUSY value.
454         
455         if (FreeBusyList.size() > 0){
456                 
457                 for (int FreeBusyListSeek = 0; FreeBusyListSeek < FreeBusyList.size();
458                         FreeBusyListSeek++){
459         
460                         DataLine += "FREEBUSY";
461                         
462                         if (FreeBusyListType[FreeBusyListSeek].size() > 0){
463                 
464                                 DataLine += ";FBTYPE=";
465                                 DataLine += FreeBusyListType[FreeBusyListSeek];
466                         
467                         }
468                         
469                         if (FreeBusyListTokens[FreeBusyListSeek].size() > 0){
470                 
471                                 DataLine += ";";
472                                 DataLine += FreeBusyListTokens[FreeBusyListSeek];
473                         
474                         }
475                                 
476                         DataLine += ":";
477                         DataLine += FreeBusyList[FreeBusyListSeek];
478                         DataLine += "\n";
479                 
480                         DataLineProcessed = OutputText(&DataLine);
481                 
482                         *SaveData += DataLineProcessed;
484                         DataLine.clear();
485                         DataLineProcessed.clear();
486                                 
487                 }
488                 
489         }
490         
491         // Process the REQUEST-STATUS value.
492         
493         if (RequestStatusData.size() > 0){
494                 
495                 for (int RequestStatusDataSeek = 0; RequestStatusDataSeek < RequestStatusData.size();
496                         RequestStatusDataSeek++){
497         
498                         DataLine += "REQUEST-STATUS";
499                         
500                         if (RequestStatusLanguage[RequestStatusDataSeek].size() > 0){
501                 
502                                 DataLine += ";LANGUAGE=";
503                                 DataLine += RequestStatusLanguage[RequestStatusDataSeek];
504                         
505                         }
506                         
507                         if (RequestStatusTokens[RequestStatusDataSeek].size() > 0){
508                 
509                                 DataLine += ";";
510                                 DataLine += RequestStatusTokens[RequestStatusDataSeek];
511                         
512                         }
513                                 
514                         DataLine += ":";
515                         DataLine += RequestStatusData[RequestStatusDataSeek];
516                         DataLine += "\n";
517                 
518                         DataLineProcessed = OutputText(&DataLine);
519                 
520                         *SaveData += DataLineProcessed;
522                         DataLine.clear();
523                         DataLineProcessed.clear();
524                                 
525                 }
526                 
527         }
528         
529         // Process the X-Token values.
530         
531         if (XTokensData.size() > 0){
532                                 
533                 for (int XTokenSeek = 0; XTokenSeek < XTokensData.size();
534                         XTokenSeek++){
535         
536                         DataLine += XTokensDataTokens[XTokenSeek];              
537                         DataLine += ":";
538                         DataLine += XTokensData[XTokenSeek];
539                         DataLine += "\n";
540                 
541                         DataLineProcessed = OutputText(&DataLine);
542         
543                         *SaveData += DataLineProcessed;
545                         DataLine.clear();
546                         DataLineProcessed.clear();
547                                         
548                 }
549                                 
550         }
551         
552         *SaveData += "END:VFREEBUSY\n";
553         
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