int GeographicCount = 0;
int RelatedCount = 0;
int URLCount = 0;
+ int TitleCount = 0;
+ int RoleCount = 0;
+ int OrganisationCount = 0;
+ int NoteCount = 0;
wxString ContactLine;
wxString PropertyLine;
wxString PropertySeg1;
ProcessURL(PropertySeg1, PropertySeg2, &URLCount);
URLCount++;
+ } else if (Property == wxT("TITLE")) {
+
+ // See frmContactEditor-LoadTitle.cpp
+
+ ProcessTitle(PropertySeg1, PropertySeg2, &TitleCount);
+ TitleCount++;
+
+ } else if (Property == wxT("ROLE")) {
+
+ // See frmContactEditor-LoadTitle.cpp
+
+ ProcessRole(PropertySeg1, PropertySeg2, &RoleCount);
+ RoleCount++;
+
+ } else if (Property == wxT("ORG")) {
+
+ // See frmContactEditor-LoadOrg.cpp
+
+ ProcessOrganisation(PropertySeg1, PropertySeg2, &OrganisationCount);
+ OrganisationCount++;
+
+ } else if (Property == wxT("NOTE")) {
+
+ // See frmContactEditor-LoadNote.cpp
+
+ ProcessNote(PropertySeg1, PropertySeg2, &NoteCount);
+ NoteCount++;
+
}
}
} else if (PropertyName == wxT("PREF")){
- intPref = wxAtoi(PropertyValue);
-
- if (intPref > 0 && intPref < 101){
-
+ int PriorityNumber = 0;
+ bool ValidNumber = TRUE;
+
+ try{
+ PriorityNumber = std::stoi(PropertyValue.ToStdString());
+ }
+
+ catch(std::invalid_argument &e){
+ ValidNumber = FALSE;
+ }
+
+ if (ValidNumber == TRUE){
+
GeneralRelatedListPref.erase(*RelatedCount);
- GeneralRelatedListPref.insert(std::make_pair(*RelatedCount, intPref));
+ GeneralRelatedListPref.insert(std::make_pair(*RelatedCount, PriorityNumber));
-
}
} else if (PropertyName == wxT("LANGUAGE")){
}
+void ContactDataObject::ProcessTitle(wxString PropertySeg1, wxString PropertySeg2, int *TitleCount){
+
+ std::map<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ wxString PropertyData;
+ wxString PropertyName;
+ wxString PropertyValue;
+ wxString PropertyTokens;
+ bool FirstToken = TRUE;
+ int intPrevValue = 7;
+ int intPref = 0;
+ int intType = 0;
+ long ListCtrlIndex;
+
+ SplitValues(&PropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+
+ intPrevValue = 6;
+
+ PropertyType PropType = PROPERTY_NONE;
+
+ // Look for type before continuing.
+
+ CheckType(&PropertySeg1, &SplitPoints, &SplitLength, &intPrevValue, &PropType);
+
+ // Setup the pointers.
+
+ std::map<int, wxString> *TitleList = NULL;
+ std::map<int, wxString> *TitleListAltID = NULL;
+ std::map<int, wxString> *TitleListPID = NULL;
+ std::map<int, wxString> *TitleListType = NULL;
+ std::map<int, wxString> *TitleListTokens = NULL;
+ std::map<int, wxString> *TitleListLanguage = NULL;
+ std::map<int, int> *TitleListPref = NULL;
+
+ // Setup blank lines for later on.
+
+ switch(PropType){
+ case PROPERTY_NONE:
+ TitleList = &GeneralTitleList;
+ TitleListType = &GeneralTitleListType;
+ TitleListAltID = &GeneralTitleListAltID;
+ TitleListPID = &GeneralTitleListPID;
+ TitleListTokens = &GeneralTitleListTokens;
+ TitleListLanguage = &GeneralTitleListLanguage;
+ TitleListPref = &GeneralTitleListPref;
+ break;
+ case PROPERTY_HOME:
+ TitleList = &HomeTitleList;
+ TitleListType = &HomeTitleListType;
+ TitleListAltID = &HomeTitleListAltID;
+ TitleListPID = &HomeTitleListPID;
+ TitleListTokens = &HomeTitleListTokens;
+ TitleListLanguage = &HomeTitleListLanguage;
+ TitleListPref = &HomeTitleListPref;
+ break;
+ case PROPERTY_WORK:
+ TitleList = &BusinessTitleList;
+ TitleListType = &BusinessTitleListType;
+ TitleListAltID = &BusinessTitleListAltID;
+ TitleListPID = &BusinessTitleListPID;
+ TitleListTokens = &BusinessTitleListTokens;
+ TitleListLanguage = &BusinessTitleListLanguage;
+ TitleListPref = &BusinessTitleListPref;
+ break;
+ }
+
+ intPrevValue = 6;
+
+ for (std::map<int, int>::iterator intiter = SplitPoints.begin();
+ intiter != SplitPoints.end(); ++intiter){
+
+ SLiter = SplitLength.find(intiter->first);
+
+ PropertyData = PropertySeg1.Mid(intPrevValue, (SLiter->second));
+
+ wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+ PropertyName = PropertyElement.GetNextToken();
+ PropertyValue = PropertyElement.GetNextToken();
+
+ intPrevValue = intiter->second;
+
+ // Process properties.
+
+ size_t intPropertyValueLen = PropertyValue.Len();
+
+ if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+
+ PropertyValue.Trim();
+ PropertyValue.RemoveLast();
+
+ }
+
+ if (PropertyValue.Mid(0, 1) == wxT("\"")){
+
+ PropertyValue.Remove(0, 1);
+
+ }
+
+ CaptureString(&PropertyValue, FALSE);
+
+ if (PropertyName == wxT("ALTID")){
+
+ TitleListAltID->erase(*TitleCount);
+ TitleListAltID->insert(std::make_pair(*TitleCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PID")){
+
+ TitleListPID->erase(*TitleCount);
+ TitleListPID->insert(std::make_pair(*TitleCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PREF")){
+
+ int PriorityNumber = 0;
+ bool ValidNumber = TRUE;
+
+ try{
+ PriorityNumber = std::stoi(PropertyValue.ToStdString());
+ }
+
+ catch(std::invalid_argument &e){
+ ValidNumber = FALSE;
+ }
+
+ if (ValidNumber == TRUE){
+
+ TitleListPref->erase(*TitleCount);
+ TitleListPref->insert(std::make_pair(*TitleCount, PriorityNumber));
+
+ }
+
+ } else if (PropertyName == wxT("LANGUAGE")){
+
+ TitleListLanguage->erase(*TitleCount);
+ TitleListLanguage->insert(std::make_pair(*TitleCount, PropertyValue));
+
+ } else {
+
+ // Something else we don't know about so append
+ // to the tokens variable.
+
+ 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);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ // Add the data to the General/Home/Work address variables.
+
+ CaptureString(&PropertySeg2, FALSE);
+
+ TitleList->insert(std::make_pair(*TitleCount, PropertySeg2));
+
+ if (!PropertyTokens.IsEmpty()){
+
+ TitleListTokens->insert(std::make_pair(*TitleCount, PropertyTokens));
+
+ }
+
+}
+
+void ContactDataObject::ProcessRole(wxString PropertySeg1, wxString PropertySeg2, int *RoleCount){
+
+ std::map<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ wxString PropertyData;
+ wxString PropertyName;
+ wxString PropertyValue;
+ wxString PropertyTokens;
+ bool FirstToken = TRUE;
+ int intPrevValue = 6;
+ int intPref = 0;
+ int intType = 0;
+ long ListCtrlIndex;
+
+ SplitValues(&PropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+
+ intPrevValue = 5;
+
+ PropertyType PropType = PROPERTY_NONE;
+
+ // Look for type before continuing.
+
+ CheckType(&PropertySeg1, &SplitPoints, &SplitLength, &intPrevValue, &PropType);
+
+ // Setup the pointers.
+
+ std::map<int, wxString> *RoleList = NULL;
+ std::map<int, wxString> *RoleListAltID = NULL;
+ std::map<int, wxString> *RoleListPID = NULL;
+ std::map<int, wxString> *RoleListType = NULL;
+ std::map<int, wxString> *RoleListTokens = NULL;
+ std::map<int, wxString> *RoleListLanguage = NULL;
+ std::map<int, int> *RoleListPref = NULL;
+
+ // Setup blank lines for later on.
+
+ switch(PropType){
+ case PROPERTY_NONE:
+ RoleList = &GeneralRoleList;
+ RoleListType = &GeneralRoleListType;
+ RoleListAltID = &GeneralRoleListAltID;
+ RoleListPID = &GeneralRoleListPID;
+ RoleListTokens = &GeneralRoleListTokens;
+ RoleListLanguage = &GeneralRoleListLanguage;
+ RoleListPref = &GeneralRoleListPref;
+ break;
+ case PROPERTY_HOME:
+ RoleList = &HomeRoleList;
+ RoleListType = &HomeRoleListType;
+ RoleListAltID = &HomeRoleListAltID;
+ RoleListPID = &HomeRoleListPID;
+ RoleListTokens = &HomeRoleListTokens;
+ RoleListLanguage = &HomeRoleListLanguage;
+ RoleListPref = &HomeRoleListPref;
+ break;
+ case PROPERTY_WORK:
+ RoleList = &BusinessRoleList;
+ RoleListType = &BusinessRoleListType;
+ RoleListAltID = &BusinessRoleListAltID;
+ RoleListPID = &BusinessRoleListPID;
+ RoleListTokens = &BusinessRoleListTokens;
+ RoleListLanguage = &BusinessRoleListLanguage;
+ RoleListPref = &BusinessRoleListPref;
+ break;
+ }
+
+ intPrevValue = 5;
+
+ for (std::map<int, int>::iterator intiter = SplitPoints.begin();
+ intiter != SplitPoints.end(); ++intiter){
+
+ SLiter = SplitLength.find(intiter->first);
+
+ PropertyData = PropertySeg1.Mid(intPrevValue, (SLiter->second));
+
+ wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+ PropertyName = PropertyElement.GetNextToken();
+ PropertyValue = PropertyElement.GetNextToken();
+
+ intPrevValue = intiter->second;
+
+ // Process properties.
+
+ size_t intPropertyValueLen = PropertyValue.Len();
+
+ if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+
+ PropertyValue.Trim();
+ PropertyValue.RemoveLast();
+
+ }
+
+ if (PropertyValue.Mid(0, 1) == wxT("\"")){
+
+ PropertyValue.Remove(0, 1);
+
+ }
+
+ CaptureString(&PropertyValue, FALSE);
+
+ if (PropertyName == wxT("ALTID")){
+
+ RoleListAltID->erase(*RoleCount);
+ RoleListAltID->insert(std::make_pair(*RoleCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PID")){
+
+ RoleListPID->erase(*RoleCount);
+ RoleListPID->insert(std::make_pair(*RoleCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PREF")){
+
+ int PriorityNumber = 0;
+ bool ValidNumber = TRUE;
+
+ try{
+ PriorityNumber = std::stoi(PropertyValue.ToStdString());
+ }
+
+ catch(std::invalid_argument &e){
+ ValidNumber = FALSE;
+ }
+
+ if (ValidNumber == TRUE){
+
+ RoleListPref->erase(*RoleCount);
+ RoleListPref->insert(std::make_pair(*RoleCount, PriorityNumber));
+
+ }
+
+ } else if (PropertyName == wxT("LANGUAGE")){
+
+ RoleListLanguage->erase(*RoleCount);
+ RoleListLanguage->insert(std::make_pair(*RoleCount, PropertyValue));
+
+ } else {
+
+ // Something else we don't know about so append
+ // to the tokens variable.
+
+ 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);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ // Add the data to the General/Home/Work address variables.
+
+ CaptureString(&PropertySeg2, FALSE);
+
+ RoleList->insert(std::make_pair(*RoleCount, PropertySeg2));
+
+ if (!PropertyTokens.IsEmpty()){
+
+ RoleListTokens->insert(std::make_pair(*RoleCount, PropertyTokens));
+
+ }
+
+}
+
+void ContactDataObject::ProcessOrganisation(wxString PropertySeg1, wxString PropertySeg2, int *OrganisationCount){
+
+ std::map<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ wxString PropertyData;
+ wxString PropertyName;
+ wxString PropertyValue;
+ wxString PropertyTokens;
+ bool FirstToken = TRUE;
+ int intPrevValue = 5;
+ int intPref = 0;
+ int intType = 0;
+ long ListCtrlIndex;
+
+ SplitValues(&PropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+
+ intPrevValue = 4;
+
+ PropertyType PropType = PROPERTY_NONE;
+
+ // Look for type before continuing.
+
+ CheckType(&PropertySeg1, &SplitPoints, &SplitLength, &intPrevValue, &PropType);
+
+ // Setup the pointers.
+
+ std::map<int, wxString> *OrganisationsList = NULL;
+ std::map<int, wxString> *OrganisationsListAltID = NULL;
+ std::map<int, wxString> *OrganisationsListPID = NULL;
+ std::map<int, wxString> *OrganisationsListType = NULL;
+ std::map<int, wxString> *OrganisationsListTokens = NULL;
+ std::map<int, wxString> *OrganisationsListLanguage = NULL;
+ std::map<int, wxString> *OrganisationsListSortAs = NULL;
+ std::map<int, int> *OrganisationsListPref = NULL;
+
+ // Setup blank lines for later on.
+
+ switch(PropType){
+ case PROPERTY_NONE:
+ OrganisationsList = &GeneralOrganisationsList;
+ OrganisationsListType = &GeneralOrganisationsListType;
+ OrganisationsListAltID = &GeneralOrganisationsListAltID;
+ OrganisationsListPID = &GeneralOrganisationsListPID;
+ OrganisationsListTokens = &GeneralOrganisationsListTokens;
+ OrganisationsListLanguage = &GeneralOrganisationsListLanguage;
+ OrganisationsListSortAs = &GeneralOrganisationsListSortAs;
+ OrganisationsListPref = &GeneralOrganisationsListPref;
+ break;
+ case PROPERTY_HOME:
+ OrganisationsList = &HomeOrganisationsList;
+ OrganisationsListType = &HomeOrganisationsListType;
+ OrganisationsListAltID = &HomeOrganisationsListAltID;
+ OrganisationsListPID = &HomeOrganisationsListPID;
+ OrganisationsListTokens = &HomeOrganisationsListTokens;
+ OrganisationsListLanguage = &HomeOrganisationsListLanguage;
+ OrganisationsListSortAs = &HomeOrganisationsListSortAs;
+ OrganisationsListPref = &HomeOrganisationsListPref;
+ break;
+ case PROPERTY_WORK:
+ OrganisationsList = &BusinessOrganisationsList;
+ OrganisationsListType = &BusinessOrganisationsListType;
+ OrganisationsListAltID = &BusinessOrganisationsListAltID;
+ OrganisationsListPID = &BusinessOrganisationsListPID;
+ OrganisationsListTokens = &BusinessOrganisationsListTokens;
+ OrganisationsListLanguage = &BusinessOrganisationsListLanguage;
+ OrganisationsListSortAs = &BusinessOrganisationsListSortAs;
+ OrganisationsListPref = &BusinessOrganisationsListPref;
+ break;
+ }
+
+ intPrevValue = 4;
+
+ for (std::map<int, int>::iterator intiter = SplitPoints.begin();
+ intiter != SplitPoints.end(); ++intiter){
+
+ SLiter = SplitLength.find(intiter->first);
+
+ PropertyData = PropertySeg1.Mid(intPrevValue, (SLiter->second));
+
+ wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+ PropertyName = PropertyElement.GetNextToken();
+ PropertyValue = PropertyElement.GetNextToken();
+
+ intPrevValue = intiter->second;
+
+ // Process properties.
+
+ size_t intPropertyValueLen = PropertyValue.Len();
+
+ if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+
+ PropertyValue.Trim();
+ PropertyValue.RemoveLast();
+
+ }
+
+ if (PropertyValue.Mid(0, 1) == wxT("\"")){
+
+ PropertyValue.Remove(0, 1);
+
+ }
+
+ CaptureString(&PropertyValue, FALSE);
+
+ if (PropertyName == wxT("ALTID")){
+
+ OrganisationsListAltID->erase(*OrganisationCount);
+ OrganisationsListAltID->insert(std::make_pair(*OrganisationCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PID")){
+
+ OrganisationsListPID->erase(*OrganisationCount);
+ OrganisationsListPID->insert(std::make_pair(*OrganisationCount, PropertyValue));
+
+ } else if (PropertyName == wxT("SORT-AS")){
+
+ OrganisationsListSortAs->erase(*OrganisationCount);
+ OrganisationsListSortAs->insert(std::make_pair(*OrganisationCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PREF")){
+
+ int PriorityNumber = 0;
+ bool ValidNumber = TRUE;
+
+ try{
+ PriorityNumber = std::stoi(PropertyValue.ToStdString());
+ }
+
+ catch(std::invalid_argument &e){
+ ValidNumber = FALSE;
+ }
+
+ if (ValidNumber == TRUE){
+
+ OrganisationsListPref->erase(*OrganisationCount);
+ OrganisationsListPref->insert(std::make_pair(*OrganisationCount, PriorityNumber));
+
+ }
+
+ } else if (PropertyName == wxT("LANGUAGE")){
+
+ OrganisationsListLanguage->erase(*OrganisationCount);
+ OrganisationsListLanguage->insert(std::make_pair(*OrganisationCount, PropertyValue));
+
+ } else {
+
+ // Something else we don't know about so append
+ // to the tokens variable.
+
+ 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);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ // Add the data to the General/Home/Work address variables.
+
+ CaptureString(&PropertySeg2, FALSE);
+
+ OrganisationsList->insert(std::make_pair(*OrganisationCount, PropertySeg2));
+
+ if (!PropertyTokens.IsEmpty()){
+
+ OrganisationsListTokens->insert(std::make_pair(*OrganisationCount, PropertyTokens));
+
+ }
+
+}
+
+void ContactDataObject::ProcessNote(wxString PropertySeg1, wxString PropertySeg2, int *NoteCount){
+
+ std::map<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ wxString PropertyData;
+ wxString PropertyName;
+ wxString PropertyValue;
+ wxString PropertyTokens;
+ bool FirstToken = TRUE;
+ int intPrevValue = 6;
+ int intPref = 0;
+ int intType = 0;
+ long ListCtrlIndex;
+
+ SplitValues(&PropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+
+ intPrevValue = 5;
+
+ PropertyType PropType = PROPERTY_NONE;
+
+ // Look for type before continuing.
+
+ CheckType(&PropertySeg1, &SplitPoints, &SplitLength, &intPrevValue, &PropType);
+
+ // Setup the pointers.
+
+ std::map<int, wxString> *NoteList = NULL;
+ std::map<int, wxString> *NoteListAltID = NULL;
+ std::map<int, wxString> *NoteListPID = NULL;
+ std::map<int, wxString> *NoteListType = NULL;
+ std::map<int, wxString> *NoteListTokens = NULL;
+ std::map<int, wxString> *NoteListLanguage = NULL;
+ std::map<int, wxString> *NoteListSortAs = NULL;
+ std::map<int, int> *NoteListPref = NULL;
+
+ // Setup blank lines for later on.
+
+ switch(PropType){
+ case PROPERTY_NONE:
+ NoteList = &GeneralNoteList;
+ NoteListType = &GeneralNoteListType;
+ NoteListAltID = &GeneralNoteListAltID;
+ NoteListPID = &GeneralNoteListPID;
+ NoteListTokens = &GeneralNoteListTokens;
+ NoteListLanguage = &GeneralNoteListLanguage;
+ NoteListPref = &GeneralNoteListPref;
+ break;
+ case PROPERTY_HOME:
+ NoteList = &HomeNoteList;
+ NoteListType = &HomeNoteListType;
+ NoteListAltID = &HomeNoteListAltID;
+ NoteListPID = &HomeNoteListPID;
+ NoteListTokens = &HomeNoteListTokens;
+ NoteListLanguage = &HomeNoteListLanguage;
+ NoteListPref = &HomeNoteListPref;
+ break;
+ case PROPERTY_WORK:
+ NoteList = &BusinessNoteList;
+ NoteListType = &BusinessNoteListType;
+ NoteListAltID = &BusinessNoteListAltID;
+ NoteListPID = &BusinessNoteListPID;
+ NoteListTokens = &BusinessNoteListTokens;
+ NoteListLanguage = &BusinessNoteListLanguage;
+ NoteListPref = &BusinessNoteListPref;
+ break;
+ }
+
+ intPrevValue = 5;
+
+ for (std::map<int, int>::iterator intiter = SplitPoints.begin();
+ intiter != SplitPoints.end(); ++intiter){
+
+ SLiter = SplitLength.find(intiter->first);
+
+ PropertyData = PropertySeg1.Mid(intPrevValue, (SLiter->second));
+
+ wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+ PropertyName = PropertyElement.GetNextToken();
+ PropertyValue = PropertyElement.GetNextToken();
+
+ intPrevValue = intiter->second;
+
+ // Process properties.
+
+ size_t intPropertyValueLen = PropertyValue.Len();
+
+ if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+
+ PropertyValue.Trim();
+ PropertyValue.RemoveLast();
+
+ }
+
+ if (PropertyValue.Mid(0, 1) == wxT("\"")){
+
+ PropertyValue.Remove(0, 1);
+
+ }
+
+ CaptureString(&PropertyValue, FALSE);
+
+ if (PropertyName == wxT("ALTID")){
+
+ NoteListAltID->erase(*NoteCount);
+ NoteListAltID->insert(std::make_pair(*NoteCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PID")){
+
+ NoteListPID->erase(*NoteCount);
+ NoteListPID->insert(std::make_pair(*NoteCount, PropertyValue));
+
+ } else if (PropertyName == wxT("SORT-AS")){
+
+ NoteListSortAs->erase(*NoteCount);
+ NoteListSortAs->insert(std::make_pair(*NoteCount, PropertyValue));
+
+ } else if (PropertyName == wxT("PREF")){
+
+ int PriorityNumber = 0;
+ bool ValidNumber = TRUE;
+
+ try{
+ PriorityNumber = std::stoi(PropertyValue.ToStdString());
+ }
+
+ catch(std::invalid_argument &e){
+ ValidNumber = FALSE;
+ }
+
+ if (ValidNumber == TRUE){
+
+ NoteListPref->erase(*NoteCount);
+ NoteListPref->insert(std::make_pair(*NoteCount, PriorityNumber));
+
+ }
+
+ } else if (PropertyName == wxT("LANGUAGE")){
+
+ NoteListLanguage->erase(*NoteCount);
+ NoteListLanguage->insert(std::make_pair(*NoteCount, PropertyValue));
+
+ } else {
+
+ // Something else we don't know about so append
+ // to the tokens variable.
+
+ 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);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ // Add the data to the General/Home/Work address variables.
+
+ CaptureString(&PropertySeg2, FALSE);
+
+ NoteList->insert(std::make_pair(*NoteCount, PropertySeg2));
+
+ if (!PropertyTokens.IsEmpty()){
+
+ NoteListTokens->insert(std::make_pair(*NoteCount, PropertyTokens));
+
+ }
+
+}
+
void SplitValues(wxString *PropertyLine,
std::map<int,int> *SplitPoints,
std::map<int,int> *SplitLength,