Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Introduced simplified LoadBirthday and LoadAnniversary.
[xestiaab/.git] / source / contacteditor / frmContactEditor.h
1 // frmContactEditor.h - frmContactEditor form header.
2 //
3 // (c) 2012-2015 Xestia Software Development.
4 //
5 // This file is part of Xestia Address Book.
6 //
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
10 //
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #ifndef __frmContactEditor__
20 #define __frmContactEditor__
22 #include <wx/wx.h>
24 #include <map>
25 #include <string>
27 #include <SFML/Audio.hpp>
29 /**
30 @file
31 Subclass of frmContactEditorADT, which is generated by wxFormBuilder.
32 */
34 #include "../AppXestiaAddrBk.h"
35 #include "../vcard/vcard.h"
36 #include "../common/textprocessing.h"
37 #include "../common/etag.h"
38 #include "../common/timers.h"
40 #include "../actmgr/frmActivityMgr.h"
41 #include "../frmMain.h"
43 #include "cdo/ContactDataObject.h"
45 #define CE_NICKNAME wxT("Nickname")
46 #define CE_ADDRESS wxT("Address")
47 #define CE_EMAIL wxT("Email")
48 #define CE_IM wxT("IM")
49 #define CE_TELEPHONE wxT("Telephone")
50 #define CE_LANG wxT("Languages")
51 #define CE_TZ wxT("Timezone")
52 #define CE_RELATED wxT("Related")
53 #define CE_WEBSITE wxT("Websites")
54 #define CE_TITLE wxT("Titles")
55 #define CE_GEOPOSITION wxT("Geoposition")
56 #define CE_ROLE wxT("Roles")
57 #define CE_ORG wxT("Organisations")
58 #define CE_NOTE wxT("Notes")
59 #define CE_CATEGORIES wxT("Categories")
60 #define CE_GROUPS wxT("Groups")
61 #define CE_PICTURES wxT("Pictures")
62 #define CE_SOUNDS wxT("Sounds")
63 #define CE_CALENDAR wxT("Calendar")
64 #define CE_KEY wxT("Key")
65 #define CE_TOKEN wxT("Token")
67 //// end generated include
69 struct frmMain;
70 struct frmActivityMgr;
72 // Special Audio Stream for detecting when a sound has stopped playing.
73 class AudioStream: public sf::Music
74 {
75 private:
77    bool onGetData(SoundStream::Chunk& data)
78    {
79        FilePlaying = TRUE;
80        bool running = sf::Music::onGetData(data);
81        if(!running)
82            OnMusicEnd();
83        return running;
84    }
85 public:
86    void OnMusicEnd() { }
87    bool GetPlayingStatus(){ return FilePlaying; }   
89     bool FilePlaying = TRUE;
90 };
92 /** Implementing frmContactEditorADT */
93 class frmContactEditor : public frmContactEditorADT
94 {
95         protected:
96                 // Handlers for frmContactEditorADT events.
97                 void AddGeneralNickname( wxCommandEvent& event );
98                 void ModifyGeneralNickname( wxCommandEvent& event );
99                 void DeleteGeneralNickname( wxCommandEvent& event );
100                 void AddHomeNickname( wxCommandEvent& event );
101                 void ModifyHomeNickname( wxCommandEvent& event );
102                 void DeleteHomeNickname( wxCommandEvent& event );
103                 void AddBusinessNickname( wxCommandEvent& event );
104                 void ModifyBusinessNickname( wxCommandEvent& event );
105                 void DeleteBusinessNickname( wxCommandEvent& event );
106                 void AddGeneralAddress( wxCommandEvent& event );
107                 void ModifyGeneralAddress( wxCommandEvent& event );
108                 void DeleteGeneralAddress( wxCommandEvent& event );
109                 void AddGeneralEmail( wxCommandEvent& event );
110                 void ModifyGeneralEmail( wxCommandEvent& event );
111                 void DeleteGeneralEmail( wxCommandEvent& event );
112                 void AddGeneralIM( wxCommandEvent& event );
113                 void ModifyGeneralIM( wxCommandEvent& event );
114                 void DeleteGeneralIM( wxCommandEvent& event );
115                 void MoveGeneralIMUp( wxCommandEvent& event );
116                 void MoveGeneralIMDown( wxCommandEvent& event );
117                 void AddGeneralTelephone( wxCommandEvent& event );
118                 void ModifyGeneralTelephone( wxCommandEvent& event );
119                 void DeleteGeneralTelephone( wxCommandEvent& event );
120                 void AddGeneralLanguages( wxCommandEvent& event );
121                 void ModifyGeneralLanguages( wxCommandEvent& event );
122                 void DeleteGeneralLanguage( wxCommandEvent& event );
123                 void AddGeneralTimezone( wxCommandEvent& event );
124                 void ModifyGeneralTimezone( wxCommandEvent& event );
125                 void DeleteGeneralTimezone( wxCommandEvent& event );
126                 void AddGeneralGeoposition( wxCommandEvent& event );
127                 void ModifyGeneralGeoposition( wxCommandEvent& event );
128                 void DeleteGeneralGeoposition( wxCommandEvent& event ); 
129                 void AddGeneralRelated( wxCommandEvent& event );
130                 void ModifyGeneralRelated( wxCommandEvent& event );
131                 void DeleteGeneralRelated( wxCommandEvent& event );
132                 void AddGeneralWebsite( wxCommandEvent& event );
133                 void ModifyGeneralWebsite( wxCommandEvent& event );
134                 void DeleteGeneralWebsite( wxCommandEvent& event );
135                 void MoveGeneralWebsiteUp( wxCommandEvent& event );
136                 void MoveGeneralWebsiteDown( wxCommandEvent& event );
137                 void AddGeneralTitle( wxCommandEvent& event );
138                 void ModifyGeneralTitle( wxCommandEvent& event );
139                 void DeleteGeneralTitle( wxCommandEvent& event );
140                 void MoveGeneralTitleUp( wxCommandEvent& event );
141                 void MoveGeneralTitleDown( wxCommandEvent& event );
142                 void AddGeneralRole( wxCommandEvent& event );
143                 void ModifyGeneralRole( wxCommandEvent& event );
144                 void DeleteGeneralRole( wxCommandEvent& event );
145                 void MoveGeneralRoleUp( wxCommandEvent& event );
146                 void MoveGeneralRoleDown( wxCommandEvent& event );
147                 void AddGeneralOrganisation( wxCommandEvent& event );
148                 void ModifyGeneralOrganisation( wxCommandEvent& event );
149                 void DeleteGeneralOrganisation( wxCommandEvent& event );
150                 void MoveGeneralOrganisationUp( wxCommandEvent& event );
151                 void MoveGeneralOrganisationDown( wxCommandEvent& event );
152                 void AddGeneralNote( wxCommandEvent& event );
153                 void ModifyGeneralNote( wxCommandEvent& event );
154                 void DeleteGeneralNote( wxCommandEvent& event );
155                 void MoveGeneralNoteUp( wxCommandEvent& event );
156                 void MoveGeneralNoteDown( wxCommandEvent& event );
157                 void AddHomeAddress( wxCommandEvent& event );
158                 void ModifyHomeAddress( wxCommandEvent& event );
159                 void DeleteHomeAddress( wxCommandEvent& event );
160                 void AddHomeEmail( wxCommandEvent& event );
161                 void ModifyHomeEmail( wxCommandEvent& event );
162                 void DeleteHomeEmail( wxCommandEvent& event );          
163                 void AddHomeIM( wxCommandEvent& event );
164                 void ModifyHomeIM( wxCommandEvent& event );
165                 void DeleteHomeIM( wxCommandEvent& event );
166                 void AddHomeTelephone( wxCommandEvent& event );
167                 void ModifyHomeTelephone( wxCommandEvent& event );
168                 void DeleteHomeTelephone( wxCommandEvent& event );
169                 void AddHomeLanguage( wxCommandEvent& event );
170                 void ModifyHomeLanguage( wxCommandEvent& event );
171                 void DeleteHomeLanguage( wxCommandEvent& event );
172                 void AddHomeTimezone( wxCommandEvent& event );
173                 void ModifyHomeTimezone( wxCommandEvent& event );
174                 void DeleteHomeTimezone( wxCommandEvent& event );
175                 void AddHomeGeoposition( wxCommandEvent& event );
176                 void ModifyHomeGeoposition( wxCommandEvent& event );
177                 void DeleteHomeGeoposition( wxCommandEvent& event );
178                 void AddHomeRelated( wxCommandEvent& event );
179                 void ModifyHomeRelated( wxCommandEvent& event );
180                 void DeleteHomeRelated( wxCommandEvent& event );
181                 void AddHomeWebsite( wxCommandEvent& event );
182                 void ModifyHomeWebsite( wxCommandEvent& event );
183                 void DeleteHomeWebsite( wxCommandEvent& event );
184                 void AddHomeTitle( wxCommandEvent& event );
185                 void ModifyHomeTitle( wxCommandEvent& event );
186                 void DeleteHomeTitle( wxCommandEvent& event );
187                 void AddHomeRole( wxCommandEvent& event );
188                 void ModifyHomeRole( wxCommandEvent& event );
189                 void DeleteHomeRole( wxCommandEvent& event );
190                 void MoveHomeRoleUp( wxCommandEvent& event );
191                 void MoveHomeRoleDown( wxCommandEvent& event );
192                 void AddHomeOrganisation( wxCommandEvent& event );
193                 void ModifyHomeOrganisation( wxCommandEvent& event );
194                 void DeleteHomeOrganisation( wxCommandEvent& event );
195                 void MoveHomeOrganisationUp( wxCommandEvent& event );
196                 void MoveHomeOrganisationDown( wxCommandEvent& event );
197                 void AddHomeNote( wxCommandEvent& event );
198                 void ModifyHomeNote( wxCommandEvent& event );
199                 void DeleteHomeNote( wxCommandEvent& event );
200                 void MoveHomeNoteUp( wxCommandEvent& event );
201                 void MoveHomeNoteDown( wxCommandEvent& event );
202                 void AddBusinessAddress( wxCommandEvent& event );
203                 void ModifyBusinessAddress( wxCommandEvent& event );
204                 void DeleteBusinessAddress( wxCommandEvent& event );
205                 void AddBusinessEmail( wxCommandEvent& event );
206                 void ModifyBusinessEmail( wxCommandEvent& event );
207                 void DeleteBusinessEmail( wxCommandEvent& event );
208                 void AddBusinessIM( wxCommandEvent& event );
209                 void ModifyBusinessIM( wxCommandEvent& event );
210                 void DeleteBusinessIM( wxCommandEvent& event );
211                 void AddBusinessTelephone( wxCommandEvent& event );
212                 void ModifyBusinessTelephone( wxCommandEvent& event );
213                 void DeleteBusinessTelephone( wxCommandEvent& event );
214                 void AddBusinessLanguage( wxCommandEvent& event );
215                 void ModifyBusinessLanguage( wxCommandEvent& event );
216                 void DeleteBusinessLanguage( wxCommandEvent& event );
217                 void AddBusinessTimezone( wxCommandEvent& event );
218                 void ModifyBusinessTimezone( wxCommandEvent& event );
219                 void DeleteBusinessTimezone( wxCommandEvent& event );
220                 void AddBusinessGeoposition( wxCommandEvent& event );
221                 void ModifyBusinessGeoposition( wxCommandEvent& event );
222                 void DeleteBusinessGeoposition( wxCommandEvent& event );
223                 void AddBusinessRelated( wxCommandEvent& event );
224                 void ModifyBusinessRelated( wxCommandEvent& event );
225                 void DeleteBusinessRelated( wxCommandEvent& event );
226                 void AddBusinessWebsite( wxCommandEvent& event );
227                 void ModifyBusinessWebsite( wxCommandEvent& event );
228                 void DeleteBusinessWebsite( wxCommandEvent& event );
229                 void AddBusinessTitle( wxCommandEvent& event );
230                 void ModifyBusinessTitle( wxCommandEvent& event );
231                 void DeleteBusinessTitle( wxCommandEvent& event );
232                 void MoveBusinessTitleUp( wxCommandEvent& event );
233                 void MoveBusinessTitleDown( wxCommandEvent& event );
234                 void AddBusinessRole( wxCommandEvent& event );
235                 void ModifyBusinessRole( wxCommandEvent& event );
236                 void DeleteBusinessRole( wxCommandEvent& event );
237                 void MoveBusinessRoleUp( wxCommandEvent& event );
238                 void MoveBusinessRoleDown( wxCommandEvent& event );
239                 void AddBusinessOrganisation( wxCommandEvent& event );
240                 void ModifyBusinessOrganisation( wxCommandEvent& event );
241                 void DeleteBusinessOrganisation( wxCommandEvent& event );
242                 void MoveBusinessOrganisationUp( wxCommandEvent& event );
243                 void MoveBusinessOrganisationDown( wxCommandEvent& event );
244                 void AddBusinessNote( wxCommandEvent& event );
245                 void ModifyBusinessNote( wxCommandEvent& event );
246                 void DeleteBusinessNote( wxCommandEvent& event );
247                 void MoveBusinessNoteUp( wxCommandEvent& event );
248                 void MoveBusinessNoteDown( wxCommandEvent& event );
249                 void AddCategory( wxCommandEvent& event );
250                 void ModifyCategory( wxCommandEvent& event );
251                 void DeleteCategory( wxCommandEvent& event );
252                 void AddGroup( wxCommandEvent& event );
253                 void ModifyGroup( wxCommandEvent& event );
254                 void DeleteGroup( wxCommandEvent& event );
255                 void AddPicture( wxCommandEvent& event );
256                 void ModifyPicture( wxCommandEvent& event );
257                 void DeletePicture( wxCommandEvent& event );
258                 void LoadPicture( wxListEvent& event );
259                 void SavePicture( wxCommandEvent& event);
260                 void AddLogo( wxCommandEvent& event );
261                 void ModifyLogo( wxCommandEvent& event );
262                 void DeleteLogo( wxCommandEvent& event );               
263                 void LoadLogo( wxListEvent& event );
264                 void SaveLogo( wxCommandEvent& event);  
265                 void AddSound( wxCommandEvent& event );
266                 void ModifySound( wxCommandEvent& event );
267                 void DeleteSound( wxCommandEvent& event );
268                 void SaveSound( wxCommandEvent& event); 
269                 void PlaySoundDetach();
270                 void PlaySound( wxCommandEvent& event );
271                 void StopSound( wxCommandEvent& event );
272                 void AddCalendarAddress( wxCommandEvent& event );
273                 void ModifyCalendarAddress( wxCommandEvent& event );
274                 void DeleteCalendarAddress( wxCommandEvent& event );
275                 void AddCalendarRequest( wxCommandEvent& event );
276                 void ModifyCalendarRequest( wxCommandEvent& event );
277                 void DeleteCalendarRequest( wxCommandEvent& event );
278                 void AddFreeBusy( wxCommandEvent& event );
279                 void ModifyFreeBusy( wxCommandEvent& event );
280                 void DeleteFreeBusy( wxCommandEvent& event );
281                 void AddKey( wxCommandEvent& event );
282                 void ModifyKey( wxCommandEvent& event );
283                 void DeleteKey( wxCommandEvent& event );
284                 void AddVendorNamespace( wxCommandEvent& event );
285                 void ModifyVendorNamespace( wxCommandEvent& event );
286                 void DeleteVendorNamespace( wxCommandEvent& event );
287                 void MoveVendorNamespaceUp( wxCommandEvent& event );
288                 void MoveVendorNamespaceDown( wxCommandEvent& event );
289                 void AddXToken( wxCommandEvent& event );
290                 void ModifyXToken( wxCommandEvent& event );
291                 void DeleteXToken( wxCommandEvent& event );
292                 void MoveXTokenUp( wxCommandEvent& event );
293                 void MoveXTokenDown( wxCommandEvent& event );
294                 void SaveContact( wxCommandEvent& event );
295                 void SaveCloseContact( wxCommandEvent& event );
296                 void CloseContact( wxCommandEvent& event );
297                 void CloseWindow( wxCloseEvent& event );
298                 void CutText( wxCommandEvent& event );
299                 void CopyText( wxCommandEvent& event );
300                 void PasteText( wxCommandEvent& event );
301                 void SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl);
302                 void UpdateMembersTab( wxCommandEvent &event );
303                 void UpdateDisplayAs( wxCommandEvent &event );
304                 void UpdateName( wxCommandEvent &event );
305                 bool GetSelectedItem(wxListCtrl *ListCtrlPtr, 
306                         long *longSelected,
307                         int *intSelectedData);
308                 int GetLastInt(std::map<int, wxString> *MapData);
309                 int GetLastInt(std::map<int, std::string> *MapData);
310                 bool ProcessEvent(wxEvent& event);
311         public:
312                 /** Constructor */
313                 frmContactEditor( wxWindow* parent );
314                 void SetupHeaders();
315                 void SetupContact(wxString AccountName);
316                 void SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc,
317                                         frmMain *MainPtrInc);
318                 bool LoadContact(wxString Filename);
319                 void SetMode(bool StartupEditMode);
320                 void SetUID(int UID);
321         private:
322         
323                 void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData);
324                 void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
325                 void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
326                 void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
328                 void DeleteMapDataB () {} ;
329         
330                 template<typename MapData, typename... Args>
331                 void DeleteMapDataB(MapData* mapdata, Args*... args) {
333                         DeleteMapDataProcess(intSeekSelectedData, mapdata);
334                         DeleteMapDataB(args...);
336                 }
338                 template<typename... Args>
339                 void DeleteMapData(int IndexNum, Args*... args) {
341                         //int intSeekSelectedData = 0;
343                         //DeleteMapDataProcess(IndexNum, Moo);
345                         intSeekSelectedData = IndexNum;
346                         DeleteMapDataB(args...);
347         
348                 }
350                 void ProcessSaveDataProc(wxString PropName,
351                                 std::map<int,int>* MapData);
352                 void ProcessSaveDataProc(wxString PropName,
353                                 std::map<int,wxString>* MapData);
354                 void ProcessSaveDataStrProc(wxString PropName,
355                                 std::map<int,int>* MapData);
356                 void ProcessSaveDataStrProc(wxString PropName,
357                                 std::map<int,wxString>* MapData);
358                 void ProcessSaveDataStrProc(wxString PropName,
359                                 std::map<int,std::string>* MapData);
361                 
362                 void ProcessSaveDataB () {  } ;
363                 void ProcessSaveDataC () {  } ;
364                 
365                 template<typename PropName, typename MapData, typename... Args>
366                 void ProcessSaveDataB(PropName propname, MapData* mapdata, Args*... args) {
368                         ProcessSaveDataProc(propname, mapdata);
369                         ProcessSaveDataB(args...);
370                         
371                 }
372                 
373                 template<typename PropName, typename MapData, typename... Args>
374                 void ProcessSaveDataC(PropName propname, MapData* mapdata, Args*... args) {
376                         ProcessSaveDataStrProc(propname, mapdata);
377                         ProcessSaveDataC(args...);
378                         
379                 }
381                 template<typename... Args>
382                 void ProcessSaveData(wxString strPropertyName,
383                         wxString *strPropertyInc, 
384                         bool *boolAdditionalInc, bool *boolExtraInc, 
385                         std::map<int,wxString>::iterator *iterDataInc,
386                         std::map<int,wxString> *MainMapData,
387                         std::map<int,wxString>::iterator *iterFileTypeInc,
388                         std::map<int,wxString>::iterator *iterFileEncInc,                       
389                         vCard *vCardData,
390                         Args*... args) {
392                         //int intSeekSelectedData = 0;
394                         //DeleteMapDataProcess(IndexNum, Moo);
395                         
396                         strPropertyPtr = strPropertyInc;
397                         boolAdditionalPtr = boolAdditionalInc;
398                         boolExtraPtr = boolExtraInc;
399                         iterDataPtr = iterDataInc;
400                         iterFileTypePtr = iterFileTypeInc;
401                         iterFileEncPtr = iterFileEncInc;
402                         ProcessSaveDataB(args...);
403                         
404                         std::map<int,wxString>::iterator strIter;
405                         wxString strMainValue;
406                         
407                         int intSeekData = (*iterDataStringPtr)->first;
408                         strIter = MainMapData->find(intSeekData);
409                         
410                         wxString strFileType = (*iterFileTypePtr)->second;
411                         wxString strFileEnc = (*iterFileEncPtr)->second;
412                         
413                         EscapeString(&strFileType, FALSE);
414                         EscapeString(&strFileEnc, FALSE);
416                         if (strIter->first == intSeekData){
417         
418                                 strMainValue = strIter->second;
419                                 strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
420         
421                         }
422                         
423                         if (*boolExtraPtr == TRUE){
425                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
427                         } else {
429                                 vCardData->AddRaw(strPropertyName, strMainValue);
431                         }
432                         
433                         boolExtraPtr = FALSE;
434                         iterDataPtr = 0;
435         
436                 }
438                 template<typename... Args>
439                 void ProcessSaveData(wxString strPropertyName,
440                         wxString *strPropertyInc, 
441                         bool *boolAdditionalInc, bool *boolExtraInc, 
442                         std::map<int,std::string>::iterator *iterDataInc,
443                         std::map<int,std::string> *MainMapData,
444                         std::map<int,wxString>::iterator *iterFileTypeInc,
445                         std::map<int,wxString>::iterator *iterFileEncInc,                       
446                         vCard *vCardData,
447                         Args*... args) {
449                         //int intSeekSelectedData = 0;
451                         //DeleteMapDataProcess(IndexNum, Moo);
452                         
453                         strPropertyPtr = strPropertyInc;
454                         boolAdditionalPtr = boolAdditionalInc;
455                         boolExtraPtr = boolExtraInc;
456                         iterDataStringPtr = iterDataInc;
457                         iterFileTypePtr = iterFileTypeInc;
458                         iterFileEncPtr = iterFileEncInc;                        
460                         ProcessSaveDataC(args...);
461                         
462                         std::map<int,std::string>::iterator strIter;
463                         wxString strMainValue;
464                         
465                         int intSeekData = (*iterDataStringPtr)->first;
466                         strIter = MainMapData->find(intSeekData);
467                         
468                         wxString strFileType = (*iterFileTypePtr)->second;
469                         wxString strFileEnc = (*iterFileEncPtr)->second;
471                         EscapeString(&strFileType, FALSE);
472                         EscapeString(&strFileEnc, FALSE);
474                         if (strIter->first == intSeekData){
475         
476                                 strMainValue = wxString::FromAscii(strIter->second.c_str());
477                                 strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
478         
479                         }
480                         
481                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
483                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
485                         } else {
487                                 vCardData->AddRaw(strPropertyName, strMainValue);
489                         }
490                         
491                         *boolExtraPtr = FALSE;
492                         *boolAdditionalPtr = FALSE;
493                         iterDataStringPtr = 0;
494         
495                 }
496                 
497                 template<typename... Args>
498                 void ProcessSaveData(wxString strPropertyName,
499                         wxString *strPropertyInc, 
500                         bool *boolAdditionalInc, bool *boolExtraInc, 
501                         std::map<int,wxString>::iterator *iterDataInc,
502                         std::map<int,wxString> *MainMapData,
503                         vCard *vCardData,
504                         Args*... args) {
506                         //int intSeekSelectedData = 0;
508                         //DeleteMapDataProcess(IndexNum, Moo);
509                         strPropertyPtr = strPropertyInc;
510                         boolAdditionalPtr = boolAdditionalInc;
511                         boolExtraPtr = boolExtraInc;
512                         iterDataPtr = iterDataInc;
513                         ProcessSaveDataB(args...);
514                         
515                         std::map<int,wxString>::iterator strIter;
516                         wxString strMainValue;
517                         
518                         int intSeekData = (*iterDataPtr)->first;
519                         strIter = MainMapData->find(intSeekData);
520         
521                         if (strIter->first == intSeekData){
522         
523                             strMainValue = strIter->second;
524         
525                         }
526                         
527                         EscapeString(&strMainValue, FALSE);
528                         
529                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
531                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
533                         } else {
535                                 vCardData->AddRaw(strPropertyName, strMainValue);
537                         }
538                         
539                         *boolExtraPtr = FALSE;
540                         *boolAdditionalPtr = FALSE;
541                         iterDataPtr = 0;
542         
543                 }
544                 
545                 template<typename... Args>
546                 void ProcessSaveData(wxString strPropertyName,
547                         wxString *strPropertyInc, 
548                         bool *boolAdditionalInc, bool *boolExtraInc, 
549                         std::map<int,wxString>::iterator *iterDataInc,
550                         wxString *MainData,
551                         vCard *vCardData,
552                         Args*... args) {
554                         //int intSeekSelectedData = 0;
556                         //DeleteMapDataProcess(IndexNum, Moo);
557                         strPropertyPtr = strPropertyInc;
558                         boolAdditionalPtr = boolAdditionalInc;
559                         boolExtraPtr = boolExtraInc;
560                         iterDataPtr = iterDataInc;
561                         
562                         ProcessSaveDataB(args...);
563                         
564                         std::map<int,wxString>::iterator strIter;
566                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
568                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, *MainData);
570                         } else {
572                                 vCardData->AddRaw(strPropertyName, *MainData);
574                         }
575                         
576                         *boolExtraPtr = FALSE;
577                         *boolAdditionalPtr = FALSE;
578                         iterDataPtr = 0;
579         
580                 }
582                 void ProcessCaptureStringsB () {} ;
583                 
584                 void ProcessCaptureStringsProc(wxString *strCapture);
585                 
586                 template<typename StringCapture, typename... Args>
587                 void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
589                         ProcessCaptureStringsProc(string);
590                         ProcessCaptureStringsB(args...);
592                 }
593                 
594                 template<typename... Args>
595                 void ProcessCaptureStrings(Args*... args) {
597                         //int intSeekSelectedData = 0;
599                         ProcessCaptureStringsB(args...);
600         
601                 }
602                 
603                 void ResetSaveProcessData();
604                 void ContactFileChanged( wxCommandEvent &event );
605                 void ClearContact();
606                 
607                 /* Functions for loading contacts */
608                 void LoadKind(wxString KindType);
609                 void LoadMember(wxString MemberData, int *GroupCount);
610                 void LoadFN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FNCount, 
611                         bool *FNProcessed, vCard *ContactData);
612                 void LoadN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *NameProcessed, 
613                         vCard *ContactData);
614                 void LoadNickname(wxString wxSpropertySeg1, wxString wxSPropertySeg2, 
615                         int *NicknameCount, vCard *ContactData);
616                 void LoadGender(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *GenderProcessed, 
617                         vCard *ContactData);
618                 void LoadBDay(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *BirthdayProcessed);
619                 void LoadAnniversary(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *AnniversaryProcessed);
620                 void LoadTimeZone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TZCount);
621                 void LoadADR(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
622                 void LoadEmail(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
623                 void LoadIM(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *IMPPCount);
624                 void LoadTelephone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TelCount);
625                 void LoadLanguage(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *LangCount);
626                 void LoadGeo(wxString wxSProptertySeg1, wxString wxSPropertySeg2, int *GeoCount);
627                 void LoadRelated(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RelatedCount);
628                 void LoadURL(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *URLCount);
629                 void LoadTitle(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TitleCount);
630                 void LoadRole(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RoleCount);
631                 void LoadOrg(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *OrgCount);
632                 void LoadNote(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *NoteCount);
633                 void LoadCategory(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CategoryCount);
634                 void LoadPhoto(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
635                 void LoadLogo(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
636                 void LoadSound(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *SoundCount);
637                 void LoadCalURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalAdrCount);
638                 void LoadCalAdrURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalReqAdrCount);
639                 void LoadCalFreeBusy(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FreeBusyCount);
640                 void LoadKey(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *KeyCount);
641                 
642                 void LoadGender(wxString *GenderComponent, wxString *GenderIdentity);
643                 void LoadBirthday(wxString *BirthdayData, bool *BirthdayText);
644                 void LoadAnniversary(wxString *AnniversaryData, bool *AnniversaryText);
645         
646                 int intValueSeek = 1;
647                 bool IsGroup = FALSE;
648         
649                 /* Items on General Tab */
650         
651                 ContactDataObject ContactEditorData;
652         
653                 wxString NameTitle;
654                 wxString NameForename;
655                 wxString NameSurname;
656                 wxString NameOtherNames;
657                 wxString NameSuffix;
658                 wxString NameNickname;
659                 wxString NameDisplayAs;
660                 wxString NameLanguage;
661                 wxString NameAltID;
662                 wxString NameTokens;
663                 
664                 wxString Birthday;
665                 wxString BirthdayAltID;
666                 wxString BirthdayCalScale;
667                 wxString BirthdayTokens;
668                 wxString Anniversary;
669                 wxString AnniversaryAltID;
670                 wxString AnniversaryCalScale;
671                 wxString AnniversaryTokens;
672                 
673                 wxString Gender;
674                 wxString GenderDetails;
675                 wxString GenderTokens;
676                 
677                 wxString UIDToken;
679                 /* We don't use these at the moment but we want to keep
680                   them for compatability reasons */
682                 /*std::map<int, wxString> ExtraFullNames;*/
683                 /*std::map<int, wxString> ExtraNicknames;*/
684         
685                 std::map<int, wxString> FullNamesList;  
686                 std::map<int, wxString> FullNamesListType;
687                 std::map<int, wxString> FullNamesListLanguage;
688                 std::map<int, wxString> FullNamesListAltID;
689                 std::map<int, wxString> FullNamesListPID;
690                 std::map<int, wxString> FullNamesListTokens;
691                 std::map<int, int> FullNamesListPref;
692                 
693                 std::map<int, wxString> GeneralNicknamesList;
694                 std::map<int, wxString> GeneralNicknamesListType;
695                 std::map<int, wxString> GeneralNicknamesListLanguage;
696                 std::map<int, wxString> GeneralNicknamesListAltID;
697                 std::map<int, wxString> GeneralNicknamesListPID;
698                 std::map<int, wxString> GeneralNicknamesListTokens;             
699                 std::map<int, int> GeneralNicknamesListPref;            
700         
701                 std::map<int, wxString> GeneralAddressList;
702                 std::map<int, wxString> GeneralAddressListTown;
703                 std::map<int, wxString> GeneralAddressListCounty;
704                 std::map<int, wxString> GeneralAddressListPostCode;
705                 std::map<int, wxString> GeneralAddressListCountry;
706                 std::map<int, wxString> GeneralAddressListLabel;
707                 std::map<int, wxString> GeneralAddressListLang;         
708                 std::map<int, wxString> GeneralAddressListAltID;
709                 std::map<int, wxString> GeneralAddressListPID;
710                 std::map<int, wxString> GeneralAddressListTokens;
711                 std::map<int, wxString> GeneralAddressListGeo;
712                 std::map<int, wxString> GeneralAddressListTimezone;             
713                 std::map<int, wxString> GeneralAddressListType;
714                 std::map<int, wxString> GeneralAddressListMediatype;
715                 std::map<int, int> GeneralAddressListPref;
716                 
717                 std::map<int, wxString> GeneralEmailList;
718                 std::map<int, wxString> GeneralEmailListAltID;
719                 std::map<int, wxString> GeneralEmailListPID;
720                 std::map<int, wxString> GeneralEmailListType;
721                 std::map<int, wxString> GeneralEmailListTokens;
722                 std::map<int, int> GeneralEmailListPref;
723                 
724                 std::map<int, wxString> GeneralIMList;
725                 std::map<int, wxString> GeneralIMListAltID;
726                 std::map<int, wxString> GeneralIMListPID;
727                 std::map<int, wxString> GeneralIMListType;
728                 std::map<int, wxString> GeneralIMListTokens;
729                 std::map<int, wxString> GeneralIMListMediatype;
730                 std::map<int, int> GeneralIMListPref;
731                 
732                 std::map<int, wxString> GeneralTelephoneList;
733                 std::map<int, wxString> GeneralTelephoneListAltID;
734                 std::map<int, wxString> GeneralTelephoneListPID;
735                 std::map<int, wxString> GeneralTelephoneListType;
736                 std::map<int, wxString> GeneralTelephoneListTokens;
737                 std::map<int, int> GeneralTelephoneListPref;
738                 
739                 std::map<int, wxString> GeneralLanguageList;
740                 std::map<int, wxString> GeneralLanguageListAltID;
741                 std::map<int, wxString> GeneralLanguageListPID;
742                 std::map<int, wxString> GeneralLanguageListType;
743                 std::map<int, wxString> GeneralLanguageListTokens;
744                 std::map<int, int> GeneralLanguageListPref;
745                 
746                 std::map<int, wxString> GeneralTZList;
747                 std::map<int, wxString> GeneralTZListAltID;
748                 std::map<int, wxString> GeneralTZListPID;
749                 std::map<int, wxString> GeneralTZListType;
750                 std::map<int, wxString> GeneralTZListTokens;
751                 std::map<int, wxString> GeneralTZListMediatype;
752                 std::map<int, int> GeneralTZListPref;
753                 
754                 std::map<int, wxString> GeneralGeographyList;
755                 std::map<int, wxString> GeneralGeographyListAltID;
756                 std::map<int, wxString> GeneralGeographyListPID;
757                 std::map<int, wxString> GeneralGeographyListType;
758                 std::map<int, wxString> GeneralGeographyListTokens;
759                 std::map<int, wxString> GeneralGeographyListMediatype;
760                 std::map<int, int> GeneralGeographyListPref;
761         
762                 std::map<int, wxString> GeneralRelatedList;
763                 std::map<int, wxString> GeneralRelatedListRelType;
764                 std::map<int, wxString> GeneralRelatedListLanguage;
765                 std::map<int, wxString> GeneralRelatedListAltID;
766                 std::map<int, wxString> GeneralRelatedListPID;
767                 std::map<int, wxString> GeneralRelatedListType;
768                 std::map<int, wxString> GeneralRelatedListTokens;
769                 std::map<int, int> GeneralRelatedListPref;
770                 
771                 std::map<int, wxString> GeneralWebsiteList;
772                 std::map<int, wxString> GeneralWebsiteListAltID;
773                 std::map<int, wxString> GeneralWebsiteListPID;
774                 std::map<int, wxString> GeneralWebsiteListType;
775                 std::map<int, wxString> GeneralWebsiteListTokens;
776                 std::map<int, wxString> GeneralWebsiteListMediatype;
777                 std::map<int, int> GeneralWebsiteListPref;
778                 
779                 std::map<int, wxString> GeneralTitleList;
780                 std::map<int, wxString> GeneralTitleListLanguage;               
781                 std::map<int, wxString> GeneralTitleListAltID;
782                 std::map<int, wxString> GeneralTitleListPID;
783                 std::map<int, wxString> GeneralTitleListType;
784                 std::map<int, wxString> GeneralTitleListTokens;
785                 std::map<int, int> GeneralTitleListPref;
786                 
787                 std::map<int, wxString> GeneralRoleList;
788                 std::map<int, wxString> GeneralRoleListLanguage;                
789                 std::map<int, wxString> GeneralRoleListAltID;
790                 std::map<int, wxString> GeneralRoleListPID;
791                 std::map<int, wxString> GeneralRoleListType;
792                 std::map<int, wxString> GeneralRoleListTokens;
793                 std::map<int, int> GeneralRoleListPref;
794                 
795                 std::map<int, wxString> GeneralOrganisationsList;
796                 std::map<int, wxString> GeneralOrganisationsListLanguage;               
797                 std::map<int, wxString> GeneralOrganisationsListAltID;
798                 std::map<int, wxString> GeneralOrganisationsListPID;
799                 std::map<int, wxString> GeneralOrganisationsListType;
800                 std::map<int, wxString> GeneralOrganisationsListTokens;
801                 std::map<int, wxString> GeneralOrganisationsListSortAs;
802                 std::map<int, int> GeneralOrganisationsListPref;
803         
804                 std::map<int, wxString> GeneralNoteList;
805                 std::map<int, wxString> GeneralNoteListLanguage;                
806                 std::map<int, wxString> GeneralNoteListAltID;
807                 std::map<int, wxString> GeneralNoteListPID;
808                 std::map<int, wxString> GeneralNoteListType;
809                 std::map<int, wxString> GeneralNoteListTokens;
810                 std::map<int, int> GeneralNoteListPref;
811                 
812                 /* Items on Home Tab */         
813                 
814                 std::map<int, wxString> HomeNicknamesList;
815                 std::map<int, wxString> HomeNicknamesListType;
816                 std::map<int, wxString> HomeNicknamesListLanguage;
817                 std::map<int, wxString> HomeNicknamesListAltID;
818                 std::map<int, wxString> HomeNicknamesListPID;
819                 std::map<int, wxString> HomeNicknamesListTokens;                
820                 std::map<int, int> HomeNicknamesListPref;               
821                 
822                 std::map<int, wxString> HomeAddressList;
823                 std::map<int, wxString> HomeAddressListTown;
824                 std::map<int, wxString> HomeAddressListCounty;
825                 std::map<int, wxString> HomeAddressListPostCode;
826                 std::map<int, wxString> HomeAddressListCountry;
827                 std::map<int, wxString> HomeAddressListLabel;
828                 std::map<int, wxString> HomeAddressListLang;            
829                 std::map<int, wxString> HomeAddressListAltID;
830                 std::map<int, wxString> HomeAddressListPID;
831                 std::map<int, wxString> HomeAddressListTokens;
832                 std::map<int, wxString> HomeAddressListGeo;
833                 std::map<int, wxString> HomeAddressListTimezone;                
834                 std::map<int, wxString> HomeAddressListType;
835                 std::map<int, wxString> HomeAddressListMediatype;
836                 std::map<int, int> HomeAddressListPref;
837                 
838                 std::map<int, wxString> HomeEmailList;
839                 std::map<int, wxString> HomeEmailListAltID;
840                 std::map<int, wxString> HomeEmailListPID;
841                 std::map<int, wxString> HomeEmailListType;
842                 std::map<int, wxString> HomeEmailListTokens;
843                 std::map<int, int> HomeEmailListPref;
844                 
845                 std::map<int, wxString> HomeIMList;
846                 std::map<int, wxString> HomeIMListAltID;
847                 std::map<int, wxString> HomeIMListPID;
848                 std::map<int, wxString> HomeIMListType;
849                 std::map<int, wxString> HomeIMListTokens;
850                 std::map<int, wxString> HomeIMListMediatype;
851                 std::map<int, int> HomeIMListPref;
852                 
853                 std::map<int, wxString> HomeTelephoneList;
854                 std::map<int, wxString> HomeTelephoneListAltID;
855                 std::map<int, wxString> HomeTelephoneListPID;
856                 std::map<int, wxString> HomeTelephoneListType;
857                 std::map<int, wxString> HomeTelephoneListTokens;
858                 std::map<int, int> HomeTelephoneListPref;
859                 
860                 std::map<int, wxString> HomeLanguageList;
861                 std::map<int, wxString> HomeLanguageListAltID;
862                 std::map<int, wxString> HomeLanguageListPID;
863                 std::map<int, wxString> HomeLanguageListType;
864                 std::map<int, wxString> HomeLanguageListTokens;
865                 std::map<int, int> HomeLanguageListPref;
866                 
867                 std::map<int, wxString> HomeTZList;
868                 std::map<int, wxString> HomeTZListAltID;
869                 std::map<int, wxString> HomeTZListPID;
870                 std::map<int, wxString> HomeTZListType;
871                 std::map<int, wxString> HomeTZListTokens;
872                 std::map<int, wxString> HomeTZListMediatype;
873                 std::map<int, int> HomeTZListPref;
874                 
875                 std::map<int, wxString> HomeGeographyList;
876                 std::map<int, wxString> HomeGeographyListAltID;
877                 std::map<int, wxString> HomeGeographyListPID;
878                 std::map<int, wxString> HomeGeographyListType;
879                 std::map<int, wxString> HomeGeographyListTokens;
880                 std::map<int, wxString> HomeGeographyListMediatype;
881                 std::map<int, int> HomeGeographyListPref;
882                 
883                 std::map<int, wxString> HomeRelatedList;
884                 std::map<int, wxString> HomeRelatedListRelType;
885                 std::map<int, wxString> HomeRelatedListLanguage;
886                 std::map<int, wxString> HomeRelatedListAltID;
887                 std::map<int, wxString> HomeRelatedListPID;
888                 std::map<int, wxString> HomeRelatedListType;
889                 std::map<int, wxString> HomeRelatedListTokens;
890                 std::map<int, int> HomeRelatedListPref;         
891                 
892                 std::map<int, wxString> HomeWebsiteList;
893                 std::map<int, wxString> HomeWebsiteListAltID;
894                 std::map<int, wxString> HomeWebsiteListPID;
895                 std::map<int, wxString> HomeWebsiteListType;
896                 std::map<int, wxString> HomeWebsiteListTokens;
897                 std::map<int, wxString> HomeWebsiteListMediatype;
898                 std::map<int, int> HomeWebsiteListPref;
899                 
900                 std::map<int, wxString> HomeTitleList;
901                 std::map<int, wxString> HomeTitleListLanguage;
902                 std::map<int, wxString> HomeTitleListAltID;
903                 std::map<int, wxString> HomeTitleListPID;
904                 std::map<int, wxString> HomeTitleListType;
905                 std::map<int, wxString> HomeTitleListTokens;
906                 std::map<int, int> HomeTitleListPref;
907                 
908                 std::map<int, wxString> HomeRoleList;
909                 std::map<int, wxString> HomeRoleListLanguage;           
910                 std::map<int, wxString> HomeRoleListAltID;
911                 std::map<int, wxString> HomeRoleListPID;
912                 std::map<int, wxString> HomeRoleListType;
913                 std::map<int, wxString> HomeRoleListTokens;
914                 std::map<int, int> HomeRoleListPref;
915                 
916                 std::map<int, wxString> HomeOrganisationsList;
917                 std::map<int, wxString> HomeOrganisationsListLanguage;          
918                 std::map<int, wxString> HomeOrganisationsListAltID;
919                 std::map<int, wxString> HomeOrganisationsListPID;
920                 std::map<int, wxString> HomeOrganisationsListType;
921                 std::map<int, wxString> HomeOrganisationsListTokens;
922                 std::map<int, wxString> HomeOrganisationsListSortAs;
923                 std::map<int, int> HomeOrganisationsListPref;
924                 
925                 std::map<int, wxString> HomeNoteList;
926                 std::map<int, wxString> HomeNoteListLanguage;           
927                 std::map<int, wxString> HomeNoteListAltID;
928                 std::map<int, wxString> HomeNoteListPID;
929                 std::map<int, wxString> HomeNoteListType;
930                 std::map<int, wxString> HomeNoteListTokens;
931                 std::map<int, int> HomeNoteListPref;            
932         
933                 /* Items on the Business tab */
934                 
935                 std::map<int, wxString> BusinessNicknamesList;
936                 std::map<int, wxString> BusinessNicknamesListType;
937                 std::map<int, wxString> BusinessNicknamesListLanguage;
938                 std::map<int, wxString> BusinessNicknamesListAltID;
939                 std::map<int, wxString> BusinessNicknamesListPID;
940                 std::map<int, wxString> BusinessNicknamesListTokens;            
941                 std::map<int, int> BusinessNicknamesListPref;           
942                 
943                 std::map<int, wxString> BusinessAddressList;
944                 std::map<int, wxString> BusinessAddressListTown;
945                 std::map<int, wxString> BusinessAddressListCounty;
946                 std::map<int, wxString> BusinessAddressListPostCode;
947                 std::map<int, wxString> BusinessAddressListCountry;
948                 std::map<int, wxString> BusinessAddressListLabel;
949                 std::map<int, wxString> BusinessAddressListLang;                
950                 std::map<int, wxString> BusinessAddressListAltID;
951                 std::map<int, wxString> BusinessAddressListPID;
952                 std::map<int, wxString> BusinessAddressListTokens;
953                 std::map<int, wxString> BusinessAddressListGeo;
954                 std::map<int, wxString> BusinessAddressListTimezone;            
955                 std::map<int, wxString> BusinessAddressListType;
956                 std::map<int, wxString> BusinessAddressListMediatype;
957                 std::map<int, int> BusinessAddressListPref;
958                 
959                 std::map<int, wxString> BusinessEmailList;
960                 std::map<int, wxString> BusinessEmailListAltID;
961                 std::map<int, wxString> BusinessEmailListPID;
962                 std::map<int, wxString> BusinessEmailListType;
963                 std::map<int, wxString> BusinessEmailListTokens;
964                 std::map<int, int> BusinessEmailListPref;
965                 
966                 std::map<int, wxString> BusinessIMList;
967                 std::map<int, wxString> BusinessIMListAltID;
968                 std::map<int, wxString> BusinessIMListPID;
969                 std::map<int, wxString> BusinessIMListType;
970                 std::map<int, wxString> BusinessIMListTokens;
971                 std::map<int, wxString> BusinessIMListMediatype;
972                 std::map<int, int> BusinessIMListPref;
973                 
974                 std::map<int, wxString> BusinessTelephoneList;
975                 std::map<int, wxString> BusinessTelephoneListAltID;
976                 std::map<int, wxString> BusinessTelephoneListPID;
977                 std::map<int, wxString> BusinessTelephoneListType;
978                 std::map<int, wxString> BusinessTelephoneListTokens;
979                 std::map<int, int> BusinessTelephoneListPref;
980                 
981                 std::map<int, wxString> BusinessLanguageList;
982                 std::map<int, wxString> BusinessLanguageListAltID;
983                 std::map<int, wxString> BusinessLanguageListPID;
984                 std::map<int, wxString> BusinessLanguageListType;
985                 std::map<int, wxString> BusinessLanguageListTokens;
986                 std::map<int, int> BusinessLanguageListPref;
987                 
988                 std::map<int, wxString> BusinessTZList;
989                 std::map<int, wxString> BusinessTZListAltID;
990                 std::map<int, wxString> BusinessTZListPID;
991                 std::map<int, wxString> BusinessTZListType;
992                 std::map<int, wxString> BusinessTZListTokens;
993                 std::map<int, wxString> BusinessTZListMediatype;
994                 std::map<int, int> BusinessTZListPref;
995                 
996                 std::map<int, wxString> BusinessGeographyList;
997                 std::map<int, wxString> BusinessGeographyListAltID;
998                 std::map<int, wxString> BusinessGeographyListPID;
999                 std::map<int, wxString> BusinessGeographyListType;
1000                 std::map<int, wxString> BusinessGeographyListTokens;
1001                 std::map<int, wxString> BusinessGeographyListMediatype;
1002                 std::map<int, int> BusinessGeographyListPref;
1003                 
1004                 std::map<int, wxString> BusinessRelatedList;
1005                 std::map<int, wxString> BusinessRelatedListRelType;
1006                 std::map<int, wxString> BusinessRelatedListLanguage;
1007                 std::map<int, wxString> BusinessRelatedListAltID;
1008                 std::map<int, wxString> BusinessRelatedListPID;
1009                 std::map<int, wxString> BusinessRelatedListType;
1010                 std::map<int, wxString> BusinessRelatedListTokens;
1011                 std::map<int, int> BusinessRelatedListPref;                     
1012                 
1013                 std::map<int, wxString> BusinessWebsiteList;
1014                 std::map<int, wxString> BusinessWebsiteListAltID;
1015                 std::map<int, wxString> BusinessWebsiteListPID;
1016                 std::map<int, wxString> BusinessWebsiteListType;
1017                 std::map<int, wxString> BusinessWebsiteListTokens;
1018                 std::map<int, wxString> BusinessWebsiteListMediatype;
1019                 std::map<int, int> BusinessWebsiteListPref;
1020                 
1021                 std::map<int, wxString> BusinessTitleList;
1022                 std::map<int, wxString> BusinessTitleListLanguage;              
1023                 std::map<int, wxString> BusinessTitleListAltID;
1024                 std::map<int, wxString> BusinessTitleListPID;
1025                 std::map<int, wxString> BusinessTitleListType;
1026                 std::map<int, wxString> BusinessTitleListTokens;
1027                 std::map<int, int> BusinessTitleListPref;
1028                 
1029                 std::map<int, wxString> BusinessRoleList;
1030                 std::map<int, wxString> BusinessRoleListLanguage;               
1031                 std::map<int, wxString> BusinessRoleListAltID;
1032                 std::map<int, wxString> BusinessRoleListPID;
1033                 std::map<int, wxString> BusinessRoleListType;
1034                 std::map<int, wxString> BusinessRoleListTokens;
1035                 std::map<int, int> BusinessRoleListPref;
1036                 
1037                 std::map<int, wxString> BusinessOrganisationsList;
1038                 std::map<int, wxString> BusinessOrganisationsListLanguage;              
1039                 std::map<int, wxString> BusinessOrganisationsListAltID;
1040                 std::map<int, wxString> BusinessOrganisationsListPID;
1041                 std::map<int, wxString> BusinessOrganisationsListType;
1042                 std::map<int, wxString> BusinessOrganisationsListTokens;
1043                 std::map<int, wxString> BusinessOrganisationsListSortAs;                
1044                 std::map<int, int> BusinessOrganisationsListPref;
1045                 
1046                 std::map<int, wxString> BusinessNoteList;
1047                 std::map<int, wxString> BusinessNoteListLanguage;               
1048                 std::map<int, wxString> BusinessNoteListAltID;
1049                 std::map<int, wxString> BusinessNoteListPID;
1050                 std::map<int, wxString> BusinessNoteListType;
1051                 std::map<int, wxString> BusinessNoteListTokens;
1052                 std::map<int, int> BusinessNoteListPref;                
1053                 
1054                 /* Items on the Categories tab */
1055                 
1056                 std::map<int, wxString> CategoriesList;
1057                 std::map<int, wxString> CategoriesListAltID;
1058                 std::map<int, wxString> CategoriesListPID;
1059                 std::map<int, wxString> CategoriesListType;
1060                 std::map<int, wxString> CategoriesListTokens;
1061                 std::map<int, int> CategoriesListPref;  
1062                 
1063                 /* Items on the Groups tab */
1064                 
1065                 std::map<int, wxString> GroupsList;
1066                 std::map<int, wxString> GroupsListAltID;
1067                 std::map<int, wxString> GroupsListPID;
1068                 std::map<int, wxString> GroupsListType;
1069                 std::map<int, wxString> GroupsListTokens;
1070                 std::map<int, int> GroupsListPref;
1071                 
1072                 /* Items on the Pictures tab */
1073                 
1074                 std::map<int, std::string> PicturesList;
1075                 std::map<int, wxString> PicturesListAltID;
1076                 std::map<int, wxString> PicturesListPID;
1077                 std::map<int, wxString> PicturesListType;
1078                 std::map<int, wxString> PicturesListPicEncType;
1079                 std::map<int, wxString> PicturesListPictureType;
1080                 std::map<int, wxString> PicturesListTokens;
1081                 std::map<int, wxString> PicturesListMediatype;          
1082                 std::map<int, int> PicturesListPref;
1084                 /* Items on the Logos tab */
1085                 
1086                 std::map<int, std::string> LogosList;
1087                 std::map<int, wxString> LogosListAltID;
1088                 std::map<int, wxString> LogosListPID;
1089                 std::map<int, wxString> LogosListType;
1090                 std::map<int, wxString> LogosListPicEncType;            
1091                 std::map<int, wxString> LogosListPictureType;
1092                 std::map<int, wxString> LogosListTokens;
1093                 std::map<int, wxString> LogosListMediatype;             
1094                 std::map<int, int> LogosListPref;
1095                 
1096                 /* Items on the Sounds tab */
1097                 
1098                 std::map<int, std::string> SoundsList;
1099                 std::map<int, wxString> SoundsListAltID;
1100                 std::map<int, wxString> SoundsListPID;
1101                 std::map<int, wxString> SoundsListType;
1102                 std::map<int, wxString> SoundsListAudioEncType;         
1103                 std::map<int, wxString> SoundsListAudioType;            
1104                 std::map<int, wxString> SoundsListTokens;
1105                 std::map<int, wxString> SoundsListMediatype;            
1106                 std::map<int, int> SoundsListPref;      
1107                 
1108                 /* Items on the Calendaring tab */
1109                 
1110                 std::map<int, wxString> CalendarList;
1111                 std::map<int, wxString> CalendarListAltID;
1112                 std::map<int, wxString> CalendarListPID;
1113                 std::map<int, wxString> CalendarListType;
1114                 std::map<int, wxString> CalendarListTokens;
1115                 std::map<int, wxString> CalendarListMediatype;          
1116                 std::map<int, int> CalendarListPref;
1117                 
1118                 std::map<int, wxString> CalendarRequestList;
1119                 std::map<int, wxString> CalendarRequestListAltID;
1120                 std::map<int, wxString> CalendarRequestListPID;
1121                 std::map<int, wxString> CalendarRequestListType;
1122                 std::map<int, wxString> CalendarRequestListTokens;
1123                 std::map<int, wxString> CalendarRequestListMediatype;           
1124                 std::map<int, int> CalendarRequestListPref;             
1125                                 
1126                 std::map<int, wxString> FreeBusyList;
1127                 std::map<int, wxString> FreeBusyListAltID;
1128                 std::map<int, wxString> FreeBusyListPID;
1129                 std::map<int, wxString> FreeBusyListType;
1130                 std::map<int, wxString> FreeBusyListTokens;
1131                 std::map<int, wxString> FreeBusyListMediatype;          
1132                 std::map<int, int> FreeBusyListPref;
1133                 
1134                 /* Items on the Security tab */
1135                 
1136                 std::map<int, wxString> KeyList;
1137                 std::map<int, wxString> KeyListAltID;
1138                 std::map<int, wxString> KeyListPID;
1139                 std::map<int, bool> KeyListKeyType;             
1140                 std::map<int, wxString> KeyListDataType;                
1141                 std::map<int, wxString> KeyListDataEncType;
1142                 std::map<int, wxString> KeyListType;
1143                 std::map<int, wxString> KeyListTokens;
1144                 std::map<int, int> KeyListPref;
1145                 
1146                 /* Items on the Other tab */
1147                 
1148                 std::map<int, wxString> VendorList;
1149                 std::map<int, wxString> VendorListPEN;
1150                 std::map<int, wxString> VendorListElement;
1151                 
1152                 std::map<int, wxString> XTokenList;             
1153                 std::map<int, wxString> XTokenListTokens;                       
1154         
1155                 /* Items regarding account and filename */
1156                 
1157                 wxString wxSContactFilename;
1158                 wxString wxSContactAccount;
1159                 bool boolContactModified;
1160                 int intSeekSelectedData;
1161                 
1162                 /* Section for saving/loading data */
1163                 
1164                 wxString *strPropertyPtr;
1165                 bool *boolAdditionalPtr;
1166                 bool *boolExtraPtr;
1167                 std::map<int,wxString>::iterator *iterDataPtr = 0;
1168                 std::map<int,std::string>::iterator *iterDataStringPtr = 0;
1169                 std::map<int,wxString>::iterator *iterFileTypePtr = 0;
1170                 std::map<int,wxString>::iterator *iterFileEncPtr = 0;
1171                 
1172                 wxString ETag;
1173                 wxString ETagOriginal;
1174                 
1175                 wxString strValue;
1176                 wxString strValue2;
1177                 wxString strValue3;
1179                 bool boolValue = FALSE;
1180                 bool boolValue2 = FALSE;
1181                 size_t intValue = 0;
1182                 int intValue2 = 0;
1183                 int intValue3 = 0;
1184                 bool BinaryDataProc = FALSE;
1185                 bool EditMode = FALSE;
1186                 bool StartupEditMode = FALSE;
1187                 bool DialogOpen = FALSE;
1188                 
1189                 /*
1190                 std::string base64dec;
1191                 sf::Sound AudioPlayback;
1192                 sf::SoundBuffer AudioBuffer;
1193                 */
1194                 
1195                 size_t base64declen;
1196                 std::string base64dec;
1197                 sf::Music AudioPlayback;
1198                 AudioStream AudioStreamPlayback;
1199                 sf::SoundBuffer AudioBuffer;
1200                 
1201                 wxBitmap PictureImage;
1202                 wxBitmap LogoImage;
1203                 
1204                 void SplitValues(wxString *PropertyLine,
1205                         std::map<int,int> *SplitPoints, 
1206                         std::map<int,int> *SplitLength, 
1207                         int intSize);
1208                 
1209                 frmMain *MainPtr;
1210                 frmActivityMgr *ActMgrPtr;
1211                 wxETagProcessTimer *ETagTmrPtr;
1212                 wxContactFileMonitorTimer FMTimer;
1213                 
1214                 int ContactEditorUID;
1215                 
1216                 DECLARE_EVENT_TABLE()
1217         
1218         //// end generated class members
1219         
1220 };
1222 #endif // __frmContactEditor__
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