X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcontacteditor%2Fcdo%2FContactDataObject-Save.cpp;h=9e3db13f9523c27c6978153995b10c1d11bea76f;hb=316e255b6797f8b7a63ccd62e50e39cfcc474c11;hp=642ea5cab739e9e2088290786f9e752305d292c8;hpb=eb3920b819b84e8a61cd21f302026379b4480a2b;p=xestiaab%2F.git diff --git a/source/contacteditor/cdo/ContactDataObject-Save.cpp b/source/contacteditor/cdo/ContactDataObject-Save.cpp index 642ea5c..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; @@ -79,7 +108,54 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ } - // TODO: Sortout REV. + // Process REV. + + wxDateTime DateTimeSave; + DateTimeSave = DateTimeSave.SetToCurrent(); + wxString DateTimeSaveValue; + +#ifdef XAB_UNITTEST + + DateTimeSaveValue += "20160703T091000Z"; + +#else + + 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()); + DateTimeSaveValue += "Z"; + +#endif + + if (!RevisionTokens.IsEmpty()){ + + ProcessData.Append("REV;"); + ProcessData.Append(RevisionTokens); + ProcessData.Append(":"); + ProcessData.Append(DateTimeSaveValue); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } else { + + ProcessData.Append("REV:"); + ProcessData.Append(DateTimeSaveValue); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } // Process XML. @@ -113,6 +189,17 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ &SourceListMediatype, &SourceListPref, &SourceListTokens, SaveData); + // Process MEMBER (if contact kind is CONTACTKIND_GROUP). + + if (ContactKind == CONTACTKIND_GROUP){ + + SaveMember(&GroupsList, &GroupsListAltID, + &GroupsListPID, &GroupsListType, + &GroupsListMediaType, &GroupsListPref, + &GroupsListTokens, SaveData); + + } + // Process CLIENTPIDMAP. for (std::map::iterator CPIDIter = ClientPIDList.begin(); @@ -210,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, @@ -225,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, @@ -297,10 +568,42 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ &BusinessEmailListPref, &BusinessEmailListTokens, SaveData, "work"); - // TODO: Process IMPP. + // Process IMPP. - // TODO: Process TEL. + SaveIMPP(&GeneralIMList, &GeneralIMListAltID, + &GeneralIMListPID, &GeneralIMListType, + &GeneralIMListTypeInfo, &GeneralIMListMediatype, + &GeneralIMListPref, &GeneralIMListTokens, + SaveData, ""); + SaveIMPP(&HomeIMList, &HomeIMListAltID, + &HomeIMListPID, &HomeIMListType, + &HomeIMListTypeInfo, &HomeIMListMediatype, + &HomeIMListPref, &HomeIMListTokens, + SaveData, "home"); + SaveIMPP(&BusinessIMList, &BusinessIMListAltID, + &BusinessIMListPID, &BusinessIMListType, + &BusinessIMListTypeInfo, &BusinessIMListMediatype, + &BusinessIMListPref, &BusinessIMListTokens, + SaveData, "work"); + + // 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, @@ -598,6 +901,38 @@ ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){ &CalendarListAltID, &CalendarListPID, &CalendarListType, &CalendarListPref, &CalendarListTokens, SaveData); + + // Process CALADRURI. + + SaveCalendarRequestURI(&CalendarRequestList, &CalendarRequestListMediatype, + &CalendarRequestListAltID, &CalendarRequestListPID, + &CalendarRequestListType, &CalendarRequestListPref, + &CalendarRequestListTokens, SaveData); + + // Process FBURL. + + SaveFreeBusyURI(&FreeBusyList, &FreeBusyListAltID, + &FreeBusyListPID, &FreeBusyListType, + &FreeBusyListMediatype, &FreeBusyListPref, + &FreeBusyListTokens, SaveData); + + // Process KEY. + + SaveKey(&KeyList, &KeyListAltID, + &KeyListPID, &KeyListType, + &KeyListKeyType, &KeyListDataEncType, + &KeyListDataType, &KeyListPref, + &KeyListTokens, SaveData); + + // Process VND-* + + SaveVendor(&VendorList, &VendorListPEN, + &VendorListElement, SaveData); + + // Process X-Tokens. + + SaveXToken(&XTokenList, &XTokenListTokens, + SaveData); // Write the end part of the vCard data file. @@ -767,6 +1102,85 @@ void ContactDataObject::SaveSource(map *SourceList, map *GroupsList, std::map *GroupsListAltID, + std::map *GroupsListPID, std::map *GroupsListType, + std::map *GroupsListMediaType, std::map *GroupsListPref, + std::map *GroupsListTokens, wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator GroupsIter = GroupsList->begin(); + GroupsIter != GroupsList->end(); GroupsIter++){ + + ProcessData.Append("MEMBER"); + + // Check if there is a value for TYPE. + + if ((*GroupsListType)[GroupsIter->first].size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append((*GroupsListType)[GroupsIter->first]); + + } + + // Check if there is a value for ALTID. + + if ((*GroupsListAltID)[GroupsIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*GroupsListAltID)[GroupsIter->first]); + + } + + // Check if there is a value for MEDIATYPE. + + if ((*GroupsListMediaType)[GroupsIter->first].size() > 0){ + + ProcessData.Append(";MEDIATYPE="); + ProcessData.Append((*GroupsListMediaType)[GroupsIter->first]); + + } + + // Check if there is a value for PID. + + if ((*GroupsListPID)[GroupsIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*GroupsListPID)[GroupsIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*GroupsListPref)[GroupsIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*GroupsListPref)[GroupsIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*GroupsListTokens)[GroupsIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*GroupsListTokens)[GroupsIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append(GroupsIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + void ContactDataObject::SaveNickname(map *NicknameList, map *NicknameListAltID, map *NicknameListPID, map *NicknameListType, map *NicknameListLanguage, map *NicknameListPref, @@ -1036,89 +1450,263 @@ void ContactDataObject::SaveAddress(map *AddressList, mapfirst]); } - - // Build the address. - - ProcessData.Append(":;;"); - ProcessData.Append((*AddressList)[AddressIter->first]); - ProcessData.Append(";"); - ProcessData.Append((*AddressListTown)[AddressIter->first]); - ProcessData.Append(";"); - ProcessData.Append((*AddressListCounty)[AddressIter->first]); - ProcessData.Append(";"); - ProcessData.Append((*AddressListPostCode)[AddressIter->first]); - ProcessData.Append(";"); - ProcessData.Append((*AddressListCountry)[AddressIter->first]); + + // Build the address. + + ProcessData.Append(":;;"); + ProcessData.Append((*AddressList)[AddressIter->first]); + ProcessData.Append(";"); + ProcessData.Append((*AddressListTown)[AddressIter->first]); + ProcessData.Append(";"); + ProcessData.Append((*AddressListCounty)[AddressIter->first]); + ProcessData.Append(";"); + ProcessData.Append((*AddressListPostCode)[AddressIter->first]); + ProcessData.Append(";"); + ProcessData.Append((*AddressListCountry)[AddressIter->first]); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveEmail(map *EmailList, map *EmailListAltID, + map *EmailListPID, map *EmailListType, + map *EmailListPref, map *EmailListTokens, + wxString *SaveData, wxString DataType){ + + wxString ProcessData = ""; + + for (std::map::iterator EmailIter = EmailList->begin(); + EmailIter != EmailList->end(); EmailIter++){ + + ProcessData.Append("EMAIL"); + + // Check if there is a value for TYPE. + + if (DataType.size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append(DataType); + + } + + // Check if there is a value for ALTID. + + if ((*EmailListAltID)[EmailIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*EmailListAltID)[EmailIter->first]); + + } + + // Check if there is a value for PID. + + if ((*EmailListPID)[EmailIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*EmailListPID)[EmailIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*EmailListPref)[EmailIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*EmailListPref)[EmailIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*EmailListTokens)[EmailIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*EmailListTokens)[EmailIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append(EmailIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveIMPP(map *IMList, map *IMListAltID, + map *IMListPID, map *IMListType, + map *IMListTypeInfo, map *IMListMediatype, + map *IMListPref, map *IMListTokens, + wxString *SaveData, wxString DataType){ + + wxString ProcessData = ""; + + for (std::map::iterator IMIter = IMList->begin(); + IMIter != IMList->end(); IMIter++){ + + ProcessData.Append("IMPP"); + + // Check if there is a value for TYPE. + + if (DataType.size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append(DataType); + + } + + // Check if there is a value for ALTID. + + if ((*IMListAltID)[IMIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*IMListAltID)[IMIter->first]); + + } + + // Check if there is a value for MEDIATYPE. + + if ((*IMListMediatype)[IMIter->first].size() > 0){ + + ProcessData.Append(";MEDIATYPE="); + ProcessData.Append((*IMListMediatype)[IMIter->first]); + + } + + // Check if there is a value for PID. + + if ((*IMListPID)[IMIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*IMListPID)[IMIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*IMListPref)[IMIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*IMListPref)[IMIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*IMListTokens)[IMIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*IMListTokens)[IMIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append((*IMListTypeInfo)[IMIter->first]); + ProcessData.Append(":"); + ProcessData.Append(IMIter->second); ProcessData.Append("\n"); - + ProcessData = OutputText(&ProcessData); SaveData->Append(ProcessData); ProcessData.clear(); } - + } -void ContactDataObject::SaveEmail(map *EmailList, map *EmailListAltID, - map *EmailListPID, map *EmailListType, - map *EmailListPref, map *EmailListTokens, +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 EmailIter = EmailList->begin(); - EmailIter != EmailList->end(); EmailIter++){ + for (std::map::iterator TelephoneIter = TelephoneList->begin(); + TelephoneIter != TelephoneList->end(); TelephoneIter++){ - ProcessData.Append("EMAIL"); + 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){ - if (DataType.size() > 0){ - - ProcessData.Append(";TYPE="); - ProcessData.Append(DataType); + 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 ((*EmailListAltID)[EmailIter->first].size() > 0){ + if ((*TelephoneListAltID)[TelephoneIter->first].size() > 0){ ProcessData.Append(";ALTID="); - ProcessData.Append((*EmailListAltID)[EmailIter->first]); + ProcessData.Append((*TelephoneListAltID)[TelephoneIter->first]); } // Check if there is a value for PID. - if ((*EmailListPID)[EmailIter->first].size() > 0){ + if ((*TelephoneListPID)[TelephoneIter->first].size() > 0){ ProcessData.Append(";PID="); - ProcessData.Append((*EmailListPID)[EmailIter->first]); + ProcessData.Append((*TelephoneListPID)[TelephoneIter->first]); } // Check if there is a value for PREF. - if ((*EmailListPref)[EmailIter->first] > 0){ + if ((*TelephoneListPref)[TelephoneIter->first] > 0){ ProcessData.Append(";PREF="); - ProcessData.Append(wxString::Format("%i", (*EmailListPref)[EmailIter->first])); + ProcessData.Append(wxString::Format("%i", (*TelephoneListPref)[TelephoneIter->first])); } // Check if there is a value for tokens. - if ((*EmailListTokens)[EmailIter->first].size() > 0){ + if ((*TelephoneListTokens)[TelephoneIter->first].size() > 0){ ProcessData.Append(";"); - ProcessData.Append((*EmailListTokens)[EmailIter->first]); + ProcessData.Append((*TelephoneListTokens)[TelephoneIter->first]); } - + ProcessData.Append(":"); - ProcessData.Append(EmailIter->second); + ProcessData.Append((*TelephoneListDataType)[TelephoneIter->first]); + ProcessData.Append(":"); + ProcessData.Append(TelephoneIter->second); ProcessData.Append("\n"); ProcessData = OutputText(&ProcessData); @@ -2028,4 +2616,285 @@ void ContactDataObject::SaveCalendarURI(map *CalendarList, map *CalendarRequestList, map *CalendarRequestListMediatype, + map *CalendarRequestListAltID, map *CalendarRequestListPID, + map *CalendarRequestListType, map *CalendarRequestListPref, + map *CalendarRequestListTokens, wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator CalendarRequestIter = CalendarRequestList->begin(); + CalendarRequestIter != CalendarRequestList->end(); CalendarRequestIter++){ + + ProcessData.Append("CALADRURI"); + + // Check if there is a value for TYPE. + + if ((*CalendarRequestListType)[CalendarRequestIter->first].size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append((*CalendarRequestListType)[CalendarRequestIter->first]); + + } + + // Check if there is a value for ALTID. + + if ((*CalendarRequestListAltID)[CalendarRequestIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*CalendarRequestListAltID)[CalendarRequestIter->first]); + + } + + // Check if there is a value for MEDIATYPE. + + if ((*CalendarRequestListMediatype)[CalendarRequestIter->first].size() > 0){ + + ProcessData.Append(";MEDIATYPE="); + ProcessData.Append((*CalendarRequestListMediatype)[CalendarRequestIter->first]); + + } + + // Check if there is a value for PID. + + if ((*CalendarRequestListPID)[CalendarRequestIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*CalendarRequestListPID)[CalendarRequestIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*CalendarRequestListPref)[CalendarRequestIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*CalendarRequestListPref)[CalendarRequestIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*CalendarRequestListTokens)[CalendarRequestIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*CalendarRequestListTokens)[CalendarRequestIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append(CalendarRequestIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveFreeBusyURI(std::map *FreeBusyList, std::map *FreeBusyListAltID, + std::map *FreeBusyListPID, std::map *FreeBusyListType, + std::map *FreeBusyListMediatype, std::map *FreeBusyListPref, + std::map *FreeBusyListTokens, wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator FreeBusyIter = FreeBusyList->begin(); + FreeBusyIter != FreeBusyList->end(); FreeBusyIter++){ + + ProcessData.Append("FBURL"); + + // Check if there is a value for TYPE. + + if ((*FreeBusyListType)[FreeBusyIter->first].size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append((*FreeBusyListType)[FreeBusyIter->first]); + + } + + // Check if there is a value for ALTID. + + if ((*FreeBusyListAltID)[FreeBusyIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*FreeBusyListAltID)[FreeBusyIter->first]); + + } + + // Check if there is a value for MEDIATYPE. + + if ((*FreeBusyListMediatype)[FreeBusyIter->first].size() > 0){ + + ProcessData.Append(";MEDIATYPE="); + ProcessData.Append((*FreeBusyListMediatype)[FreeBusyIter->first]); + + } + + // Check if there is a value for PID. + + if ((*FreeBusyListPID)[FreeBusyIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*FreeBusyListPID)[FreeBusyIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*FreeBusyListPref)[FreeBusyIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*FreeBusyListPref)[FreeBusyIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*FreeBusyListTokens)[FreeBusyIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*FreeBusyListTokens)[FreeBusyIter->first]); + + } + + ProcessData.Append(":"); + ProcessData.Append(FreeBusyIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveKey(map *KeyList, map *KeyListAltID, + map *KeyListPID, map *KeyListType, + map *KeyListKeyType, map *KeyListDataEncType, + map *KeyListDataType, map *KeyListPref, + map *KeyListTokens, wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator KeyIter = KeyList->begin(); + KeyIter != KeyList->end(); KeyIter++){ + + ProcessData.Append("KEY"); + + // Check if there is a value for TYPE. + + if ((*KeyListType)[KeyIter->first].size() > 0){ + + ProcessData.Append(";TYPE="); + ProcessData.Append((*KeyListType)[KeyIter->first]); + + } + + // Check if there is a value for ALTID. + + if ((*KeyListAltID)[KeyIter->first].size() > 0){ + + ProcessData.Append(";ALTID="); + ProcessData.Append((*KeyListAltID)[KeyIter->first]); + + } + + // Check if there is a value for PID. + + if ((*KeyListPID)[KeyIter->first].size() > 0){ + + ProcessData.Append(";PID="); + ProcessData.Append((*KeyListPID)[KeyIter->first]); + + } + + // Check if there is a value for PREF. + + if ((*KeyListPref)[KeyIter->first] > 0){ + + ProcessData.Append(";PREF="); + ProcessData.Append(wxString::Format("%i", (*KeyListPref)[KeyIter->first])); + + } + + // Check if there is a value for tokens. + + if ((*KeyListTokens)[KeyIter->first].size() > 0){ + + ProcessData.Append(";"); + ProcessData.Append((*KeyListTokens)[KeyIter->first]); + + } + + ProcessData.Append(":data:"); + ProcessData.Append((*KeyListDataType)[KeyIter->first]); + ProcessData.Append(";"); + ProcessData.Append((*KeyListDataEncType)[KeyIter->first]); + ProcessData.Append(","); + ProcessData.Append(KeyIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveVendor(map *VendorList, map *VendorListPEN, + map *VendorListElement, wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator VendorIter = VendorList->begin(); + VendorIter != VendorList->end(); VendorIter++){ + + ProcessData.Append("VND-"); + ProcessData.Append((*VendorListPEN)[VendorIter->first]); + ProcessData.Append("-"); + ProcessData.Append((*VendorListElement)[VendorIter->first]); + ProcessData.Append(":"); + ProcessData.Append(VendorIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + +} + +void ContactDataObject::SaveXToken(map *XTokenList, map *XTokenListTokens, + wxString *SaveData){ + + wxString ProcessData = ""; + + for (std::map::iterator XTokenIter = XTokenList->begin(); + XTokenIter != XTokenList->end(); XTokenIter++){ + + ProcessData.Append("X-"); + ProcessData.Append((*XTokenListTokens)[XTokenIter->first]); + ProcessData.Append(":"); + ProcessData.Append(XTokenIter->second); + ProcessData.Append("\n"); + + ProcessData = OutputText(&ProcessData); + + SaveData->Append(ProcessData); + ProcessData.clear(); + + } + } \ No newline at end of file