Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Fixed potential crash in frmContactEditorCalAdr in Edit mode.
[xestiaab/.git] / source / contacteditor / cdo / ContactDataObject.cpp
index 1a6e6be..5085409 100644 (file)
@@ -1586,7 +1586,15 @@ void ContactDataObject::ProcessAddress(wxString PropertySeg1, wxString PropertyS
                ProcessNameValue(&PropertyData, &PropertyName, &PropertyValue);
                intPrevValue = intiter->second;
                
-               CaptureString(&PropertyValue, FALSE);
+               if (PropertyName == "GEO"){
+               
+                       CaptureString(&PropertyValue, TRUE); 
+               
+               } else {
+               
+                       CaptureString(&PropertyValue, FALSE);                   
+               
+               }
                
                // Process properties.
                
@@ -1875,7 +1883,8 @@ void ContactDataObject::ProcessIM(wxString PropertySeg1, wxString PropertySeg2,
        std::map<int, wxString> *IMListAltID = NULL;
        std::map<int, wxString> *IMListPID = NULL;
        std::map<int, wxString> *IMListTokens = NULL;
-       std::map<int, wxString> *IMListMediatype = NULL;        
+       std::map<int, wxString> *IMListMediatype = NULL;
+       std::map<int, wxString> *IMListTypeInfo = NULL;
        std::map<int, int> *IMListPref = NULL;
 
        switch(PropType){
@@ -1886,6 +1895,7 @@ void ContactDataObject::ProcessIM(wxString PropertySeg1, wxString PropertySeg2,
                        IMListPID = &GeneralIMListPID;
                        IMListTokens = &GeneralIMListTokens;
                        IMListMediatype = &GeneralIMListMediatype;
+                       IMListTypeInfo = &GeneralIMListTypeInfo;
                        IMListPref = &GeneralIMListPref;        
                        break;
                case PROPERTY_HOME:
@@ -1894,7 +1904,8 @@ void ContactDataObject::ProcessIM(wxString PropertySeg1, wxString PropertySeg2,
                        IMListAltID = &HomeIMListAltID;
                        IMListPID = &HomeIMListPID;
                        IMListTokens = &HomeIMListTokens;
-                       IMListMediatype = &HomeIMListMediatype;         
+                       IMListMediatype = &HomeIMListMediatype; 
+                       IMListTypeInfo = &HomeIMListTypeInfo;   
                        IMListPref = &HomeIMListPref;   
                        break;
                case PROPERTY_WORK:
@@ -1903,7 +1914,8 @@ void ContactDataObject::ProcessIM(wxString PropertySeg1, wxString PropertySeg2,
                        IMListAltID = &BusinessIMListAltID;
                        IMListPID = &BusinessIMListPID;
                        IMListTokens = &BusinessIMListTokens;   
-                       IMListMediatype = &BusinessIMListMediatype;     
+                       IMListMediatype = &BusinessIMListMediatype;
+                       IMListTypeInfo = &BusinessIMListTypeInfo;
                        IMListPref = &BusinessIMListPref;       
                        break;
        }
@@ -1946,7 +1958,19 @@ void ContactDataObject::ProcessIM(wxString PropertySeg1, wxString PropertySeg2,
        
        }
                
-       IMList->insert(std::make_pair(*IMCount, PropertySeg2));
+       wxStringTokenizer IMPPSplitData(PropertySeg2, wxT(":"));
+               
+       if (IMPPSplitData.CountTokens() > 1){
+
+               IMListTypeInfo->insert(std::make_pair(*IMCount, IMPPSplitData.GetNextToken()));
+               IMList->insert(std::make_pair(*IMCount, IMPPSplitData.GetString()));
+       
+       } else {
+       
+               IMList->insert(std::make_pair(*IMCount, PropertySeg2));
+               IMListTypeInfo->insert(std::make_pair(*IMCount, "none"));
+       
+       }
        
        // Add the name token data.
        
@@ -2058,10 +2082,11 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                        TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));                                                           
                
                        int intTypeSeek = 0;
+                       bool TypeFound = FALSE;
                
                        for (std::map<int, int>::iterator typeiter = TypeSplitPoints.begin(); 
                        typeiter != TypeSplitPoints.end(); ++typeiter){
-                       
+                                               
                                wxString TypePropertyName;
                                
                                TSLiter = TypeSplitLength.find(typeiter->first);
@@ -2076,18 +2101,23 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                                        TelTypeUI.Append(wxT(","));                                                     
                                
                                }
-                       
-                               if (TypePropertyName == wxT("home")){
+
+                               if (TypePropertyName == wxT("home") && TypeFound == FALSE){
                                
                                        PropType = PROPERTY_HOME;
+                                       TelTypeUI.Append("home");
+                                       intTypeSeek++;
+                                       TypeFound = TRUE;
                                
-                               } else if (TypePropertyName == wxT("work")){
+                               } else if (TypePropertyName == wxT("work") && TypeFound == FALSE){
                                
                                        PropType = PROPERTY_WORK;
-                                                                       
+                                       TelTypeUI.Append("work");
+                                       intTypeSeek++;
+                                       TypeFound = TRUE;
+                                               
                                }
                                
-                               
                                if (TypePropertyName == wxT("text")){
                                
                                        TelTypeUI.Append(_("text"));
@@ -2105,7 +2135,7 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                                
                                } else if (TypePropertyName == wxT("cell")){
                                
-                                       TelTypeUI.Append(_("mobile"));
+                                       TelTypeUI.Append(_("cell"));
                                        intTypeSeek++;
                                
                                } else if (TypePropertyName == wxT("video")){
@@ -2136,7 +2166,8 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
        std::map<int, wxString> *TelephoneListAltID = NULL;
        std::map<int, wxString> *TelephoneListPID = NULL;
        std::map<int, wxString> *TelephoneListTokens = NULL;
-       std::map<int, wxString> *TelephoneListTypeInfo = NULL;  
+       std::map<int, wxString> *TelephoneListTypeInfo = NULL;
+       std::map<int, wxString> *TelephoneListDataType = NULL;
        std::map<int, int> *TelephoneListPref = NULL;
 
        switch(PropType){
@@ -2147,6 +2178,7 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                        TelephoneListPID = &GeneralTelephoneListPID;
                        TelephoneListTokens = &GeneralTelephoneListTokens;
                        TelephoneListTypeInfo = &GeneralTelephoneListTypeInfo;
+                       TelephoneListDataType = &GeneralTelephoneListDataType;
                        TelephoneListPref = &GeneralTelephoneListPref;  
                        break;
                case PROPERTY_HOME:
@@ -2155,7 +2187,8 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                        TelephoneListAltID = &HomeTelephoneListAltID;
                        TelephoneListPID = &HomeTelephoneListPID;
                        TelephoneListTokens = &HomeTelephoneListTokens;
-                       TelephoneListTypeInfo = &HomeTelephoneListTypeInfo;     
+                       TelephoneListTypeInfo = &HomeTelephoneListTypeInfo;
+                       TelephoneListDataType = &HomeTelephoneListDataType;
                        TelephoneListPref = &HomeTelephoneListPref;     
                        break;
                case PROPERTY_WORK:
@@ -2164,7 +2197,8 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
                        TelephoneListAltID = &BusinessTelephoneListAltID;
                        TelephoneListPID = &BusinessTelephoneListPID;
                        TelephoneListTokens = &BusinessTelephoneListTokens;     
-                       TelephoneListTypeInfo = &BusinessTelephoneListTypeInfo; 
+                       TelephoneListTypeInfo = &BusinessTelephoneListTypeInfo;
+                       TelephoneListDataType = &BusinessTelephoneListDataType;
                        TelephoneListPref = &BusinessTelephoneListPref; 
                        break;
        }
@@ -2210,9 +2244,24 @@ void ContactDataObject::ProcessTelephone(wxString PropertySeg1, wxString Propert
        
        }
                
-       TelephoneList->insert(std::make_pair(*TelephoneCount, PropertySeg2));
-       TelephoneListTypeInfo->insert(std::make_pair(*TelephoneCount, TelTypeUI));
+       // Check for the type information and split it down.
+       
+       wxStringTokenizer TelSplitData(PropertySeg2, wxT(":"));
+               
+       if (TelSplitData.CountTokens() > 1){
+
+               TelephoneListDataType->insert(std::make_pair(*TelephoneCount, TelSplitData.GetNextToken()));                    
+               TelephoneList->insert(std::make_pair(*TelephoneCount, TelSplitData.GetString()));
+       
+       } else {
        
+               TelephoneList->insert(std::make_pair(*TelephoneCount, PropertySeg2));
+               TelephoneListDataType->insert(std::make_pair(*TelephoneCount, "tel"));
+       
+       }
+               
+       TelephoneListTypeInfo->insert(std::make_pair(*TelephoneCount, TelTypeUI));
+               
        // Add the name token data.
        
        if (!PropertyTokens.IsEmpty()){
@@ -2346,6 +2395,7 @@ void ContactDataObject::ProcessGeographic(wxString PropertySeg1, wxString Proper
        std::map<int, wxString> *GeopositionListPID = NULL;
        std::map<int, wxString> *GeopositionListTokens = NULL;
        std::map<int, wxString> *GeopositionListMediatype = NULL;
+       std::map<int, wxString> *GeopositionListDataType = NULL;
        std::map<int, int> *GeopositionListPref = NULL;
 
        switch(PropType){
@@ -2356,6 +2406,7 @@ void ContactDataObject::ProcessGeographic(wxString PropertySeg1, wxString Proper
                        GeopositionListPID = &GeneralGeographyListPID;
                        GeopositionListTokens = &GeneralGeographyListTokens;
                        GeopositionListMediatype = &GeneralGeographyListMediatype;
+                       GeopositionListDataType = &GeneralGeographyListDataType;
                        GeopositionListPref = &GeneralGeographyListPref;        
                        break;
                case PROPERTY_HOME:
@@ -2365,6 +2416,7 @@ void ContactDataObject::ProcessGeographic(wxString PropertySeg1, wxString Proper
                        GeopositionListPID = &HomeGeographyListPID;
                        GeopositionListTokens = &HomeGeographyListTokens;
                        GeopositionListMediatype = &HomeGeographyListMediatype;
+                       GeopositionListDataType = &HomeGeographyListDataType;
                        GeopositionListPref = &HomeGeographyListPref;   
                        break;
                case PROPERTY_WORK:
@@ -2373,7 +2425,8 @@ void ContactDataObject::ProcessGeographic(wxString PropertySeg1, wxString Proper
                        GeopositionListAltID = &BusinessGeographyListAltID;
                        GeopositionListPID = &BusinessGeographyListPID;
                        GeopositionListTokens = &BusinessGeographyListTokens;
-                       GeopositionListMediatype = &BusinessGeographyListMediatype;     
+                       GeopositionListMediatype = &BusinessGeographyListMediatype;
+                       GeopositionListDataType = &BusinessGeographyListDataType;
                        GeopositionListPref = &BusinessGeographyListPref;
                        break;
        }
@@ -2415,9 +2468,21 @@ void ContactDataObject::ProcessGeographic(wxString PropertySeg1, wxString Proper
                ProcessTokens(&PropertyName, &PropertyValue, &PropertyTokens, &FirstToken);
        
        }
+       
+       wxStringTokenizer GeoSplitData(PropertySeg2, wxT(":"));
                
-       GeopositionList->insert(std::make_pair(*GeographicCount, PropertySeg2));
+       if (GeoSplitData.CountTokens() > 1){
+
+               GeopositionListDataType->insert(std::make_pair(*GeographicCount, GeoSplitData.GetNextToken()));                 
+               GeopositionList->insert(std::make_pair(*GeographicCount, GeoSplitData.GetString()));
        
+       } else {
+       
+               GeopositionList->insert(std::make_pair(*GeographicCount, PropertySeg2));
+               GeopositionListDataType->insert(std::make_pair(*GeographicCount, "tel"));
+       
+       }
+               
        // Add the name token data.
        
        if (!PropertyTokens.IsEmpty()){
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