X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcontacteditor%2FfrmContactEditor-Save.cpp;h=693c14b79b8491e57e14812c0a904b1472e747d1;hb=04a1ebb415bc0291b376d649d0d1ff680f4c6c7c;hp=65e8715070de1012306ca79c33ddfcd8f8521569;hpb=26b853894b15e5036250287955e9cc890962538e;p=xestiaab%2F.git diff --git a/source/contacteditor/frmContactEditor-Save.cpp b/source/contacteditor/frmContactEditor-Save.cpp index 65e8715..693c14b 100644 --- a/source/contacteditor/frmContactEditor-Save.cpp +++ b/source/contacteditor/frmContactEditor-Save.cpp @@ -154,8 +154,6 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) // Begin preperations to write the contact to a file. - bool boolValue = FALSE; - bool boolValue2 = FALSE; bool FNFirst = TRUE; bool NNGeneralFirst = TRUE; bool NNHomeFirst = TRUE; @@ -175,6 +173,87 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) ContactData.Add(wxT("PRODID"), strValue, FALSE); + // Process the REV property. + + wxDateTime DateTimeSave; + DateTimeSave = DateTimeSave.SetToCurrent(); + wxString DateTimeSaveValue; + + DateTimeSaveValue += wxString::Format("%04i", DateTimeSave.GetYear()); + DateTimeSaveValue += wxString::Format("%02i", (DateTimeSave.GetMonth() + 1)); + DateTimeSaveValue += wxString::Format("%02i", DateTimeSave.GetDay()); + DateTimeSaveValue += "T"; + DateTimeSaveValue += wxString::Format("%02i", DateTimeSave.GetHour()); + DateTimeSaveValue += wxString::Format("%02i", DateTimeSave.GetMinute()); + DateTimeSaveValue += wxString::Format("%02i", DateTimeSave.GetSecond()); + + if (!ContactEditorData.RevisionTokens.IsEmpty()){ + ContactData.AddRaw("REV;" + ContactEditorData.RevisionTokens, DateTimeSaveValue); + } else { + ContactData.AddRaw("REV", DateTimeSaveValue); + } + // Process the XML properties. + + for (std::map::iterator iter = ContactEditorData.XMLList.begin(); + iter != ContactEditorData.XMLList.end(); ++iter){ + + wxString strOrigValue; + + strOrigValue = ContactEditorData.XMLList.find(iter->first)->second; + + ResetUnusedString(&strOrigValue); + + ProcessSaveData(wxT("XML"), &strValue2, &boolValue2, &boolValue, + &iter, &strOrigValue, &ContactData, + wxT("ALTID"), &ContactEditorData.XMLListAltID ); + + ResetSaveProcessData(); + + } + + // Process the CLIENTPIDMAP properties. + + for (std::map::iterator iter = ContactEditorData.ClientPIDList.begin(); + iter != ContactEditorData.ClientPIDList.end(); ++iter){ + + wxString strOrigValue; + + strOrigValue = ContactEditorData.ClientPIDList.find(iter->first)->second; + + ResetUnusedString(&strOrigValue); + + ProcessSaveData(wxT("CLIENTPIDMAP"), &strValue2, &boolValue2, &boolValue, + &iter, &strOrigValue, &ContactData, + wxT(""), &ContactEditorData.ClientPIDListTokens ); + + ResetSaveProcessData(); + + } + + // Process the SOURCE properties. + + for (std::map::iterator iter = ContactEditorData.SourceList.begin(); + iter != ContactEditorData.SourceList.end(); ++iter){ + + wxString strOrigValue; + + strOrigValue = ContactEditorData.SourceList.find(iter->first)->second; + + ResetUnusedString(&strOrigValue); + + ProcessSaveData(wxT("SOURCE"), &strValue2, &boolValue2, &boolValue, + &iter, &strOrigValue, &ContactData, + wxT("ALTID"), &ContactEditorData.SourceListAltID, + wxT("PID"), &ContactEditorData.SourceListPID, + wxT("TYPE"), &ContactEditorData.SourceListType, + wxT("PREF"), &ContactEditorData.SourceListPref, + wxT("MEDIATYPE"), &ContactEditorData.SourceListMediatype, + wxT(""), &ContactEditorData.SourceListTokens ); + + ResetSaveProcessData(); + + } + // Setup the name. strValue.Clear(); @@ -308,91 +387,89 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) } - strValue.Clear(); - strValue2.Clear(); - strValue3.Clear(); + ResetSaveProcessData(); - boolValue = FALSE; - boolValue2 = FALSE; - intValue2 = 0; - intValue = 0; + // Build the values for the BDAY property. + + // ALTID + + if (!ContactEditorData.BirthdayAltID.IsEmpty()){ - // Process Label. + wxString DataValue; + DataValue = ContactEditorData.BirthdayAltID; - strValue3 = ContactEditorData.BirthdayAltID; + EscapeString(&DataValue, FALSE); + + strValue3.Append("ALTID="); + strValue3.Append(DataValue); + + boolValue2 = TRUE; - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - boolValue2 = TRUE; - strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\"")); - - boolValue = TRUE; - } - //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); - //strValue2 = + // CALSCALE. - // Process Language. + if (!ContactEditorData.BirthdayCalScale.IsEmpty()){ - strValue3 = ContactEditorData.BirthdayCalScale; + wxString DataValue; + DataValue = ContactEditorData.BirthdayCalScale; - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("CALSCALE=") + strValue3); - - boolValue = TRUE; - - } + EscapeString(&DataValue, FALSE); - // Process Tokens. + if (boolValue2 == TRUE){ + + strValue3.Append(";"); + + } + + strValue3.Append("CALSCALE="); + strValue3.Append(DataValue); + + boolValue2 = TRUE; - strValue2 = ContactEditorData.BirthdayTokens; + } - // Get the birthday and write it. + // Extra tokens. - ResetSaveProcessData(); + if (!ContactEditorData.BirthdayTokens.IsEmpty()){ + wxString DataValue; + DataValue = ContactEditorData.BirthdayTokens; + + EscapeString(&DataValue, FALSE); + + if (boolValue2 == TRUE){ + + strValue3.Append(";"); + + } + + strValue3.Append(DataValue); + + } + + // Write the BDAY property. + if (!txtBirthday->IsEmpty()){ - - strValue = txtBirthday->GetValue(); - - if (!strValue.IsEmpty() || !strValue2.IsEmpty()){ - - if (!strValue2.IsEmpty()){ - - EscapeString(&strValue2, FALSE); - EscapeString(&strValue, FALSE); - - ContactData.AddRaw(wxT("BDAY;VALUE=text;") + strValue2 + wxT(";"), strValue); - - } else { - - EscapeString(&strValue, FALSE); - - ContactData.AddRaw(wxT("BDAY;VALUE=text"), strValue); - - } - - } - + + if (!txtBirthday->GetValue().IsEmpty()){ + + strValue = txtBirthday->GetValue(); + + if (!strValue3.IsEmpty()){ + + ContactData.AddRaw("BDAY;VALUE=text;" + strValue3, strValue); + + } else { + + ContactData.AddRaw("BDAY;VALUE=text", strValue); + + } + + } + } else { - + // Deal with date. // Get Day, Month & Year. @@ -480,14 +557,14 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) } - if (!FinalBirthdayString.IsEmpty() || !strValue2.IsEmpty()){ + if (!FinalBirthdayString.IsEmpty() || !strValue3.IsEmpty()){ - if (!strValue2.IsEmpty()){ + if (!strValue3.IsEmpty()){ EscapeString(&strValue2, FALSE); EscapeString(&strValue, FALSE); - ContactData.AddRaw(wxT("BDAY") + strValue2 + wxT(";"), FinalBirthdayString); + ContactData.AddRaw(wxT("BDAY;") + strValue3, FinalBirthdayString); } else { @@ -500,85 +577,92 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) } } - + } ResetSaveProcessData(); - // Process Label. + // Build the values for the ANNIVERSARY property. + + // ALTID + + if (!ContactEditorData.AnniversaryAltID.IsEmpty()){ - strValue3 = ContactEditorData.AnniversaryAltID; + wxString DataValue; + DataValue = ContactEditorData.AnniversaryAltID; + + EscapeString(&DataValue, FALSE); + + strValue3.Append("ALTID="); + strValue3.Append(DataValue); + + boolValue2 = TRUE; - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - boolValue2 = TRUE; - strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\"")); - - boolValue = TRUE; - } - //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); - //strValue2 = + // CALSCALE. - // Process Language. + if (!ContactEditorData.AnniversaryCalScale.IsEmpty()){ - strValue3 = ContactEditorData.AnniversaryCalScale; + wxString DataValue; + DataValue = ContactEditorData.AnniversaryCalScale; + + EscapeString(&DataValue, FALSE); + + if (boolValue2 == TRUE){ + + strValue3.Append(";"); + + } + + strValue3.Append("CALSCALE="); + strValue3.Append(DataValue); + + boolValue2 = TRUE; - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("CALSCALE=") + strValue3); - - boolValue = TRUE; - } - // Process Tokens. + // Extra tokens. + + if (!ContactEditorData.AnniversaryTokens.IsEmpty()){ + + wxString DataValue; + DataValue = ContactEditorData.AnniversaryTokens; + + EscapeString(&DataValue, FALSE); + + if (boolValue2 == TRUE){ + + strValue3.Append(";"); + + } + + strValue3.Append(DataValue); - strValue2 = ContactEditorData.AnniversaryTokens; + } - // Deal with ANNIVERSARY. + // Write the ANNIVERSARY property. if (!txtAnniversary->IsEmpty()){ - - strValue = txtAnniversary->GetValue(); - - if (!strValue.IsEmpty() || !strValue2.IsEmpty()){ - - if (!strValue2.IsEmpty()){ - - EscapeString(&strValue2, FALSE); - EscapeString(&strValue, FALSE); - - ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text;") + strValue2 + wxT(";"), strValue); - - } else { - - EscapeString(&strValue, FALSE); - - ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text"), strValue); - - } - - } - + + if (!txtAnniversary->GetValue().IsEmpty()){ + + strValue = txtAnniversary->GetValue(); + + if (!strValue3.IsEmpty()){ + + ContactData.AddRaw("ANNIVERSARY;VALUE=text;" + strValue3, strValue); + + } else { + + ContactData.AddRaw("ANNIVERSARY;VALUE=text", strValue); + + } + + } + } else { - + // Look for T and replace data before this. // Get Day, Month & Year. @@ -666,14 +750,14 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) } - if (!FinalAnniversaryString.IsEmpty() || !strValue2.IsEmpty()){ + if (!FinalAnniversaryString.IsEmpty() || !strValue3.IsEmpty()){ - if (!strValue2.IsEmpty()){ + if (!strValue3.IsEmpty()){ EscapeString(&strValue2, FALSE); EscapeString(&strValue, FALSE); - ContactData.AddRaw(wxT("ANNIVERSARY") + strValue2 + wxT(";"), FinalAnniversaryString); + ContactData.AddRaw(wxT("ANNIVERSARY;") + strValue3, FinalAnniversaryString); } else { @@ -1075,8 +1159,20 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) ProcessCaptureStrings(&strAddressFinalValue); - strAddressFinalValue.insert(0, wxT("tel:")); - + if (ContactEditorData.GeneralTelephoneListDataType.find(iter->first) != + ContactEditorData.GeneralTelephoneListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.GeneralTelephoneListDataType.find(iter->first); + + strAddressFinalValue.insert(0, ":"); + strAddressFinalValue.insert(0, DataTypeIter->second); + + } else { + + strAddressFinalValue.insert(0, "tel:"); + + } + ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, &iter, &strAddressFinalValue, &ContactData, wxT("ALTID"), &ContactEditorData.GeneralTelephoneListAltID, @@ -1098,7 +1194,19 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) ProcessCaptureStrings(&strAddressFinalValue); - strAddressFinalValue.insert(0, wxT("tel:")); + if (ContactEditorData.HomeTelephoneListDataType.find(iter->first) != + ContactEditorData.HomeTelephoneListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.HomeTelephoneListDataType.find(iter->first); + + strAddressFinalValue.insert(0, ":"); + strAddressFinalValue.insert(0, DataTypeIter->second); + + } else { + + strAddressFinalValue.insert(0, "tel:"); + + } ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, &iter, &strAddressFinalValue, &ContactData, @@ -1121,7 +1229,19 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) ProcessCaptureStrings(&strAddressFinalValue); - strAddressFinalValue.insert(0, wxT("tel:")); + if (ContactEditorData.BusinessTelephoneListDataType.find(iter->first) != + ContactEditorData.BusinessTelephoneListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.BusinessTelephoneListDataType.find(iter->first); + + strAddressFinalValue.insert(0, ":"); + strAddressFinalValue.insert(0, DataTypeIter->second); + + } else { + + strAddressFinalValue.insert(0, "tel:"); + + } ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, &iter, &strAddressFinalValue, &ContactData, @@ -1241,14 +1361,26 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) for (std::map::iterator iter = ContactEditorData.GeneralGeographyList.begin(); iter != ContactEditorData.GeneralGeographyList.end(); ++iter){ - wxString strAddressFinalValue = iter->second; + wxString strGeoFinalValue = iter->second; - ProcessCaptureStrings(&strAddressFinalValue); + ProcessCaptureStrings(&strGeoFinalValue); - strAddressFinalValue.insert(0, wxT("geo:")); + if (ContactEditorData.GeneralGeographyListDataType.find(iter->first) != + ContactEditorData.GeneralGeographyListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.GeneralGeographyListDataType.find(iter->first); + + strGeoFinalValue.insert(0, ":"); + strGeoFinalValue.insert(0, DataTypeIter->second); + + } else { + + strGeoFinalValue.insert(0, "geo:"); + + } ProcessSaveData(wxT("GEO"), &strValue2, &boolValue2, &boolValue, - &iter, &strAddressFinalValue, &ContactData, + &iter, &strGeoFinalValue, &ContactData, wxT("ALTID"), &ContactEditorData.GeneralGeographyListAltID, wxT("PID"), &ContactEditorData.GeneralGeographyListPID, wxT("MEDIATYPE"), &ContactEditorData.GeneralGeographyListMediatype, @@ -1264,14 +1396,26 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) for (std::map::iterator iter = ContactEditorData.HomeGeographyList.begin(); iter != ContactEditorData.HomeGeographyList.end(); ++iter){ - wxString strAddressFinalValue = iter->second; + wxString strGeoFinalValue = iter->second; - ProcessCaptureStrings(&strAddressFinalValue); + ProcessCaptureStrings(&strGeoFinalValue); - strAddressFinalValue.insert(0, wxT("geo:")); + if (ContactEditorData.HomeGeographyListDataType.find(iter->first) != + ContactEditorData.HomeGeographyListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.HomeGeographyListDataType.find(iter->first); + + strGeoFinalValue.insert(0, ":"); + strGeoFinalValue.insert(0, DataTypeIter->second); + + } else { + + strGeoFinalValue.insert(0, "geo:"); + + } ProcessSaveData(wxT("GEO;TYPE=home"), &strValue2, &boolValue2, &boolValue, - &iter, &ContactEditorData.HomeGeographyList, &ContactData, + &iter, &strGeoFinalValue, &ContactData, wxT("ALTID"), &ContactEditorData.HomeGeographyListAltID, wxT("PID"), &ContactEditorData.HomeGeographyListPID, wxT("MEDIATYPE"), &ContactEditorData.HomeGeographyListMediatype, @@ -1287,14 +1431,26 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) for (std::map::iterator iter = ContactEditorData.BusinessGeographyList.begin(); iter != ContactEditorData.BusinessGeographyList.end(); ++iter){ - wxString strAddressFinalValue = iter->second; + wxString strGeoFinalValue = iter->second; - ProcessCaptureStrings(&strAddressFinalValue); + ProcessCaptureStrings(&strGeoFinalValue); - strAddressFinalValue.insert(0, wxT("geo:")); + if (ContactEditorData.BusinessGeographyListDataType.find(iter->first) != + ContactEditorData.BusinessGeographyListDataType.end()){ + + std::map::iterator DataTypeIter = ContactEditorData.BusinessGeographyListDataType.find(iter->first); + + strGeoFinalValue.insert(0, ":"); + strGeoFinalValue.insert(0, DataTypeIter->second); + + } else { + + strGeoFinalValue.insert(0, "geo:"); + + } ProcessSaveData(wxT("GEO;TYPE=work"), &strValue2, &boolValue2, &boolValue, - &iter, &ContactEditorData.BusinessGeographyList, &ContactData, + &iter, &strGeoFinalValue, &ContactData, wxT("ALTID"), &ContactEditorData.BusinessGeographyListAltID, wxT("PID"), &ContactEditorData.BusinessGeographyListPID, wxT("MEDIATYPE"), &ContactEditorData.BusinessGeographyListMediatype, @@ -1738,157 +1894,7 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) iter != ContactEditorData.KeyList.end(); ++iter){ intValue2 = iter->first; - - // Process Alternative ID. - - striter = ContactEditorData.KeyListAltID.find(intValue2); - - if (striter->first == intValue2){ - - strValue3 = striter->second; - - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("ALTID=") + strValue3); - - boolValue = TRUE; - - } - - } - - // Process PID. - - striter = ContactEditorData.KeyListPID.find(intValue2); - - if (striter->first == intValue2){ - - strValue3 = striter->second; - - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("PID=") + strValue3); - - boolValue = TRUE; - - } - - } - - // Process Type. - - striter = ContactEditorData.KeyListType.find(intValue2); - - if (striter->first == intValue2){ - - strValue3 = striter->second; - - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("TYPE=") + strValue3); - - boolValue = TRUE; - - } - - } - - intiter = ContactEditorData.KeyListPref.find(intValue2); - - if (intiter->first == intValue2){ - - intValue3 = intiter->second; - - if (intValue3){ - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(wxT("PREF=") + wxString::Format(wxT("%i"), intValue3)); - - boolValue = TRUE; - - } - - } - - // Process Tokens. - - striter = ContactEditorData.KeyListTokens.find(intValue2); - - if (striter->first == intValue2){ - - strValue3 = striter->second; - - if (!strValue3.IsEmpty()){ - - strValue3.Trim(); - strValue3.Trim(); - - if (boolValue2 == TRUE){ - - strValue2.Append(wxT(";")); - - } else { - - boolValue2 = TRUE; - - } - - strValue2.Append(strValue3); - - boolValue = TRUE; - - } - - } - + // Get the key information. std::map::iterator enciter; @@ -1899,23 +1905,17 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) wxString strValueData; strValueData = iter->second; - //strValueData.insert(0, wxT("data:") + striter->second + wxT(";") + enciter->second + wxT(",")); - strValueData.insert(0, wxT("data:") + striter->second + wxT(";base64,")); - - - // Add to the vCard. - - if (boolValue == TRUE){ - - ContactData.AddRaw(wxT("KEY;") + strValue2, strValueData); - - } else { - - ContactData.Add(wxT("KEY"), strValueData, TRUE); - - } + strValueData.insert(0, wxT("data:") + striter->second + wxT(";base64,")); + + ProcessSaveData(wxT("KEY"), &strValue2, &boolValue2, &boolValue, + &iter, &strValueData, &ContactData, + wxT("ALTID"), &ContactEditorData.KeyListAltID, + wxT("PID"), &ContactEditorData.KeyListPID, + wxT("TYPE"), &ContactEditorData.KeyListType, + wxT("PREF"), &ContactEditorData.KeyListPref, + wxT(""), &ContactEditorData.KeyListTokens ); - ResetSaveProcessData(); + ResetSaveProcessData(); }