Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
2a436cbfa0316b2b7260b47223c5a058d7ebf9ae
[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
44         
45         // Process FN.
46         
47         wxString ProcessData = "";
48         
49         for (std::map<int, wxString>::iterator FNIter = FullNamesList.begin();
50                 FNIter != FullNamesList.end(); FNIter++){
51                 
52                 ProcessData.Append("FN");
54                 // Check if there is a value for TYPE.
55                 
56                 if (FullNamesListType[FNIter->first].size() > 0){
57                 
58                         ProcessData.Append(";TYPE=");
59                         ProcessData.Append(FullNamesListType[FNIter->first]);
60                         
61                 }
63                 // Check if there is a value for LANGUAGE.
64                 
65                 if (FullNamesListLanguage[FNIter->first].size() > 0){
66                 
67                         ProcessData.Append(";LANGUAGE=");
68                         ProcessData.Append(FullNamesListLanguage[FNIter->first]);
69                         
70                 }
71                 
72                 // Check if there is a value for ALTID.
73                 
74                 if (FullNamesListAltID[FNIter->first].size() > 0){
75                 
76                         ProcessData.Append(";ALTID=");
77                         ProcessData.Append(FullNamesListAltID[FNIter->first]);
78                         
79                 }
80                 
81                 // Check if there is a value for PID.
83                 if (FullNamesListPID[FNIter->first].size() > 0){
84                 
85                         ProcessData.Append(";PID=");
86                         ProcessData.Append(FullNamesListPID[FNIter->first]);
87                         
88                 }
90                 // Check if there is a value for PREF.
92                 if (FullNamesListPref[FNIter->first] > 0){
93                 
94                         ProcessData.Append(";PREF=");
95                         ProcessData.Append(wxString::Format("%i", FullNamesListPref[FNIter->first]));
96                         
97                 }
99                 // Check if there is a value for tokens.
101                 if (FullNamesListTokens[FNIter->first].size() > 0){
102                 
103                         ProcessData.Append(";");
104                         ProcessData.Append(FullNamesListTokens[FNIter->first]);
105                         
106                 }
107                 
108                 ProcessData.Append(":");
109                 ProcessData.Append(FNIter->second);
110                 ProcessData.Append("\n");
111                 
112                 ProcessData = OutputText(&ProcessData);
113                 
114                 SaveData->Append(ProcessData);
115                 ProcessData.clear();
116                         
117         }
118         
119         // Process TITLE.
121         SaveTitle(&GeneralTitleList, &GeneralTitleListLanguage,
122                 &GeneralTitleListAltID, &GeneralTitleListPID,
123                 &GeneralTitleListType, &GeneralTitleListPref,
124                 &GeneralTitleListTokens, SaveData, "");
125         SaveTitle(&HomeTitleList, &HomeTitleListLanguage,
126                 &HomeTitleListAltID, &HomeTitleListPID,
127                 &HomeTitleListType, &HomeTitleListPref,
128                 &HomeTitleListTokens, SaveData, "home");
129         SaveTitle(&BusinessTitleList, &BusinessTitleListLanguage,
130                 &BusinessTitleListAltID, &BusinessTitleListPID,
131                 &BusinessTitleListType, &BusinessTitleListPref,
132                 &BusinessTitleListTokens, SaveData, "work");
133         
134         // Write the end part of the vCard data file.
135         
136         SaveData->Append("END:VCARD");
137         
138         SaveDataStatus = CONTACTSAVE_OK;
139         
140         return SaveDataStatus;
141         
144 void ContactDataObject::SaveTitle(map<int, wxString> *TitleList, map<int, wxString> *TitleListLanguage,
145         map<int, wxString> *TitleListAltID, map<int, wxString> *TitleListPID,
146         map<int, wxString> *TitleListType, map<int, int> *TitleListPref,
147         map<int, wxString> *TitleListTokens, wxString *SaveData, wxString DataType){
149         wxString ProcessData = "";
150                 
151         for (std::map<int, wxString>::iterator TitleIter = TitleList->begin();
152                 TitleIter != TitleList->end(); TitleIter++){
154                 ProcessData.Append("TITLE");
155                         
156                 // Check if there is a value for TYPE.
157                 
158                 if (DataType.size() > 0){
159                 
160                         ProcessData.Append(";TYPE=");
161                         ProcessData.Append(DataType);
162                         
163                 }
164                 
165                 // Check if there is a value for ALTID.
166                 
167                 if ((*TitleListAltID)[TitleIter->first].size() > 0){
168                 
169                         ProcessData.Append(";ALTID=");
170                         ProcessData.Append((*TitleListAltID)[TitleIter->first]);
171                         
172                 }
174                 // Check if there is a value for LANGUAGE.
175                 
176                 if ((*TitleListLanguage)[TitleIter->first].size() > 0){
177                 
178                         ProcessData.Append(";LANGUAGE=");
179                         ProcessData.Append((*TitleListLanguage)[TitleIter->first]);
180                         
181                 }
182                 
183                 // Check if there is a value for PID.
185                 if ((*TitleListPID)[TitleIter->first].size() > 0){
186                 
187                         ProcessData.Append(";PID=");
188                         ProcessData.Append((*TitleListPID)[TitleIter->first]);
189                         
190                 }
192                 // Check if there is a value for PREF.
194                 if ((*TitleListPref)[TitleIter->first] > 0){
195                 
196                         ProcessData.Append(";PREF=");
197                         ProcessData.Append(wxString::Format("%i", (*TitleListPref)[TitleIter->first]));
198                         
199                 }
201                 // Check if there is a value for tokens.
203                 if ((*TitleListTokens)[TitleIter->first].size() > 0){
204                 
205                         ProcessData.Append(";");
206                         ProcessData.Append((*TitleListTokens)[TitleIter->first]);
207                         
208                 }
209                         
210                 ProcessData.Append(":");
211                 ProcessData.Append(TitleIter->second);
212                 ProcessData.Append("\n");
214                 ProcessData = OutputText(&ProcessData);
215                         
216                 SaveData->Append(ProcessData);
217                 ProcessData.clear();
218                         
219         }
220                 
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