Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added UID to the SaveString function of ContactDataObject
[xestiaab/.git] / source / contacteditor / cdo / ContactDataObject-Save.cpp
1 // ContactDataObject-Save.cpp - Client Data Object.
2 //
3 // (c) 2012-2016 Xestia Software Development.
4 //
5 // This file is part of Xestia Address Book.
6 //
7 // Xestia Address Book 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 Address Book 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 Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include "ContactDataObject.h"
20 #include "../../version.h"
22 ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){
23         
24         ContactSaveStatus SaveDataStatus = CONTACTSAVE_UNITTESTFAIL;
25         
26         // Write the header for the vCard data file.
27         
28         SaveData->Append("BEGIN:VCARD\n");
29         SaveData->Append("VERSION:4.0\n");
30         
31         // Write the product ID.
32         
33 #ifdef XAB_UNITTEST
34         
35         SaveData->Append("PRODID:-//Xestia//Address Book Unit Testing//KW\n");
36         
37 #else
38         
39         SaveData->Append(wxT("PRODID:-//Xestia//Address Book Version "));
40         SaveData->Append(wxT(XSDAB_VERSION));
41         SaveData->Append(wxT("//KW\n"));
42         
43 #endif
45         wxString ProcessData = "";
47         // Process UID.
49         if (UIDToken.size() > 0){
50                 
51                 ProcessData.Append("UID:");
52                 ProcessData.Append(UIDToken);
53                 ProcessData.Append("\n");
54                 SaveData->Append(ProcessData);
55                 ProcessData.clear();
56                 
57         }
59         // Process FN.
60         
61         for (std::map<int, wxString>::iterator FNIter = FullNamesList.begin();
62                 FNIter != FullNamesList.end(); FNIter++){
63                 
64                 ProcessData.Append("FN");
66                 // Check if there is a value for TYPE.
67                 
68                 if (FullNamesListType[FNIter->first].size() > 0){
69                 
70                         ProcessData.Append(";TYPE=");
71                         ProcessData.Append(FullNamesListType[FNIter->first]);
72                         
73                 }
75                 // Check if there is a value for LANGUAGE.
76                 
77                 if (FullNamesListLanguage[FNIter->first].size() > 0){
78                 
79                         ProcessData.Append(";LANGUAGE=");
80                         ProcessData.Append(FullNamesListLanguage[FNIter->first]);
81                         
82                 }
83                 
84                 // Check if there is a value for ALTID.
85                 
86                 if (FullNamesListAltID[FNIter->first].size() > 0){
87                 
88                         ProcessData.Append(";ALTID=");
89                         ProcessData.Append(FullNamesListAltID[FNIter->first]);
90                         
91                 }
92                 
93                 // Check if there is a value for PID.
95                 if (FullNamesListPID[FNIter->first].size() > 0){
96                 
97                         ProcessData.Append(";PID=");
98                         ProcessData.Append(FullNamesListPID[FNIter->first]);
99                         
100                 }
102                 // Check if there is a value for PREF.
104                 if (FullNamesListPref[FNIter->first] > 0){
105                 
106                         ProcessData.Append(";PREF=");
107                         ProcessData.Append(wxString::Format("%i", FullNamesListPref[FNIter->first]));
108                         
109                 }
111                 // Check if there is a value for tokens.
113                 if (FullNamesListTokens[FNIter->first].size() > 0){
114                 
115                         ProcessData.Append(";");
116                         ProcessData.Append(FullNamesListTokens[FNIter->first]);
117                         
118                 }
119                 
120                 ProcessData.Append(":");
121                 ProcessData.Append(FNIter->second);
122                 ProcessData.Append("\n");
123                 
124                 ProcessData = OutputText(&ProcessData);
125                 
126                 SaveData->Append(ProcessData);
127                 ProcessData.clear();
128                         
129         }
130         
131         // Process TITLE.
133         SaveTitle(&GeneralTitleList, &GeneralTitleListLanguage,
134                 &GeneralTitleListAltID, &GeneralTitleListPID,
135                 &GeneralTitleListType, &GeneralTitleListPref,
136                 &GeneralTitleListTokens, SaveData, "");
137         SaveTitle(&HomeTitleList, &HomeTitleListLanguage,
138                 &HomeTitleListAltID, &HomeTitleListPID,
139                 &HomeTitleListType, &HomeTitleListPref,
140                 &HomeTitleListTokens, SaveData, "home");
141         SaveTitle(&BusinessTitleList, &BusinessTitleListLanguage,
142                 &BusinessTitleListAltID, &BusinessTitleListPID,
143                 &BusinessTitleListType, &BusinessTitleListPref,
144                 &BusinessTitleListTokens, SaveData, "work");
145         
146         // Write the end part of the vCard data file.
147         
148         SaveData->Append("END:VCARD");
149         
150         SaveDataStatus = CONTACTSAVE_OK;
151         
152         return SaveDataStatus;
153         
156 void ContactDataObject::SaveTitle(map<int, wxString> *TitleList, map<int, wxString> *TitleListLanguage,
157         map<int, wxString> *TitleListAltID, map<int, wxString> *TitleListPID,
158         map<int, wxString> *TitleListType, map<int, int> *TitleListPref,
159         map<int, wxString> *TitleListTokens, wxString *SaveData, wxString DataType){
161         wxString ProcessData = "";
162                 
163         for (std::map<int, wxString>::iterator TitleIter = TitleList->begin();
164                 TitleIter != TitleList->end(); TitleIter++){
166                 ProcessData.Append("TITLE");
167                         
168                 // Check if there is a value for TYPE.
169                 
170                 if (DataType.size() > 0){
171                 
172                         ProcessData.Append(";TYPE=");
173                         ProcessData.Append(DataType);
174                         
175                 }
176                 
177                 // Check if there is a value for ALTID.
178                 
179                 if ((*TitleListAltID)[TitleIter->first].size() > 0){
180                 
181                         ProcessData.Append(";ALTID=");
182                         ProcessData.Append((*TitleListAltID)[TitleIter->first]);
183                         
184                 }
186                 // Check if there is a value for LANGUAGE.
187                 
188                 if ((*TitleListLanguage)[TitleIter->first].size() > 0){
189                 
190                         ProcessData.Append(";LANGUAGE=");
191                         ProcessData.Append((*TitleListLanguage)[TitleIter->first]);
192                         
193                 }
194                 
195                 // Check if there is a value for PID.
197                 if ((*TitleListPID)[TitleIter->first].size() > 0){
198                 
199                         ProcessData.Append(";PID=");
200                         ProcessData.Append((*TitleListPID)[TitleIter->first]);
201                         
202                 }
204                 // Check if there is a value for PREF.
206                 if ((*TitleListPref)[TitleIter->first] > 0){
207                 
208                         ProcessData.Append(";PREF=");
209                         ProcessData.Append(wxString::Format("%i", (*TitleListPref)[TitleIter->first]));
210                         
211                 }
213                 // Check if there is a value for tokens.
215                 if ((*TitleListTokens)[TitleIter->first].size() > 0){
216                 
217                         ProcessData.Append(";");
218                         ProcessData.Append((*TitleListTokens)[TitleIter->first]);
219                         
220                 }
221                         
222                 ProcessData.Append(":");
223                 ProcessData.Append(TitleIter->second);
224                 ProcessData.Append("\n");
226                 ProcessData = OutputText(&ProcessData);
227                         
228                 SaveData->Append(ProcessData);
229                 ProcessData.clear();
230                         
231         }
232                 
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