Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
CardDAV2/CDO: Cleaned up headers and included stdexcept
[xestiaab/.git] / source / contacteditor / cdo / ContactDataObject.h
index 6317312..733aa1f 100644 (file)
@@ -1,6 +1,6 @@
 // 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"
+#include "../../vcard/vcard.h"
+#include "../../common/textprocessing.h"
+
+using namespace std;
 
 enum ContactLoadStatus{
        CONTACTLOAD_UNITTESTFAIL = -1,
@@ -36,6 +39,13 @@ enum ContactLoadStatus{
        CONTACTLOAD_FILEBASESPECFAIL
 };
 
+enum ContactSaveStatus{
+       CONTACTSAVE_UNITTESTFAIL = -1,
+       CONTACTSAVE_OK,
+       CONTACTSAVE_FILEERROR,
+       CONTACTSAVE_WRITEERROR
+};
+
 enum ContactKindType{
        CONTACTKIND_NONE,
        CONTACTKIND_INDIVIDUAL,
@@ -88,6 +98,118 @@ class ContactDataObject{
        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:
 
@@ -110,10 +232,13 @@ class ContactDataObject{
        wxString BirthdayAltID;
        wxString BirthdayCalScale;
        wxString BirthdayTokens;
+       bool BirthdayText = FALSE;
+       
        wxString Anniversary;
        wxString AnniversaryAltID;
        wxString AnniversaryCalScale;
        wxString AnniversaryTokens;
+       bool AnniversaryText = FALSE;
        
        wxString Gender;
        wxString GenderDetails;
@@ -137,12 +262,6 @@ class ContactDataObject{
        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;
@@ -186,6 +305,7 @@ class ContactDataObject{
        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;
@@ -196,6 +316,7 @@ class ContactDataObject{
        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;
@@ -219,6 +340,7 @@ class ContactDataObject{
        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;
@@ -308,6 +430,7 @@ class ContactDataObject{
        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;
@@ -318,6 +441,7 @@ class ContactDataObject{
        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;
@@ -341,6 +465,7 @@ class ContactDataObject{
        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;
@@ -421,6 +546,7 @@ class ContactDataObject{
        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;
@@ -431,6 +557,7 @@ class ContactDataObject{
        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;
@@ -454,6 +581,7 @@ class ContactDataObject{
        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;
@@ -604,6 +732,9 @@ class ContactDataObject{
        // Subroutines.
        
        ContactLoadStatus LoadFile(wxString Filename);
+       ContactSaveStatus SaveFile(wxString Filename);
+       ContactSaveStatus SaveString(wxString *Data);
+       void ClearData();
 
 };
 
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy