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