X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcontacteditor%2FContactDataObject.cpp;h=47fe119f7b065927c9f91b2da3c83147ded63a3e;hb=1759400884dfefa8bba80c2cef27aa8ee2d05c2c;hp=bc45c48371885f7a33630b79a942d2191c5f0f71;hpb=ad53475636b679dbc91d6d516c7a5f68ac2ef418;p=xestiaab%2F.git diff --git a/source/contacteditor/ContactDataObject.cpp b/source/contacteditor/ContactDataObject.cpp index bc45c48..47fe119 100644 --- a/source/contacteditor/ContactDataObject.cpp +++ b/source/contacteditor/ContactDataObject.cpp @@ -549,6 +549,7 @@ void ContactDataObject::ProcessSource(wxString PropertySeg1, wxString PropertySe wxString PropertyValue; wxString PropertyTokens; bool FirstToken = TRUE; + bool PropertyMatched = FALSE; int intSplitsFound = 0; int intSplitSize = 0; int intPrevValue = 8; @@ -599,42 +600,28 @@ void ContactDataObject::ProcessSource(wxString PropertySeg1, wxString PropertySe CaptureString(&PropertyValue, FALSE); - if (PropertyName == wxT("ALTID")){ - - SourceListAltID.erase(*SourceCount); - SourceListAltID.insert(std::make_pair(*SourceCount, PropertyValue)); + ProcessStringValue(&PropertyName, "ALTID", &SourceListAltID, &PropertyValue, SourceCount, &PropertyMatched); + ProcessStringValue(&PropertyName, "PID", &SourceListPID, &PropertyValue, SourceCount, &PropertyMatched); + ProcessStringValue(&PropertyName, "MEDIATYPE", &SourceListMediatype, &PropertyValue, SourceCount, &PropertyMatched); + ProcessIntegerValue(&PropertyName, "PREF", &SourceListPref, &PropertyValue, SourceCount, &PropertyMatched); - } else if (PropertyName == wxT("PID")){ - - SourceListPID.erase(*SourceCount); - SourceListPID.insert(std::make_pair(*SourceCount, PropertyValue)); + if (PropertyMatched == TRUE){ - } else if (PropertyName == wxT("PREF")){ - - ProcessIntegerValue(&SourceListPref, &PropertyValue, SourceCount); - - } else if (PropertyName == wxT("MEDIATYPE")){ + PropertyMatched = FALSE; + continue; - SourceListMediatype.erase(*SourceCount); - SourceListMediatype.insert(std::make_pair(*SourceCount, PropertyValue)); - - } else { + } - // Something else we don't know about so append - // to the tokens variable. - - if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ - if (FirstToken == TRUE){ - - PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); - FirstToken = FALSE; - - } else { - - PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + if (FirstToken == TRUE){ - } + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); } @@ -693,6 +680,7 @@ void ContactDataObject::ProcessXML(wxString PropertySeg1, wxString PropertySeg2, wxString PropertyTokens; std::map::iterator SLiter; bool FirstToken = TRUE; + bool PropertyMatched = FALSE; for (std::map::iterator intiter = SplitPoints.begin(); intiter != SplitPoints.end(); ++intiter){ @@ -709,10 +697,12 @@ void ContactDataObject::ProcessXML(wxString PropertySeg1, wxString PropertySeg2, CaptureString(&PropertyValue, FALSE); - if (PropertyName == wxT("ALTID")){ - - XMLListAltID.erase(*XMLCount); - XMLListAltID.insert(std::make_pair(*XMLCount, PropertyValue)); + ProcessStringValue(&PropertyName, "ALTID", &XMLListAltID, &PropertyValue, XMLCount, &PropertyMatched); + + if (PropertyMatched == TRUE){ + + PropertyMatched = FALSE; + continue; } @@ -5496,15 +5486,50 @@ void ProcessStringValue(wxString *PropertyName, wxString PropertyNameMatch, std::map *MapPtr, wxString *PropertyValue, - int *ItemCount){ - + int *ItemCount, + bool *PropertyMatched){ + if (*PropertyName == PropertyNameMatch){ MapPtr->erase(*ItemCount); MapPtr->insert(std::make_pair(*ItemCount, *PropertyValue)); + *PropertyMatched = TRUE; } } +void ProcessIntegerValue(wxString *PropertyName, + wxString PropertyNameMatch, + std::map *PrefPtr, + wxString *PropertyValue, + int *ItemCount, + bool *PropertyMatched){ + + if (*PropertyName == PropertyNameMatch){ + *PropertyMatched = TRUE; + } else { + return; + } + + int PriorityNumber = 0; + bool ValidNumber = TRUE; + + try{ + PriorityNumber = std::stoi(PropertyValue->ToStdString()); + } + + catch(std::invalid_argument &e){ + ValidNumber = FALSE; + } + + if (ValidNumber == TRUE){ + + PrefPtr->erase(*ItemCount); + PrefPtr->insert(std::make_pair(*ItemCount, PriorityNumber)); + + } + +} + void ProcessIntegerValue(std::map *PrefPtr, wxString *PropertyValue, int *ItemCount){