Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
camelCase: Converted code in calendarjournal directory
[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