1 #include "frmContactEditor.h"
3 void frmContactEditor::LoadNickname(wxString wxSPropertySeg1, wxString wxSPropertySeg2,
4 int *NicknameCount, vCard *ContactData){
6 std::map<int, int> SplitPoints;
7 std::map<int, int> SplitLength;
8 std::map<int, int>::iterator SLiter;
10 wxString PropertyName;
11 wxString PropertyValue;
12 wxString PropertyTokens;
13 bool FirstToken = TRUE;
14 int intPrevValue = 10;
19 SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
23 for (std::map<int, int>::iterator intiter = SplitPoints.begin();
24 intiter != SplitPoints.end(); ++intiter){
26 SLiter = SplitLength.find(intiter->first);
28 PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
30 wxStringTokenizer PropertyElement (PropertyData, wxT("="));
31 PropertyName = PropertyElement.GetNextToken();
32 PropertyValue = PropertyElement.GetNextToken();
34 intPrevValue = intiter->second;
36 if (PropertyName == wxT("TYPE")){
38 if (PropertyValue == wxT("work")){
42 } else if (PropertyValue == wxT("home")){
56 // Setup blank lines for later on.
60 GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
61 GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
62 GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
63 GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
64 GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
65 GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
67 } else if (intType == 1){
69 HomeNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
70 HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
71 HomeNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
72 HomeNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
73 HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
74 HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
76 } else if (intType == 2){
78 BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
79 BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
80 BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
81 BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
82 BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
83 BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
89 for (std::map<int, int>::iterator intiter = SplitPoints.begin();
90 intiter != SplitPoints.end(); ++intiter){
92 SLiter = SplitLength.find(intiter->first);
94 PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
96 wxStringTokenizer PropertyElement (PropertyData, wxT("="));
97 PropertyName = PropertyElement.GetNextToken();
98 PropertyValue = PropertyElement.GetNextToken();
100 intPrevValue = intiter->second;
102 ProcessCaptureStrings(&PropertyValue);
104 // Process properties.
106 size_t intPropertyValueLen = PropertyValue.Len();
108 if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
110 PropertyValue.Trim();
111 PropertyValue.RemoveLast();
115 if (PropertyValue.Mid(0, 1) == wxT("\"")){
117 PropertyValue.Remove(0, 1);
121 if (PropertyName == wxT("ALTID")){
123 if (intType == 0){ GeneralNicknamesListAltID.erase(intValueSeek); GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
124 else if (intType == 1){ HomeNicknamesListAltID.erase(intValueSeek); HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
125 else if (intType == 2){ BusinessNicknamesListAltID.erase(intValueSeek); BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
127 } else if (PropertyName == wxT("PID")){
129 if (intType == 0){ GeneralNicknamesListPID.erase(intValueSeek); GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
130 else if (intType == 1){ HomeNicknamesListPID.erase(intValueSeek); HomeNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
131 else if (intType == 2){ BusinessNicknamesListPID.erase(intValueSeek); BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
133 } else if (PropertyName == wxT("PREF")){
135 intPref = wxAtoi(PropertyValue);
137 if (intType == 0){ GeneralNicknamesListPref.erase(intValueSeek); GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
138 else if (intType == 1){ HomeNicknamesListPref.erase(intValueSeek); HomeNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
139 else if (intType == 2){ BusinessNicknamesListPref.erase(intValueSeek); BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
141 } else if (PropertyName == wxT("LANGUAGE")){
143 if (intType == 0){ GeneralNicknamesListLanguage.erase(intValueSeek); GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
144 else if (intType == 1){ HomeNicknamesListLanguage.erase(intValueSeek); HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
145 else if (intType == 2){ BusinessNicknamesListLanguage.erase(intValueSeek); BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
149 // Something else we don't know about so append
150 // to the tokens variable.
152 if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
154 if (FirstToken == TRUE){
156 PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
161 PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
171 // Add the data to the General/Home/Work address variables.
173 ProcessCaptureStrings(&wxSPropertySeg2);
177 coldata.SetId(intValueSeek);
178 coldata.SetData(intValueSeek);
179 coldata.SetText(wxSPropertySeg2);
183 ListCtrlIndex = lboNicknames->InsertItem(coldata);
185 if (intPref > 0 && intPref < 101){
187 lboNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
191 GeneralNicknamesList.erase(intValueSeek);
192 GeneralNicknamesListType.erase(intValueSeek);
193 GeneralNicknamesListTokens.erase(intValueSeek);
194 GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
195 GeneralNicknamesListType.insert(std::make_pair(intValueSeek, wxT("")));
196 GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
198 } else if (intType == 1){
200 ListCtrlIndex = lboHomeNicknames->InsertItem(coldata);
202 if (intPref > 0 && intPref < 101){
204 lboHomeNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
208 HomeNicknamesList.erase(intValueSeek);
209 HomeNicknamesListType.erase(intValueSeek);
210 HomeNicknamesListTokens.erase(intValueSeek);
211 HomeNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
212 HomeNicknamesListType.insert(std::make_pair(intValueSeek, wxT("home")));
213 HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
215 } else if (intType == 2){
217 ListCtrlIndex = lboBusinessNicknames->InsertItem(coldata);
219 if (intPref > 0 && intPref < 101){
221 lboBusinessNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
225 BusinessNicknamesList.erase(intValueSeek);
226 BusinessNicknamesListType.erase(intValueSeek);
227 BusinessNicknamesListTokens.erase(intValueSeek);
228 BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
229 BusinessNicknamesListType.insert(std::make_pair(intValueSeek, wxT("work")));
230 BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));