Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Split frmContactEditor-Load.cpp into 24 files to make it more manageable.
[xestiaab/.git] / source / contacteditor / frmContactEditor-LoadAddress.cpp
1 #include "frmContactEditor.h"
3 void frmContactEditor::LoadADR(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount){
5         size_t intPropertyLen = wxSPropertySeg1.Len();
6         std::map<int, int> SplitPoints;
7         std::map<int, int> SplitLength;
8         std::map<int, int>::iterator SLiter;                    
9         wxString PropertyData;
10         wxString PropertyName;
11         wxString PropertyValue;
12         wxString PropertyTokens;
13         wxString AddressLabel;
14         wxString AddressLang;
15         wxString AddressAltID;
16         wxString AddressPID;
17         wxString AddressTokens;
18         wxString AddressGeo;
19         wxString AddressTimezone;
20         wxString AddressType;
21         wxString AddressMediatype;
22         wxString AddressPOBox;
23         wxString AddressExtended;
24         wxString AddressStreet;
25         wxString AddressLocality;
26         wxString AddressCity;
27         wxString AddressRegion;
28         wxString AddressPostalCode;
29         wxString AddressCountry;
30         bool FirstToken = TRUE;                 
31         int intSplitsFound = 0;
32         int intSplitSize = 0;
33         int intPrevValue = 5;
34         int intPref = 0;                        
35         int intType = 0;
36         long ListCtrlIndex;
37         
38         SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
39         
40         intPrevValue = 4;
41         
42         // Look for type before continuing.
43         
44         for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
45         intiter != SplitPoints.end(); ++intiter){
46         
47                 SLiter = SplitLength.find(intiter->first);
48         
49                 PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
50                 
51                 wxStringTokenizer PropertyElement (PropertyData, wxT("="));
52                 PropertyName = PropertyElement.GetNextToken();                          
53                 PropertyValue = PropertyElement.GetNextToken();
54                 
55                 intPrevValue = intiter->second;
56                 
57                 if (PropertyName == wxT("TYPE")){
58                 
59                         if (PropertyValue == wxT("work")){
60                         
61                                 intType = 2;                                    
62                         
63                         } else if (PropertyValue == wxT("home")){
65                                 intType = 1;
66                         
67                         } else {
68                         
69                                 intType = 0;
70                         
71                         }
72                 
73                 }
74         
75         }
76         
77         // Setup blank lines for later on.
78         
79         if (intType == 0){
80         
81                 GeneralAddressList.insert(std::make_pair(intValueSeek, wxT("")));
82                 GeneralAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
83                 GeneralAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
84                 GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
85                 GeneralAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
86                 GeneralAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
87                 GeneralAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
88                 GeneralAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
89                 GeneralAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
90                 GeneralAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
91                 GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
92                 GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
93                 GeneralAddressListPref.insert(std::make_pair(intValueSeek, 0));
94                 GeneralAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
96         } else if (intType == 1){
97         
98                 HomeAddressList.insert(std::make_pair(intValueSeek, wxT("")));
99                 HomeAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
100                 HomeAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
101                 HomeAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
102                 HomeAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
103                 HomeAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
104                 HomeAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
105                 HomeAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
106                 HomeAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
107                 HomeAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
108                 HomeAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
109                 HomeAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
110                 HomeAddressListPref.insert(std::make_pair(intValueSeek, 0));
111                 HomeAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
112         
113         } else if (intType == 2){
115                 BusinessAddressList.insert(std::make_pair(intValueSeek, wxT("")));
116                 BusinessAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
117                 BusinessAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
118                 BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
119                 BusinessAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
120                 BusinessAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
121                 BusinessAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
122                 BusinessAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
123                 BusinessAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
124                 BusinessAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
125                 BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
126                 BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
127                 BusinessAddressListPref.insert(std::make_pair(intValueSeek, 0));
128                 BusinessAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
129         
130         }
131         
132         intPrevValue = 4;
133         
134         for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
135         intiter != SplitPoints.end(); ++intiter){
136         
137                 SLiter = SplitLength.find(intiter->first);
138         
139                 PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
140                 
141                 wxStringTokenizer PropertyElement (PropertyData, wxT("="));
142                 PropertyName = PropertyElement.GetNextToken();                          
143                 PropertyValue = PropertyElement.GetNextToken();
144                 
145                 intPrevValue = intiter->second;
146                 
147                 ProcessCaptureStrings(&PropertyValue);
148                 
149                 // Process properties.
150                 
151                 if (PropertyName == wxT("LABEL")){
152                 
153                         if (intType == 0){ GeneralAddressListLabel.erase(intValueSeek); GeneralAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); }
154                         else if (intType == 1){ HomeAddressListLabel.erase(intValueSeek); HomeAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); }
155                         else if (intType == 2){ BusinessAddressListLabel.erase(intValueSeek); BusinessAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue));}
156                 
157                 } else if (PropertyName == wxT("LANGUAGE")){
158                 
159                         if (intType == 0){ GeneralAddressListLang.erase(intValueSeek); GeneralAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }
160                         else if (intType == 1){ HomeAddressListLang.erase(intValueSeek); HomeAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }
161                         else if (intType == 2){ BusinessAddressListLang.erase(intValueSeek); BusinessAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }                             
162                 
163                 } else if (PropertyName == wxT("ALTID")){
165                         if (intType == 0){ GeneralAddressListAltID.erase(intValueSeek); GeneralAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
166                         else if (intType == 1){ HomeAddressListAltID.erase(intValueSeek); HomeAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
167                         else if (intType == 2){ BusinessAddressListAltID.erase(intValueSeek); BusinessAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
168                 
169                 } else if (PropertyName == wxT("PID")){
171                         if (intType == 0){ GeneralAddressListPID.erase(intValueSeek); GeneralAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
172                         else if (intType == 1){ HomeAddressListPID.erase(intValueSeek); HomeAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
173                         else if (intType == 2){ BusinessAddressListPID.erase(intValueSeek); BusinessAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
174                 
175                 } else if (PropertyName == wxT("GEO")){
176                 
177                         if (intType == 0){ GeneralAddressListGeo.erase(intValueSeek); GeneralAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
178                         else if (intType == 1){ HomeAddressListGeo.erase(intValueSeek); HomeAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
179                         else if (intType == 2){ BusinessAddressListGeo.erase(intValueSeek); BusinessAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
180                 
181                 } else if (PropertyName == wxT("TZ")){
183                         if (intType == 0){ GeneralAddressListTimezone.erase(intValueSeek); GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
184                         else if (intType == 1){ HomeAddressListTimezone.erase(intValueSeek); HomeAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
185                         else if (intType == 2){ BusinessAddressListTimezone.erase(intValueSeek); BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
186                 
187                 } else if (PropertyName == wxT("MEDIATYPE")){
189                         if (intType == 0){ GeneralAddressListMediatype.erase(intValueSeek); GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
190                         else if (intType == 1){ HomeAddressListMediatype.erase(intValueSeek); HomeAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
191                         else if (intType == 2){ BusinessAddressListMediatype.erase(intValueSeek); BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
192                 
193                 } else if (PropertyName == wxT("PREF")){
194                         
195                         intPref = wxAtoi(PropertyValue);
196                         
197                         if (intPref > 0 && intPref < 101){
198                                                 
199                                 if (intType == 0){ GeneralAddressListPref.erase(intValueSeek); GeneralAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
200                                 else if (intType == 1){ HomeAddressListPref.erase(intValueSeek); HomeAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
201                                 else if (intType == 2){ BusinessAddressListPref.erase(intValueSeek); BusinessAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
202                                 
203                         }
204                 
205                 } else {
206                 
207                         if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
208                         
209                                 if (FirstToken == TRUE){
210                                 
211                                         PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
212                                         FirstToken = FALSE;
213                                 
214                                 } else {
215                                 
216                                         PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
217                                 
218                                 }
219                         
220                         }
221                 
222                 }
223         
224         }                       
225         
226         // Split the address. 
228         //std::map<int, int>::iterator SLiter;
229         intPropertyLen = wxSPropertySeg2.Len();
230         SplitPoints.clear();
231         SplitLength.clear();
232         intSplitsFound = 0;
233         intSplitSize = 0;
234         intPrevValue = 0;
235         
236         for (int i = 0; i <= intPropertyLen; i++){
238                 intSplitSize++;
239         
240                 if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
241         
242                         intSplitsFound++;
243                         SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
244                         
245                         if (intSplitsFound == 6){ 
246                         
247                                 SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
248                                 break; 
249                                 
250                         } else {
251                         
252                                 SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
253                         
254                         }
255                         
256                         intSplitSize = 0;                                       
257         
258                 }
260         }
261         
262         // Split the data into several parts.                   
263         
264         for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
265         intiter != SplitPoints.end(); ++intiter){
266                         
267                 if (intiter->first == 1){
268                 
269                         // Deal with PO Box.
270                         
271                         SLiter = SplitLength.find(1);
272                                                                 
273                         //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
274                         AddressPOBox = wxSPropertySeg2.Mid(0, SLiter->second);
275                         intPrevValue = intiter->second;
276                 
277                 } else if (intiter->first == 2){
278                 
279                         // Deal with extended address.
280                         
281                         SLiter = SplitLength.find(2);
282                         
283                         AddressExtended = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
284                         //txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
285                         intPrevValue = intiter->second;
286                 
287                 } else if (intiter->first == 3){
288                 
289                         // Deal with street address.
290                         
291                         SLiter = SplitLength.find(3);
292                                                                 
293                         AddressStreet = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
294                         //txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
295                         intPrevValue = intiter->second;
296                 
297                 } else if (intiter->first == 4){
298                 
299                         // Deal with locality
301                         SLiter = SplitLength.find(4);
302                         
303                         AddressLocality = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
304                         //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
305                         intPrevValue = intiter->second;
306                         
307                         //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
308                 
309                 } else if (intiter->first == 5){
310                 
311                         // Deal with region.
313                         SLiter = SplitLength.find(5);
314                         
315                         AddressRegion = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
316                         //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
317                         intPrevValue = intiter->second;
318                         
319                         //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
320                 
321                 } else if (intiter->first == 6){
322                 
323                         // Deal with post code.
325                         SLiter = SplitLength.find(6);
326                         
327                         AddressPostalCode = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
328                         //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
329                         intPrevValue = intiter->second;
330                         
331                         // Deal with country.
332                         
333                         AddressCountry = wxSPropertySeg2.Mid(intPrevValue);
334                         //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
335                 
336                 }
337         
338         }       
339         
340         // Add the data to the General/Home/Work address variables.
341         
342         ProcessCaptureStrings(&AddressStreet, &AddressLocality, &AddressRegion, &AddressPostalCode, &AddressCountry);
343         
344         wxListItem coldata;
346         coldata.SetId(intValueSeek);
347         coldata.SetData(intValueSeek);
348         coldata.SetText(AddressStreet);
349         
350         if (intType == 0){
351         
352                 ListCtrlIndex = lboAddresses->InsertItem(coldata);
353                 lboAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
354                 lboAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
355                 lboAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
356                 
357                 if (intPref > 0 && intPref < 101){
358                 
359                         lboAddresses->SetItem(ListCtrlIndex, 4, wxString::Format(wxT("%i"), intPref));
360                         
361                 }
362                 
363                 GeneralAddressList.erase(intValueSeek);
364                 GeneralAddressListTown.erase(intValueSeek);
365                 GeneralAddressListCounty.erase(intValueSeek);
366                 GeneralAddressListPostCode.erase(intValueSeek);
367                 GeneralAddressListCountry.erase(intValueSeek);
368                 GeneralAddressListType.erase(intValueSeek);
369                 GeneralAddressListTokens.erase(intValueSeek);
370                 GeneralAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
371                 GeneralAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
372                 GeneralAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
373                 GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
374                 GeneralAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
375                 GeneralAddressListType.insert(std::make_pair(intValueSeek, wxT("")));
376                 GeneralAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
377         
378         } else if (intType == 1){ 
379         
380                 ListCtrlIndex = lboHomeAddresses->InsertItem(coldata);
381                 lboHomeAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
382                 lboHomeAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
383                 lboHomeAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
385                 if (intPref > 0 && intPref < 101){
386                 
387                         lboHomeAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
388                         
389                 }
391                 HomeAddressList.erase(intValueSeek);
392                 HomeAddressListTown.erase(intValueSeek);
393                 HomeAddressListCounty.erase(intValueSeek);
394                 HomeAddressListPostCode.erase(intValueSeek);
395                 HomeAddressListCountry.erase(intValueSeek);
396                 HomeAddressListType.erase(intValueSeek);
397                 HomeAddressListTokens.erase(intValueSeek);                              
398                 HomeAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
399                 HomeAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
400                 HomeAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
401                 HomeAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
402                 HomeAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
403                 HomeAddressListType.insert(std::make_pair(intValueSeek, wxT("home")));
404                 HomeAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
405         
406         } else if (intType == 2){ 
407         
408                 ListCtrlIndex = lboBusinessAddresses->InsertItem(coldata);
409                 lboBusinessAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
410                 lboBusinessAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
411                 lboBusinessAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
413                 if (intPref > 0 && intPref < 101){
414                 
415                         lboBusinessAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
416                         
417                 }
418                 
419                 BusinessAddressList.erase(intValueSeek);
420                 BusinessAddressListTown.erase(intValueSeek);
421                 BusinessAddressListCounty.erase(intValueSeek);
422                 BusinessAddressListPostCode.erase(intValueSeek);
423                 BusinessAddressListCountry.erase(intValueSeek);
424                 BusinessAddressListType.erase(intValueSeek);
425                 BusinessAddressListTokens.erase(intValueSeek);
426                 BusinessAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
427                 BusinessAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
428                 BusinessAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
429                 BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
430                 BusinessAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
431                 BusinessAddressListType.insert(std::make_pair(intValueSeek, wxT("work")));
432                 BusinessAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                         
433         
434         }
435         
436         ADRCount++;
437         intValueSeek++;
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