// ContactDataObject-Save.cpp - Client Data Object.
//
// (c) 2012-2016 Xestia Software Development.
//
// This file is part of Xestia Address Book.
//
// Xestia Address Book is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by the
// Free Software Foundation, version 3 of the license.
//
// Xestia Address Book is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with Xestia Address Book. If not, see
#include "ContactDataObject.h"
#include "../../version.h"
ContactSaveStatus ContactDataObject::SaveString(wxString *SaveData){
ContactSaveStatus SaveDataStatus = CONTACTSAVE_UNITTESTFAIL;
// Write the header for the vCard data file.
SaveData->Append("BEGIN:VCARD\n");
SaveData->Append("VERSION:4.0\n");
// Write the product ID.
#ifdef XAB_UNITTEST
SaveData->Append("PRODID:-//Xestia//Address Book Unit Testing//KW\n");
#else
SaveData->Append(wxT("PRODID:-//Xestia//Address Book Version "));
SaveData->Append(wxT(XSDAB_VERSION));
SaveData->Append(wxT("//KW\n"));
#endif
wxString ProcessData = "";
// Process UID.
if (UIDToken.size() > 0){
ProcessData.Append("UID:");
ProcessData.Append(UIDToken);
ProcessData.Append("\n");
SaveData->Append(ProcessData);
ProcessData.clear();
}
// Process KIND.
switch(ContactKind){
case CONTACTKIND_NONE:
break;
case CONTACTKIND_INDIVIDUAL:
SaveData->Append("KIND:individual\n");
break;
case CONTACTKIND_GROUP:
SaveData->Append("KIND:group\n");
break;
case CONTACTKIND_ORGANISATION:
SaveData->Append("KIND:org\n");
break;
case CONTACTKIND_LOCATION:
SaveData->Append("KIND:location\n");
break;
default:
break;
}
// TODO: Sortout REV.
// Process XML.
for (std::map::iterator XMLIter = XMLList.begin();
XMLIter != XMLList.end(); XMLIter++){
ProcessData.Append("XML");
if (XMLListAltID[XMLIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append(XMLListAltID[XMLIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(XMLIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
// Process SOURCE.
SaveSource(&SourceList, &SourceListAltID,
&SourceListPID, &SourceListType,
&SourceListMediatype, &SourceListPref,
&SourceListTokens, SaveData);
// Process CLIENTPIDMAP.
for (std::map::iterator CPIDIter = ClientPIDList.begin();
CPIDIter != ClientPIDList.end(); CPIDIter++){
ProcessData.Append("CLIENTPIDMAP");
if (ClientPIDListTokens[CPIDIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append(ClientPIDListTokens[CPIDIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(CPIDIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
// Process FN.
for (std::map::iterator FNIter = FullNamesList.begin();
FNIter != FullNamesList.end(); FNIter++){
ProcessData.Append("FN");
// Check if there is a value for TYPE.
if (FullNamesListType[FNIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append(FullNamesListType[FNIter->first]);
}
// Check if there is a value for LANGUAGE.
if (FullNamesListLanguage[FNIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append(FullNamesListLanguage[FNIter->first]);
}
// Check if there is a value for ALTID.
if (FullNamesListAltID[FNIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append(FullNamesListAltID[FNIter->first]);
}
// Check if there is a value for PID.
if (FullNamesListPID[FNIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append(FullNamesListPID[FNIter->first]);
}
// Check if there is a value for PREF.
if (FullNamesListPref[FNIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", FullNamesListPref[FNIter->first]));
}
// Check if there is a value for tokens.
if (FullNamesListTokens[FNIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append(FullNamesListTokens[FNIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(FNIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
// Process NICKNAME.
SaveNickname(&GeneralNicknamesList, &GeneralNicknamesListAltID,
&GeneralNicknamesListPID, &GeneralNicknamesListType,
&GeneralNicknamesListLanguage, &GeneralNicknamesListPref,
&GeneralNicknamesListTokens, SaveData, "");
SaveNickname(&HomeNicknamesList, &HomeNicknamesListAltID,
&HomeNicknamesListPID, &HomeNicknamesListType,
&HomeNicknamesListLanguage, &HomeNicknamesListPref,
&HomeNicknamesListTokens, SaveData, "home");
SaveNickname(&BusinessNicknamesList, &BusinessNicknamesListAltID,
&BusinessNicknamesListPID, &BusinessNicknamesListType,
&BusinessNicknamesListLanguage, &BusinessNicknamesListPref,
&BusinessNicknamesListTokens, SaveData, "work");
// Process TITLE.
SaveTitle(&GeneralTitleList, &GeneralTitleListLanguage,
&GeneralTitleListAltID, &GeneralTitleListPID,
&GeneralTitleListType, &GeneralTitleListPref,
&GeneralTitleListTokens, SaveData, "");
SaveTitle(&HomeTitleList, &HomeTitleListLanguage,
&HomeTitleListAltID, &HomeTitleListPID,
&HomeTitleListType, &HomeTitleListPref,
&HomeTitleListTokens, SaveData, "home");
SaveTitle(&BusinessTitleList, &BusinessTitleListLanguage,
&BusinessTitleListAltID, &BusinessTitleListPID,
&BusinessTitleListType, &BusinessTitleListPref,
&BusinessTitleListTokens, SaveData, "work");
// Process TZ.
SaveTimezone(&GeneralTZList, &GeneralTZListAltID,
&GeneralTZListPID, &GeneralTZListType,
&GeneralTZListMediatype, &GeneralTZListPref,
&GeneralTZListTokens, SaveData, "");
SaveTimezone(&HomeTZList, &HomeTZListAltID,
&HomeTZListPID, &HomeTZListType,
&HomeTZListMediatype, &HomeTZListPref,
&HomeTZListTokens, SaveData, "home");
SaveTimezone(&BusinessTZList, &BusinessTZListAltID,
&BusinessTZListPID, &BusinessTZListType,
&BusinessTZListMediatype, &BusinessTZListPref,
&BusinessTZListTokens, SaveData, "work");
// Process ADR.
SaveAddress(&GeneralAddressList, &GeneralAddressListTown,
&GeneralAddressListCounty, &GeneralAddressListPostCode,
&GeneralAddressListCountry, &GeneralAddressListLabel,
&GeneralAddressListLang, &GeneralAddressListAltID,
&GeneralAddressListPID, &GeneralAddressListGeo,
&GeneralAddressListTimezone, &GeneralAddressListType,
&GeneralAddressListMediatype, &GeneralAddressListPref,
&GeneralAddressListTokens, SaveData, "");
SaveAddress(&HomeAddressList, &HomeAddressListTown,
&HomeAddressListCounty, &HomeAddressListPostCode,
&HomeAddressListCountry, &HomeAddressListLabel,
&HomeAddressListLang, &HomeAddressListAltID,
&HomeAddressListPID, &HomeAddressListGeo,
&HomeAddressListTimezone, &HomeAddressListType,
&HomeAddressListMediatype, &HomeAddressListPref,
&HomeAddressListTokens, SaveData, "home");
SaveAddress(&BusinessAddressList, &BusinessAddressListTown,
&BusinessAddressListCounty, &BusinessAddressListPostCode,
&BusinessAddressListCountry, &BusinessAddressListLabel,
&BusinessAddressListLang, &BusinessAddressListAltID,
&BusinessAddressListPID, &BusinessAddressListGeo,
&BusinessAddressListTimezone, &BusinessAddressListType,
&BusinessAddressListMediatype, &BusinessAddressListPref,
&BusinessAddressListTokens, SaveData, "work");
// Process EMAIL.
SaveEmail(&GeneralEmailList, &GeneralEmailListAltID,
&GeneralEmailListPID, &GeneralEmailListType,
&GeneralEmailListPref, &GeneralEmailListTokens,
SaveData, "");
SaveEmail(&HomeEmailList, &HomeEmailListAltID,
&HomeEmailListPID, &HomeEmailListType,
&HomeEmailListPref, &HomeEmailListTokens,
SaveData, "home");
SaveEmail(&BusinessEmailList, &BusinessEmailListAltID,
&BusinessEmailListPID, &BusinessEmailListType,
&BusinessEmailListPref, &BusinessEmailListTokens,
SaveData, "work");
// TODO: Process IMPP.
// TODO: Process TEL.
// Process LANG.
SaveLanguage(&GeneralLanguageList, &GeneralLanguageListAltID,
&GeneralLanguageListPID, &GeneralLanguageListType,
&GeneralLanguageListPref, &GeneralLanguageListTokens,
SaveData, "");
SaveLanguage(&HomeLanguageList, &HomeLanguageListAltID,
&HomeLanguageListPID, &HomeLanguageListType,
&HomeLanguageListPref, &HomeLanguageListTokens,
SaveData, "home");
SaveLanguage(&BusinessLanguageList, &BusinessLanguageListAltID,
&BusinessLanguageListPID, &BusinessLanguageListType,
&BusinessLanguageListPref, &BusinessLanguageListTokens,
SaveData, "work");
// Process GEO.
SaveGeoposition(&GeneralGeographyList, &GeneralGeographyListAltID,
&GeneralGeographyListPID, &GeneralGeographyListType,
&GeneralGeographyListMediatype, &GeneralGeographyListDataType,
&GeneralGeographyListPref, &GeneralGeographyListTokens,
SaveData, "");
SaveGeoposition(&HomeGeographyList, &HomeGeographyListAltID,
&HomeGeographyListPID, &HomeGeographyListType,
&HomeGeographyListMediatype, &HomeGeographyListDataType,
&HomeGeographyListPref, &HomeGeographyListTokens,
SaveData, "home");
SaveGeoposition(&BusinessGeographyList, &BusinessGeographyListAltID,
&BusinessGeographyListPID, &BusinessGeographyListType,
&BusinessGeographyListMediatype, &BusinessGeographyListDataType,
&BusinessGeographyListPref, &BusinessGeographyListTokens,
SaveData, "work");
// Process RELATED.
int Moo = 0;
for (std::map::iterator RelatedIter = GeneralRelatedList.begin();
RelatedIter != GeneralRelatedList.end(); RelatedIter++){
ProcessData.Append("RELATED");
// Check if there is a value for TYPE.
if (GeneralRelatedListRelType[RelatedIter->first].size() > 0){
wxString RelatedType = "";
ProcessData.Append(";TYPE=");
if (GeneralRelatedListRelType[RelatedIter->first] == _("Contact")){
RelatedType = wxT("contact");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Acquaintance")){
RelatedType = wxT("acquaintance");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Friend")){
RelatedType = wxT("friend");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Met")){
RelatedType = wxT("met");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Co-worker")){
RelatedType = wxT("co-worker");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Colleague")){
RelatedType = wxT("colleague");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Co-resident")){
RelatedType = wxT("co-resident");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Neighbour")){
RelatedType = wxT("neighbor");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Child")){
RelatedType = wxT("child");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Parent")){
RelatedType = wxT("parent");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Sibling")){
RelatedType = wxT("sibling");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Spouse")){
RelatedType = wxT("spouse");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Kin")){
RelatedType = wxT("kin");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Muse")){
RelatedType = wxT("muse");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Crush")){
RelatedType = wxT("crush");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Date")){
RelatedType = wxT("date");
} else if (GeneralRelatedListRelType[RelatedIter->first]== _("Sweetheart")){
RelatedType = wxT("sweetheart");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Me")){
RelatedType = wxT("me");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Agent")){
RelatedType = wxT("agent");
} else if (GeneralRelatedListRelType[RelatedIter->first] == _("Emergency")){
RelatedType = wxT("emergency");
} else {
RelatedType = GeneralRelatedListRelType[RelatedIter->first];
}
ProcessData.Append(RelatedType);
}
// Check if there is a value for LANGUAGE.
if (GeneralRelatedListLanguage[RelatedIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append(GeneralRelatedListLanguage[RelatedIter->first]);
}
// Check if there is a value for ALTID.
if (GeneralRelatedListAltID[RelatedIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append(GeneralRelatedListAltID[RelatedIter->first]);
}
// Check if there is a value for PID.
if (GeneralRelatedListPID[RelatedIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append(GeneralRelatedListPID[RelatedIter->first]);
}
// Check if there is a value for PREF.
if (GeneralRelatedListPref[RelatedIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", GeneralRelatedListPref[RelatedIter->first]));
}
// Check if there is a value for tokens.
if (GeneralRelatedListTokens[RelatedIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append(GeneralRelatedListTokens[RelatedIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(RelatedIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
// Process URL.
SaveURL(&GeneralWebsiteList, &GeneralWebsiteListAltID,
&GeneralWebsiteListPID, &GeneralWebsiteListType,
&GeneralWebsiteListMediatype, &GeneralWebsiteListPref,
&GeneralWebsiteListTokens, SaveData, "");
SaveURL(&HomeWebsiteList, &HomeWebsiteListAltID,
&HomeWebsiteListPID, &HomeWebsiteListType,
&HomeWebsiteListMediatype, &HomeWebsiteListPref,
&HomeWebsiteListTokens, SaveData, "home");
SaveURL(&BusinessWebsiteList, &BusinessWebsiteListAltID,
&BusinessWebsiteListPID, &BusinessWebsiteListType,
&BusinessWebsiteListMediatype, &BusinessWebsiteListPref,
&BusinessWebsiteListTokens, SaveData, "work");
// Process ROLE.
SaveRole(&GeneralRoleList, &GeneralRoleListLanguage,
&GeneralRoleListAltID, &GeneralRoleListPID,
&GeneralRoleListType, &GeneralRoleListPref,
&GeneralRoleListTokens, SaveData, "");
SaveRole(&HomeRoleList, &HomeRoleListLanguage,
&HomeRoleListAltID, &HomeRoleListPID,
&HomeRoleListType, &HomeRoleListPref,
&HomeRoleListTokens, SaveData, "home");
SaveRole(&BusinessRoleList, &BusinessRoleListLanguage,
&BusinessRoleListAltID, &BusinessRoleListPID,
&BusinessRoleListType, &BusinessRoleListPref,
&BusinessRoleListTokens, SaveData, "work");
// Process ORG.
SaveOrganisation(&GeneralOrganisationsList, &GeneralOrganisationsListAltID,
&GeneralOrganisationsListPID, &GeneralOrganisationsListLanguage,
&GeneralOrganisationsListSortAs, &GeneralOrganisationsListType,
&GeneralOrganisationsListPref, &GeneralOrganisationsListTokens,
SaveData, "");
SaveOrganisation(&HomeOrganisationsList, &HomeOrganisationsListAltID,
&HomeOrganisationsListPID, &HomeOrganisationsListLanguage,
&HomeOrganisationsListSortAs, &HomeOrganisationsListType,
&HomeOrganisationsListPref, &HomeOrganisationsListTokens,
SaveData, "home");
SaveOrganisation(&BusinessOrganisationsList, &BusinessOrganisationsListAltID,
&BusinessOrganisationsListPID, &BusinessOrganisationsListLanguage,
&BusinessOrganisationsListSortAs, &BusinessOrganisationsListType,
&BusinessOrganisationsListPref, &BusinessOrganisationsListTokens,
SaveData, "work");
// Process NOTE.
SaveNote(&GeneralNoteList, &GeneralNoteListLanguage,
&GeneralNoteListAltID, &GeneralNoteListPID,
&GeneralNoteListType, &GeneralNoteListPref,
&GeneralNoteListTokens, SaveData, "");
SaveNote(&HomeNoteList, &HomeNoteListLanguage,
&HomeNoteListAltID, &HomeNoteListPID,
&HomeNoteListType, &HomeNoteListPref,
&HomeNoteListTokens, SaveData, "home");
SaveNote(&BusinessNoteList, &BusinessNoteListLanguage,
&BusinessNoteListAltID, &BusinessNoteListPID,
&BusinessNoteListType, &BusinessNoteListPref,
&BusinessNoteListTokens, SaveData, "work");
// Process CATEGORIES.
SaveCategory(&CategoriesList, &CategoriesListLanguage,
&CategoriesListAltID, &CategoriesListPID,
&CategoriesListType, &CategoriesListPref,
&CategoriesListTokens, SaveData);
// Process PHOTO.
SavePhoto(&PicturesList, &PicturesListAltID,
&PicturesListPID, &PicturesListType,
&PicturesListPicEncType, &PicturesListPictureType,
&PicturesListMediatype, &PicturesListPref,
&PicturesListTokens, SaveData);
// Process LOGO.
SaveLogo(&LogosList, &LogosListAltID,
&LogosListPID, &LogosListType,
&LogosListPicEncType, &LogosListPictureType,
&LogosListMediatype, &LogosListPref,
&LogosListTokens, SaveData);
// Process SOUND.
SaveSound(&SoundsList, &SoundsListAltID,
&SoundsListPID, &SoundsListType,
&SoundsListAudioEncType, &SoundsListAudioType,
&SoundsListMediatype, &SoundsListLanguage,
&SoundsListPref, &SoundsListTokens,
SaveData);
// Process CALURI.
SaveCalendarURI(&CalendarList, &CalendarListMediatype,
&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);
// Write the end part of the vCard data file.
SaveData->Append("END:VCARD");
SaveDataStatus = CONTACTSAVE_OK;
return SaveDataStatus;
}
void ContactDataObject::SaveTitle(map *TitleList, map *TitleListLanguage,
map *TitleListAltID, map *TitleListPID,
map *TitleListType, map *TitleListPref,
map *TitleListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator TitleIter = TitleList->begin();
TitleIter != TitleList->end(); TitleIter++){
ProcessData.Append("TITLE");
// 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 ((*TitleListAltID)[TitleIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*TitleListAltID)[TitleIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*TitleListLanguage)[TitleIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*TitleListLanguage)[TitleIter->first]);
}
// Check if there is a value for PID.
if ((*TitleListPID)[TitleIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*TitleListPID)[TitleIter->first]);
}
// Check if there is a value for PREF.
if ((*TitleListPref)[TitleIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*TitleListPref)[TitleIter->first]));
}
// Check if there is a value for tokens.
if ((*TitleListTokens)[TitleIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*TitleListTokens)[TitleIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(TitleIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveSource(map *SourceList, map *SourceListAltID,
map *SourceListPID, map *SourceListType,
map *SourceListMediatype, map *SourceListPref,
map *SourceListTokens, wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator SourceIter = SourceList->begin();
SourceIter != SourceList->end(); SourceIter++){
ProcessData.Append("SOURCE");
// Check if there is a value for TYPE.
if ((*SourceListType)[SourceIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*SourceListType)[SourceIter->first]);
}
// Check if there is a value for ALTID.
if ((*SourceListAltID)[SourceIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*SourceListAltID)[SourceIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*SourceListMediatype)[SourceIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*SourceListMediatype)[SourceIter->first]);
}
// Check if there is a value for PID.
if ((*SourceListPID)[SourceIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*SourceListPID)[SourceIter->first]);
}
// Check if there is a value for PREF.
if ((*SourceListPref)[SourceIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*SourceListPref)[SourceIter->first]));
}
// Check if there is a value for tokens.
if ((*SourceListTokens)[SourceIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*SourceListTokens)[SourceIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(SourceIter->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,
map *NicknameListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator NicknameIter = NicknameList->begin();
NicknameIter != NicknameList->end(); NicknameIter++){
ProcessData.Append("NICKNAME");
// 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 ((*NicknameListAltID)[NicknameIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*NicknameListAltID)[NicknameIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*NicknameListLanguage)[NicknameIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*NicknameListLanguage)[NicknameIter->first]);
}
// Check if there is a value for PID.
if ((*NicknameListPID)[NicknameIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*NicknameListPID)[NicknameIter->first]);
}
// Check if there is a value for PREF.
if ((*NicknameListPref)[NicknameIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*NicknameListPref)[NicknameIter->first]));
}
// Check if there is a value for tokens.
if ((*NicknameListTokens)[NicknameIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*NicknameListTokens)[NicknameIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(NicknameIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveTimezone(map *TZList, map *TZListAltID,
map *TZListPID, map *TZListType,
map *TZListMediatype, map *TZListPref,
map *TZListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator TZIter = TZList->begin();
TZIter != TZList->end(); TZIter++){
ProcessData.Append("TZ");
// 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 ((*TZListAltID)[TZIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*TZListAltID)[TZIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*TZListMediatype)[TZIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*TZListMediatype)[TZIter->first]);
}
// Check if there is a value for PID.
if ((*TZListPID)[TZIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*TZListPID)[TZIter->first]);
}
// Check if there is a value for PREF.
if ((*TZListPref)[TZIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*TZListPref)[TZIter->first]));
}
// Check if there is a value for tokens.
if ((*TZListTokens)[TZIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*TZListTokens)[TZIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(TZIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveAddress(map *AddressList, map *AddressListTown,
map *AddressListCounty, map *AddressListPostCode,
map *AddressListCountry, map *AddressListLabel,
map *AddressListLang, map *AddressListAltID,
map *AddressListPID, map *AddressListGeo,
map *AddressListTimezone, map *AddressListType,
map *AddressListMediatype, map *AddressListPref,
map *AddressListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator AddressIter = AddressList->begin();
AddressIter != AddressList->end(); AddressIter++){
ProcessData.Append("ADR");
// 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 ((*AddressListAltID)[AddressIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*AddressListAltID)[AddressIter->first]);
}
// Check if there is a value for GEO.
if ((*AddressListGeo)[AddressIter->first].size() > 0){
ProcessData.Append(";GEO=\"");
ProcessData.Append((*AddressListGeo)[AddressIter->first]);
ProcessData.Append("\"");
}
// Check if there is a value for LABEL.
if ((*AddressListLabel)[AddressIter->first].size() > 0){
wxString AddressProcessed = "";
AddressProcessed = (*AddressListLabel)[AddressIter->first];
AddressProcessed.Replace("\n", "\\n", true);
ProcessData.Append(";LABEL=");
ProcessData.Append(AddressProcessed);
}
// Check if there is a value for LANGUAGE.
if ((*AddressListLang)[AddressIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*AddressListLang)[AddressIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*AddressListMediatype)[AddressIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*AddressListMediatype)[AddressIter->first]);
}
// Check if there is a value for PID.
if ((*AddressListPID)[AddressIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*AddressListPID)[AddressIter->first]);
}
// Check if there is a value for PREF.
if ((*AddressListPref)[AddressIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*AddressListPref)[AddressIter->first]));
}
// Check if there is a value for TZ.
if ((*AddressListTimezone)[AddressIter->first].size() > 0){
ProcessData.Append(";TZ=");
ProcessData.Append((*AddressListTimezone)[AddressIter->first]);
}
// Check if there is a value for tokens.
if ((*AddressListTokens)[AddressIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*AddressListTokens)[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::SaveLanguage(map *LanguageList, map *LanguageListAltID,
map *LanguageListPID, map *LanguageListType,
map *LangaugeListPref, map *LanguageListTokens,
wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator LanguageIter = LanguageList->begin();
LanguageIter != LanguageList->end(); LanguageIter++){
ProcessData.Append("LANG");
// 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 ((*LanguageListAltID)[LanguageIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*LanguageListAltID)[LanguageIter->first]);
}
// Check if there is a value for PID.
if ((*LanguageListPID)[LanguageIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*LanguageListPID)[LanguageIter->first]);
}
// Check if there is a value for PREF.
if ((*LangaugeListPref)[LanguageIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*LangaugeListPref)[LanguageIter->first]));
}
// Check if there is a value for tokens.
if ((*LanguageListTokens)[LanguageIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*LanguageListTokens)[LanguageIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(LanguageIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveGeoposition(map *GeographyList, map *GeographyListAltID,
map *GeographyListPID, map *GeographyListType,
map *GeographyListMediatype, map *GeographyListDataType,
map *GeographyListPref, map *GeographyListTokens,
wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator GeographyIter = GeographyList->begin();
GeographyIter != GeographyList->end(); GeographyIter++){
ProcessData.Append("GEO");
// 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 ((*GeographyListAltID)[GeographyIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*GeographyListAltID)[GeographyIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*GeographyListMediatype)[GeographyIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*GeographyListMediatype)[GeographyIter->first]);
}
// Check if there is a value for PID.
if ((*GeographyListPID)[GeographyIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*GeographyListPID)[GeographyIter->first]);
}
// Check if there is a value for PREF.
if ((*GeographyListPref)[GeographyIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*GeographyListPref)[GeographyIter->first]));
}
// Check if there is a value for tokens.
if ((*GeographyListTokens)[GeographyIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*GeographyListTokens)[GeographyIter->first]);
}
ProcessData.Append(":");
ProcessData.Append((*GeographyListDataType)[GeographyIter->first]);
ProcessData.Append(":");
ProcessData.Append(GeographyIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveURL(map *WebsiteList, map *WebsiteListAltID,
map *WebsiteListPID, map *WebsiteListType,
map *WebsiteListMediatype, map *WebsiteListPref,
map *WebsiteListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator WebsiteIter = WebsiteList->begin();
WebsiteIter != WebsiteList->end(); WebsiteIter++){
ProcessData.Append("URL");
// 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 ((*WebsiteListAltID)[WebsiteIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*WebsiteListAltID)[WebsiteIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*WebsiteListMediatype)[WebsiteIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*WebsiteListMediatype)[WebsiteIter->first]);
}
// Check if there is a value for PID.
if ((*WebsiteListPID)[WebsiteIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*WebsiteListPID)[WebsiteIter->first]);
}
// Check if there is a value for PREF.
if ((*WebsiteListPref)[WebsiteIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*WebsiteListPref)[WebsiteIter->first]));
}
// Check if there is a value for tokens.
if ((*WebsiteListTokens)[WebsiteIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*WebsiteListTokens)[WebsiteIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(WebsiteIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveRole(map *RoleList, map *RoleListLanguage,
map *RoleListAltID, map *RoleListPID,
map *RoleListType, map *RoleListPref,
map *RoleListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator RoleIter = RoleList->begin();
RoleIter != RoleList->end(); RoleIter++){
ProcessData.Append("ROLE");
// 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 ((*RoleListAltID)[RoleIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*RoleListAltID)[RoleIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*RoleListLanguage)[RoleIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*RoleListLanguage)[RoleIter->first]);
}
// Check if there is a value for PID.
if ((*RoleListPID)[RoleIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*RoleListPID)[RoleIter->first]);
}
// Check if there is a value for PREF.
if ((*RoleListPref)[RoleIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*RoleListPref)[RoleIter->first]));
}
// Check if there is a value for tokens.
if ((*RoleListTokens)[RoleIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*RoleListTokens)[RoleIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(RoleIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveOrganisation(map *OrganisationList, map *OrganisationListAltID,
map *OrganisationListPID, map *OrganisationListLanguage,
map *OrganisationListSortAs, map *OrganisationListType,
map *OrganisationListPref, map *OrganisationListTokens,
wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator OrganisationIter = OrganisationList->begin();
OrganisationIter != OrganisationList->end(); OrganisationIter++){
ProcessData.Append("ORG");
// 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 ((*OrganisationListAltID)[OrganisationIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*OrganisationListAltID)[OrganisationIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*OrganisationListLanguage)[OrganisationIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*OrganisationListLanguage)[OrganisationIter->first]);
}
// Check if there is a value for PID.
if ((*OrganisationListPID)[OrganisationIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*OrganisationListPID)[OrganisationIter->first]);
}
// Check if there is a value for PREF.
if ((*OrganisationListPref)[OrganisationIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*OrganisationListPref)[OrganisationIter->first]));
}
// Check if there is a value for SORT-AS.
if ((*OrganisationListSortAs)[OrganisationIter->first].size() > 0){
ProcessData.Append(";SORT-AS=\"");
ProcessData.Append((*OrganisationListSortAs)[OrganisationIter->first]);
ProcessData.Append("\"");
}
// Check if there is a value for tokens.
if ((*OrganisationListTokens)[OrganisationIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*OrganisationListTokens)[OrganisationIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(OrganisationIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveNote(map *NoteList, map *NoteListLanguage,
map *NoteListAltID, map *NoteListPID,
map *NoteListType, map *NoteListPref,
map *NoteListTokens, wxString *SaveData, wxString DataType){
wxString ProcessData = "";
for (std::map::iterator NoteIter = NoteList->begin();
NoteIter != NoteList->end(); NoteIter++){
ProcessData.Append("NOTE");
// 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 ((*NoteListAltID)[NoteIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*NoteListAltID)[NoteIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*NoteListLanguage)[NoteIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*NoteListLanguage)[NoteIter->first]);
}
// Check if there is a value for PID.
if ((*NoteListPID)[NoteIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*NoteListPID)[NoteIter->first]);
}
// Check if there is a value for PREF.
if ((*NoteListPref)[NoteIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*NoteListPref)[NoteIter->first]));
}
// Check if there is a value for tokens.
if ((*NoteListTokens)[NoteIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*NoteListTokens)[NoteIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(NoteIter->second);
ProcessData.Replace("\n", "\\n", true);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveCategory(map *CategoryList, map *CategoryListLanguage,
map *CategoryListAltID, map *CategoryListPID,
map *CategoryListType, map *CategoryListPref,
map *CategoryListTokens, wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator CategoryIter = CategoryList->begin();
CategoryIter != CategoryList->end(); CategoryIter++){
ProcessData.Append("CATEGORIES");
// Check if there is a value for TYPE.
if ((*CategoryListType)[CategoryIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*CategoryListType)[CategoryIter->first]);
}
// Check if there is a value for ALTID.
if ((*CategoryListAltID)[CategoryIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*CategoryListAltID)[CategoryIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*CategoryListLanguage)[CategoryIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*CategoryListLanguage)[CategoryIter->first]);
}
// Check if there is a value for PID.
if ((*CategoryListPID)[CategoryIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*CategoryListPID)[CategoryIter->first]);
}
// Check if there is a value for PREF.
if ((*CategoryListPref)[CategoryIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*CategoryListPref)[CategoryIter->first]));
}
// Check if there is a value for tokens.
if ((*CategoryListTokens)[CategoryIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*CategoryListTokens)[CategoryIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(CategoryIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SavePhoto(map *PicturesList, map *PicturesListAltID,
map *PicturesListPID, map *PicturesListType,
map *PicturesListPicEncType, map *PicturesListPictureType,
map *PicturesListMediatype, map *PicturesListPref,
map *PicturesListTokens, wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator PicturesIter = PicturesList->begin();
PicturesIter != PicturesList->end(); PicturesIter++){
ProcessData.Append("PHOTO");
// Check if there is a value for TYPE.
if ((*PicturesListType)[PicturesIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*PicturesListType)[PicturesIter->first]);
}
// Check if there is a value for ALTID.
if ((*PicturesListAltID)[PicturesIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*PicturesListAltID)[PicturesIter->first]);
}
// Check if there is a value for MEDIATYPE..
if ((*PicturesListMediatype)[PicturesIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*PicturesListMediatype)[PicturesIter->first]);
}
// Check if there is a value for PID.
if ((*PicturesListPID)[PicturesIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*PicturesListPID)[PicturesIter->first]);
}
// Check if there is a value for PREF.
if ((*PicturesListPref)[PicturesIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*PicturesListPref)[PicturesIter->first]));
}
// Check if there is a value for tokens.
if ((*PicturesListTokens)[PicturesIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*PicturesListTokens)[PicturesIter->first]);
}
ProcessData.Append(":data:");
ProcessData.Append((*PicturesListPictureType)[PicturesIter->first]);
ProcessData.Append(";");
ProcessData.Append((*PicturesListPicEncType)[PicturesIter->first]);
ProcessData.Append(",");
ProcessData.Append(PicturesIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveLogo(map *LogosList, map *LogosListAltID,
map *LogosListPID, map *LogosListType,
map *LogosListPicEncType, map *LogosListPictureType,
map *LogosListMediatype, map *LogosListPref,
map *LogosListTokens, wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator LogosIter = LogosList->begin();
LogosIter != LogosList->end(); LogosIter++){
ProcessData.Append("LOGO");
// Check if there is a value for TYPE.
if ((*LogosListType)[LogosIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*LogosListType)[LogosIter->first]);
}
// Check if there is a value for ALTID.
if ((*LogosListAltID)[LogosIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*LogosListAltID)[LogosIter->first]);
}
// Check if there is a value for MEDIATYPE..
if ((*LogosListMediatype)[LogosIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*LogosListMediatype)[LogosIter->first]);
}
// Check if there is a value for PID.
if ((*LogosListPID)[LogosIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*LogosListPID)[LogosIter->first]);
}
// Check if there is a value for PREF.
if ((*LogosListPref)[LogosIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*LogosListPref)[LogosIter->first]));
}
// Check if there is a value for tokens.
if ((*LogosListTokens)[LogosIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*LogosListTokens)[LogosIter->first]);
}
ProcessData.Append(":data:");
ProcessData.Append((*LogosListPictureType)[LogosIter->first]);
ProcessData.Append(";");
ProcessData.Append((*LogosListPicEncType)[LogosIter->first]);
ProcessData.Append(",");
ProcessData.Append(LogosIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveSound(map *SoundsList, map *SoundsListAltID,
map *SoundsListPID, map *SoundsListType,
map *SoundsListAudioEncType, map *SoundsListAudioType,
map *SoundsListMediatype, map *SoundsListLanguage,
map *SoundsListPref, map *SoundsListTokens,
wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator SoundsIter = SoundsList->begin();
SoundsIter != SoundsList->end(); SoundsIter++){
ProcessData.Append("SOUND");
// Check if there is a value for TYPE.
if ((*SoundsListType)[SoundsIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*SoundsListType)[SoundsIter->first]);
}
// Check if there is a value for ALTID.
if ((*SoundsListAltID)[SoundsIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*SoundsListAltID)[SoundsIter->first]);
}
// Check if there is a value for LANGUAGE.
if ((*SoundsListLanguage)[SoundsIter->first].size() > 0){
ProcessData.Append(";LANGUAGE=");
ProcessData.Append((*SoundsListLanguage)[SoundsIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*SoundsListMediatype)[SoundsIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*SoundsListMediatype)[SoundsIter->first]);
}
// Check if there is a value for PID.
if ((*SoundsListPID)[SoundsIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*SoundsListPID)[SoundsIter->first]);
}
// Check if there is a value for PREF.
if ((*SoundsListPref)[SoundsIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*SoundsListPref)[SoundsIter->first]));
}
// Check if there is a value for tokens.
if ((*SoundsListTokens)[SoundsIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*SoundsListTokens)[SoundsIter->first]);
}
ProcessData.Append(":data:");
ProcessData.Append((*SoundsListAudioType)[SoundsIter->first]);
ProcessData.Append(";");
ProcessData.Append((*SoundsListAudioEncType)[SoundsIter->first]);
ProcessData.Append(",");
ProcessData.Append(SoundsIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveCalendarURI(map *CalendarList, map *CalendarListMediatype,
map *CalendarListAltID, map *CalendarListPID,
map *CalendarListType, map *CalendarListPref,
map *CalendarListTokens, wxString *SaveData){
wxString ProcessData = "";
for (std::map::iterator CalendarIter = CalendarList->begin();
CalendarIter != CalendarList->end(); CalendarIter++){
ProcessData.Append("CALURI");
// Check if there is a value for TYPE.
if ((*CalendarListType)[CalendarIter->first].size() > 0){
ProcessData.Append(";TYPE=");
ProcessData.Append((*CalendarListType)[CalendarIter->first]);
}
// Check if there is a value for ALTID.
if ((*CalendarListAltID)[CalendarIter->first].size() > 0){
ProcessData.Append(";ALTID=");
ProcessData.Append((*CalendarListAltID)[CalendarIter->first]);
}
// Check if there is a value for MEDIATYPE.
if ((*CalendarListMediatype)[CalendarIter->first].size() > 0){
ProcessData.Append(";MEDIATYPE=");
ProcessData.Append((*CalendarListMediatype)[CalendarIter->first]);
}
// Check if there is a value for PID.
if ((*CalendarListPID)[CalendarIter->first].size() > 0){
ProcessData.Append(";PID=");
ProcessData.Append((*CalendarListPID)[CalendarIter->first]);
}
// Check if there is a value for PREF.
if ((*CalendarListPref)[CalendarIter->first] > 0){
ProcessData.Append(";PREF=");
ProcessData.Append(wxString::Format("%i", (*CalendarListPref)[CalendarIter->first]));
}
// Check if there is a value for tokens.
if ((*CalendarListTokens)[CalendarIter->first].size() > 0){
ProcessData.Append(";");
ProcessData.Append((*CalendarListTokens)[CalendarIter->first]);
}
ProcessData.Append(":");
ProcessData.Append(CalendarIter->second);
ProcessData.Append("\n");
ProcessData = OutputText(&ProcessData);
SaveData->Append(ProcessData);
ProcessData.clear();
}
}
void ContactDataObject::SaveCalendarRequestURI(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();
}
}