// ContactDataObject.h - Client Data Object header.
//
-// (c) 2012-2015 Xestia Software Development.
+// (c) 2012-2016 Xestia Software Development.
//
// This file is part of Xestia Address Book.
//
#include <wx/file.h>
#include <map>
#include <wx/tokenzr.h>
+#include <stdexcept>
#include "../../vcard/vcard.h"
#include "../../common/textprocessing.h"
+using namespace std;
+
enum ContactLoadStatus{
CONTACTLOAD_UNITTESTFAIL = -1,
CONTACTLOAD_OK,
CONTACTLOAD_FILEBASESPECFAIL
};
+enum ContactSaveStatus{
+ CONTACTSAVE_UNITTESTFAIL = -1,
+ CONTACTSAVE_OK,
+ CONTACTSAVE_FILEERROR,
+ CONTACTSAVE_WRITEERROR
+};
+
enum ContactKindType{
CONTACTKIND_NONE,
CONTACTKIND_INDIVIDUAL,
void ProcessCalendarFreeBusy(wxString PropertySeg1, wxString PropertySeg2, int *FreeBusyAddressCount);
void ProcessKey(wxString PropertySeg1, wxString PropertySeg2, int *KeyCount);
void ProcessVendor(wxString PropertySeg1, wxString PropertySeg2, int *VendorCount);
+
+ // Save functions
+
+ void SaveTitle(map<int, wxString> *TitleList, map<int, wxString> *TitleListLanguage,
+ map<int, wxString> *TitleListAltID, map<int, wxString> *TitleListPID,
+ map<int, wxString> *TitleListType, map<int, int> *TitleListPref,
+ map<int, wxString> *TitleListTokens, wxString *SaveData, wxString DataType);
+ void SaveSource(map<int, wxString> *SourceList, map<int, wxString> *SourceListAltID,
+ map<int, wxString> *SourceListPID, map<int, wxString> *SourceListType,
+ map<int, wxString> *SourceListMediatype, map<int, int> *SourceListPref,
+ map<int, wxString> *SourceListTokens, wxString *SaveData);
+ void SaveMember(std::map<int, wxString> *GroupsList, std::map<int, wxString> *GroupsListAltID,
+ std::map<int, wxString> *GroupsListPID, std::map<int, wxString> *GroupsListType,
+ std::map<int, wxString> *GroupsListMediatype, std::map<int, int> *GroupsListPref,
+ std::map<int, wxString> *GroupsListTokens, wxString *SaveData);
+ void SaveNickname(map<int, wxString> *NicknameList, map<int, wxString> *NicknameListAltID,
+ map<int, wxString> *NicknameListPID, map<int, wxString> *NicknameListType,
+ map<int, wxString> *NicknameListLanguage, map<int, int> *NicknameListPref,
+ map<int, wxString> *NicknameListTokens, wxString *SaveData, wxString DataType);
+ void SaveTimezone(map<int, wxString> *TZList, map<int, wxString> *TZListAltID,
+ map<int, wxString> *TZListPID, map<int, wxString> *TZListType,
+ map<int, wxString> *TZListMediatype, map<int, int> *TZListPref,
+ map<int, wxString> *TZListTokens, wxString *SaveData, wxString DataType);
+ void SaveAddress(map<int, wxString> *AddressList, map<int, wxString> *AddressListTown,
+ map<int, wxString> *AddressListCounty, map<int, wxString> *AddressListPostCode,
+ map<int, wxString> *AddressListCountry, map<int, wxString> *AddressListLabel,
+ map<int, wxString> *AddressListLang, map<int, wxString> *AddressListAltID,
+ map<int, wxString> *AddressListPID, map<int, wxString> *AddressListGeo,
+ map<int, wxString> *AddressListTimezone, map<int, wxString> *AddressListType,
+ map<int, wxString> *AddressListMediatype, map<int, int> *AddressListPref,
+ map<int, wxString> *AddressListTokens, wxString *SaveData, wxString DataType);
+ void SaveEmail(map<int, wxString> *EmailList, map<int, wxString> *EmailListAltID,
+ map<int, wxString> *EmailListPID, map<int, wxString> *EmailListType,
+ map<int, int> *EmailListPref, map<int, wxString> *EmailListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveIMPP(map<int, wxString> *IMList, map<int, wxString> *IMListAltID,
+ map<int, wxString> *IMListPID, map<int, wxString> *IMListType,
+ map<int, wxString> *IMListTypeInfo, map<int, wxString> *IMListDataType,
+ map<int, int> *IMListPref, map<int, wxString> *IMListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveTelephone(map<int, wxString> *TelephoneList, map<int, wxString> *TelephoneListAltID,
+ map<int, wxString> *TelephoneListPID, map<int, wxString> *TelephoneListType,
+ map<int, wxString> *TelephoneListTypeInfo, map<int, wxString> *TelephoneListMediatype,
+ map<int, int> *TelephoneListPref, map<int, wxString> *TelephoneListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveLanguage(map<int, wxString> *LanguageList, map<int, wxString> *LanguageListAltID,
+ map<int, wxString> *LanguageListPID, map<int, wxString> *LanguageListType,
+ map<int, int> *LangaugeListPref, map<int, wxString> *LanguageListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveGeoposition(map<int, wxString> *GeographyList, map<int, wxString> *GeographyListAltID,
+ map<int, wxString> *GeographyListPID, map<int, wxString> *GeographyListType,
+ map<int, wxString> *GeographyListMediatype, map<int, wxString> *GeographyListDataType,
+ map<int, int> *GeographyListPref, map<int, wxString> *GeographyListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveURL(map<int, wxString> *WebsiteList, map<int, wxString> *WebsiteListAltID,
+ map<int, wxString> *WebsiteListPID, map<int, wxString> *WebsiteListType,
+ map<int, wxString> *WebsiteListMediatype, map<int, int> *WebsiteListPref,
+ map<int, wxString> *WebsiteListTokens, wxString *SaveData, wxString DataType);
+ void SaveRole(map<int, wxString> *RoleList, map<int, wxString> *RoleListLanguage,
+ map<int, wxString> *RoleListAltID, map<int, wxString> *RoleListPID,
+ map<int, wxString> *RoleListType, map<int, int> *RoleListPref,
+ map<int, wxString> *RoleListTokens, wxString *SaveData, wxString DataType);
+ void SaveOrganisation(map<int, wxString> *OrganisationList, map<int, wxString> *OrganisationListLanguage,
+ map<int, wxString> *OrganisationListAltID, map<int, wxString> *OrganisationListPID,
+ map<int, wxString> *OrganisationListSortAs, map<int, wxString> *OrganisationListType,
+ map<int, int> *OrganisationListPref, map<int, wxString> *OrganisationListTokens,
+ wxString *SaveData, wxString DataType);
+ void SaveNote(map<int, wxString> *NoteList, map<int, wxString> *NoteListLanguage,
+ map<int, wxString> *NoteListAltID, map<int, wxString> *NoteListPID,
+ map<int, wxString> *NoteListType, map<int, int> *NoteListPref,
+ map<int, wxString> *NoteListTokens, wxString *SaveData, wxString DataType);
+ void SaveCategory(map<int, wxString> *CategoryList, map<int, wxString> *CategoryListLanguage,
+ map<int, wxString> *CategoryListAltID, map<int, wxString> *CategoryListPID,
+ map<int, wxString> *CategoryListType, map<int, int> *CategoryListPref,
+ map<int, wxString> *CategoryListTokens, wxString *SaveData);
+ void SavePhoto(map<int, string> *PicturesList, map<int, wxString> *PicturesListAltID,
+ map<int, wxString> *PicturesListPID, map<int, wxString> *PicturesListType,
+ map<int, wxString> *PicturesListPicEncType, map<int, wxString> *PicturesListPictureType,
+ map<int, wxString> *PicturesListMediatype, map<int, int> *PicturesListPref,
+ map<int, wxString> *PicturesListTokens, wxString *SaveData);
+ void SaveLogo(map<int, string> *LogosList, map<int, wxString> *LogosListAltID,
+ map<int, wxString> *LogosListPID, map<int, wxString> *LogosListType,
+ map<int, wxString> *LogosListPicEncType, map<int, wxString> *LogosListPictureType,
+ map<int, wxString> *LogosListMediatype, map<int, int> *LogosListPref,
+ map<int, wxString> *LogosListTokens, wxString *SaveData);
+ void SaveSound(map<int, string> *SoundsList, map<int, wxString> *SoundsListAltID,
+ map<int, wxString> *SoundsListPID, map<int, wxString> *SoundsListType,
+ map<int, wxString> *SoundsListAudioEncType, map<int, wxString> *SoundsListAudioType,
+ map<int, wxString> *SoundsListMediatype, map<int, wxString> *SoundsListLanguage,
+ map<int, int> *SoundsListPref, map<int, wxString> *SoundsListTokens,
+ wxString *SaveData);
+ void SaveCalendarURI(std::map<int, wxString> *CalendarList, std::map<int, wxString> *CalendarListAltID,
+ std::map<int, wxString> *CalendarListPID, std::map<int, wxString> *CalendarListType,
+ std::map<int, wxString> *CalendarListMediatype, std::map<int, int> *CalendarListPref,
+ std::map<int, wxString> *CalendarListTokens, wxString *SaveData);
+ void SaveCalendarRequestURI(std::map<int, wxString> *CalendarRequestList, std::map<int, wxString> *CalendarRequestListAltID,
+ std::map<int, wxString> *CalendarRequestListPID, std::map<int, wxString> *CalendarRequestListType,
+ std::map<int, wxString> *CalendarRequestListMediatype, std::map<int, int> *CalendarRequestListPref,
+ std::map<int, wxString> *CalendarRequestListTokens, wxString *SaveData);
+ void SaveFreeBusyURI(std::map<int, wxString> *FreeBusyList, std::map<int, wxString> *FreeBusyListAltID,
+ std::map<int, wxString> *FreeBusyListPID, std::map<int, wxString> *FreeBusyListType,
+ std::map<int, wxString> *FreeBusyListMediatype, std::map<int, int> *FreeBusyListPref,
+ std::map<int, wxString> *FreeBusyListTokens, wxString *SaveData);
+ void SaveKey(map<int, wxString> *KeyList, map<int, wxString> *KeyListAltID,
+ map<int, wxString> *KeyListPID, map<int, wxString> *KeyListType,
+ map<int, bool> *KeyListKeyType, map<int, wxString> *KeyListDataEncType,
+ map<int, wxString> *KeyListDataType, map<int, int> *KeyListPref,
+ map<int, wxString> *KeyListTokens, wxString *SaveData);
+ void SaveVendor(map<int, wxString> *VendorList, map<int, wxString> *VendorListPEN,
+ map<int, wxString> *VendorListElement, wxString *SaveData);
+ void SaveXToken(map<int, wxString> *XTokenList, map<int, wxString> *XTokenListTokens,
+ wxString *SaveData);
public:
wxString BirthdayAltID;
wxString BirthdayCalScale;
wxString BirthdayTokens;
+ bool BirthdayText = FALSE;
+
wxString Anniversary;
wxString AnniversaryAltID;
wxString AnniversaryCalScale;
wxString AnniversaryTokens;
+ bool AnniversaryText = FALSE;
wxString Gender;
wxString GenderDetails;
std::map<int, wxString> ClientPIDList;
std::map<int, wxString> ClientPIDListTokens;
- /* We don't use these at the moment but we want to keep
- them for compatability reasons */
-
- /*std::map<int, wxString> ExtraFullNames;*/
- /*std::map<int, wxString> ExtraNicknames;*/
-
std::map<int, wxString> FullNamesList;
std::map<int, wxString> FullNamesListType;
std::map<int, wxString> FullNamesListLanguage;
std::map<int, wxString> GeneralIMListAltID;
std::map<int, wxString> GeneralIMListPID;
std::map<int, wxString> GeneralIMListType;
+ std::map<int, wxString> GeneralIMListTypeInfo;
std::map<int, wxString> GeneralIMListTokens;
std::map<int, wxString> GeneralIMListMediatype;
std::map<int, int> GeneralIMListPref;
std::map<int, wxString> GeneralTelephoneListType;
std::map<int, wxString> GeneralTelephoneListTokens;
std::map<int, wxString> GeneralTelephoneListTypeInfo;
+ std::map<int, wxString> GeneralTelephoneListDataType;
std::map<int, int> GeneralTelephoneListPref;
std::map<int, wxString> GeneralLanguageList;
std::map<int, wxString> GeneralGeographyListType;
std::map<int, wxString> GeneralGeographyListTokens;
std::map<int, wxString> GeneralGeographyListMediatype;
+ std::map<int, wxString> GeneralGeographyListDataType;
std::map<int, int> GeneralGeographyListPref;
std::map<int, wxString> GeneralRelatedList;
std::map<int, wxString> HomeIMListAltID;
std::map<int, wxString> HomeIMListPID;
std::map<int, wxString> HomeIMListType;
+ std::map<int, wxString> HomeIMListTypeInfo;
std::map<int, wxString> HomeIMListTokens;
std::map<int, wxString> HomeIMListMediatype;
std::map<int, int> HomeIMListPref;
std::map<int, wxString> HomeTelephoneListType;
std::map<int, wxString> HomeTelephoneListTokens;
std::map<int, wxString> HomeTelephoneListTypeInfo;
+ std::map<int, wxString> HomeTelephoneListDataType;
std::map<int, int> HomeTelephoneListPref;
std::map<int, wxString> HomeLanguageList;
std::map<int, wxString> HomeGeographyListType;
std::map<int, wxString> HomeGeographyListTokens;
std::map<int, wxString> HomeGeographyListMediatype;
+ std::map<int, wxString> HomeGeographyListDataType;
std::map<int, int> HomeGeographyListPref;
std::map<int, wxString> HomeWebsiteList;
std::map<int, wxString> BusinessIMListAltID;
std::map<int, wxString> BusinessIMListPID;
std::map<int, wxString> BusinessIMListType;
+ std::map<int, wxString> BusinessIMListTypeInfo;
std::map<int, wxString> BusinessIMListTokens;
std::map<int, wxString> BusinessIMListMediatype;
std::map<int, int> BusinessIMListPref;
std::map<int, wxString> BusinessTelephoneListType;
std::map<int, wxString> BusinessTelephoneListTypeInfo;
std::map<int, wxString> BusinessTelephoneListTokens;
+ std::map<int, wxString> BusinessTelephoneListDataType;
std::map<int, int> BusinessTelephoneListPref;
std::map<int, wxString> BusinessLanguageList;
std::map<int, wxString> BusinessGeographyListType;
std::map<int, wxString> BusinessGeographyListTokens;
std::map<int, wxString> BusinessGeographyListMediatype;
+ std::map<int, wxString> BusinessGeographyListDataType;
std::map<int, int> BusinessGeographyListPref;
std::map<int, wxString> BusinessWebsiteList;
// Subroutines.
ContactLoadStatus LoadFile(wxString Filename);
+ ContactSaveStatus SaveFile(wxString Filename);
+ ContactSaveStatus SaveString(wxString *Data);
+ void ClearData();
};