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