X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcontacteditor%2Fcdo%2FContactDataObject-Save.cpp;h=9e3db13f9523c27c6978153995b10c1d11bea76f;hb=316e255b6797f8b7a63ccd62e50e39cfcc474c11;hp=59b67adec67e514c0fde83807125132b8cbdbf7b;hpb=5a8405c8cebb102a025510b3df0cb84f3e63b283;p=xestiaab%2F.git diff --git a/source/contacteditor/cdo/ContactDataObject-Save.cpp b/source/contacteditor/cdo/ContactDataObject-Save.cpp index 59b67ad..9e3db13 100644 --- a/source/contacteditor/cdo/ContactDataObject-Save.cpp +++ b/source/contacteditor/cdo/ContactDataObject-Save.cpp @@ -19,6 +19,35 @@ #include "ContactDataObject.h" #include "../../version.h" +ContactSaveStatus ContactDataObject::SaveFile(wxString SaveFilename){ + + // Get the data using SaveString. + + wxString SaveData = ""; + SaveString(&SaveData); + + // Open a file and try to write into it. + + wxFile ContactFile; + + if (!ContactFile.Open(SaveFilename, wxFile::write, wxS_DEFAULT)){ + + return CONTACTSAVE_FILEERROR; + + } + + if (ContactFile.Write(SaveData, wxConvUTF8) == false){ + + return CONTACTSAVE_WRITEERROR; + + } + + ContactFile.Close(); + + return CONTACTSAVE_OK; + +} + ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ ContactSaveStatus SaveDataStatus = CONTACTSAVE_UNITTESTFAIL; @@ -268,6 +297,70 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ } + // Process N. + + if (!NameTitle.IsEmpty() || !NameForename.IsEmpty() || !NameSurname.IsEmpty() || + !NameOtherNames.IsEmpty() || !NameSuffix.IsEmpty()){ + + ProcessData.Append("N"); + + // Check if there is a value for ALTID. + + if (NameAltID.size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append(NameAltID); + + } + + // Check if there is a value for LANGUAGE. + + if (NameLanguage.size() > 0){ + + ProcessData.Append(";LANGUAGE="); + ProcessData.Append(NameLanguage); + + } + + // Check if there is a value for SORT-AS. + + if (NameDisplayAs.size() > 0){ + + ProcessData.Append(";SORT-AS=\""); + ProcessData.Append(NameDisplayAs); + ProcessData.Append("\""); + + } + + // Check if there is a value for tokens. + + if (NameTokens.size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append(NameTokens); + + } + + ProcessData.Append(":"); + ProcessData.Append(NameSurname); + ProcessData.Append(";"); + ProcessData.Append(NameForename); + ProcessData.Append(";"); + ProcessData.Append(NameOtherNames); + ProcessData.Append(";"); + ProcessData.Append(NameTitle); + ProcessData.Append(";"); + ProcessData.Append(NameSuffix); + + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + // Process NICKNAME. SaveNickname(&GeneralNicknamesList, &GeneralNicknamesListAltID, @@ -283,6 +376,126 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ &BusinessNicknamesListLanguage, &BusinessNicknamesListPref, &BusinessNicknamesListTokens, SaveData, "work"); + // Process GENDER. + + if (Gender.size() > 0){ + + ProcessData.Append("GENDER"); + + if (GenderTokens.size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append(GenderTokens); + + } + + ProcessData.Append(":"); + ProcessData.Append(Gender); + + if (GenderDetails.size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append(GenderDetails); + + } + + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + + // Process BDAY. + + if (Birthday.size() > 0){ + + ProcessData.Append("BDAY"); + + // Check if there is a value for ALTID. + + if (BirthdayAltID.size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append(BirthdayAltID); + + } + + // Check if there is a value for CALSCALE. + + if (BirthdayAltID.size() > 0){ + + ProcessData.Append(";CALSCALE="); + ProcessData.Append(BirthdayCalScale); + + } + + // Check if there is a value for tokens. + + if (BirthdayTokens.size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append(BirthdayTokens); + + } + + ProcessData.Append(":"); + ProcessData.Append(Birthday); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + + // Process ANNIVERSARY. + + if (Anniversary.size() > 0){ + + ProcessData.Append("ANNIVERSARY"); + + // Check if there is a value for ALTID. + + if (AnniversaryAltID.size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append(AnniversaryAltID); + + } + + // Check if there is a value for CALSCALE. + + if (AnniversaryAltID.size() > 0){ + + ProcessData.Append(";CALSCALE="); + ProcessData.Append(AnniversaryCalScale); + + } + + // Check if there is a value for tokens. + + if (AnniversaryTokens.size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append(AnniversaryTokens); + + } + + ProcessData.Append(":"); + ProcessData.Append(Anniversary); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + // Process TITLE. SaveTitle(&GeneralTitleList, &GeneralTitleListLanguage, @@ -373,10 +586,24 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ &BusinessIMListPref, &BusinessIMListTokens, SaveData, "work"); - // TODO: Process TEL. - - + // Process TEL. + SaveTelephone(&GeneralTelephoneList, &GeneralTelephoneListAltID, + &GeneralTelephoneListPID, &GeneralTelephoneListType, + &GeneralTelephoneListTypeInfo, &GeneralTelephoneListDataType, + &GeneralTelephoneListPref, &GeneralTelephoneListTokens, + SaveData, ""); + SaveTelephone(&HomeTelephoneList, &HomeTelephoneListAltID, + &HomeTelephoneListPID, &HomeTelephoneListType, + &HomeTelephoneListTypeInfo, &HomeTelephoneListDataType, + &HomeTelephoneListPref, &HomeTelephoneListTokens, + SaveData, "home"); + SaveTelephone(&BusinessTelephoneList, &BusinessTelephoneListAltID, + &BusinessTelephoneListPID, &BusinessTelephoneListType, + &BusinessTelephoneListTypeInfo, &BusinessTelephoneListDataType, + &BusinessTelephoneListPref, &BusinessTelephoneListTokens, + SaveData, "work"); + // Process LANG. SaveLanguage(&GeneralLanguageList, &GeneralLanguageListAltID, @@ -1399,6 +1626,98 @@ void ContactDataObject::SaveIMPP(map *IMList, map } +void ContactDataObject::SaveTelephone(map *TelephoneList, map *TelephoneListAltID, + map *TelephoneListPID, map *TelephoneListType, + map *TelephoneListTypeInfo, map *TelephoneListDataType, + map *TelephoneListPref, map *TelephoneListTokens, + wxString *SaveData, wxString DataType){ + + wxString ProcessData = ""; + + for (std::map::iterator TelephoneIter = TelephoneList->begin(); + TelephoneIter != TelephoneList->end(); TelephoneIter++){ + + ProcessData.Append("TEL"); + + // Check if there is a value for TYPE. + + if (DataType.size() > 0 || (*TelephoneListAltID)[TelephoneIter->first].size() > 0){ + + ProcessData.Append(";TYPE=\""); + + bool ProcessedType = false; + + if (DataType.size() > 0){ + + ProcessData.Append(DataType); + ProcessedType = true; + + } + + if ((*TelephoneListAltID)[TelephoneIter->first].size() > 0){ + + if (ProcessedType == true){ + ProcessData.Append(","); + } + ProcessData.Append((*TelephoneListTypeInfo)[TelephoneIter->first]); + + } + + ProcessData.Append("\""); + + } + + // Check if there is a value for ALTID. + + if ((*TelephoneListAltID)[TelephoneIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*TelephoneListAltID)[TelephoneIter->first]); + + } + + // Check if there is a value for PID. + + if ((*TelephoneListPID)[TelephoneIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*TelephoneListPID)[TelephoneIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*TelephoneListPref)[TelephoneIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*TelephoneListPref)[TelephoneIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*TelephoneListTokens)[TelephoneIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*TelephoneListTokens)[TelephoneIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append((*TelephoneListDataType)[TelephoneIter->first]); + ProcessData.Append(":"); + ProcessData.Append(TelephoneIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + void ContactDataObject::SaveLanguage(map *LanguageList, map *LanguageListAltID, map *LanguageListPID, map *LanguageListType, map *LangaugeListPref, map *LanguageListTokens,