Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Header for adding the save routines for pictures, logos and sounds.
[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 SavePicture( wxCommandEvent& event);
315                 void AddLogo( wxCommandEvent& event );
316                 void ModifyLogo( wxCommandEvent& event );
317                 void DeleteLogo( wxCommandEvent& event );               
318                 void LoadLogo( wxListEvent& event );
319                 void SaveLogo( wxCommandEvent& event);  
320                 void AddSound( wxCommandEvent& event );
321                 void ModifySound( wxCommandEvent& event );
322                 void DeleteSound( wxCommandEvent& event );
323                 void SaveSound( wxCommandEvent& event); 
324                 void PlaySoundDetach();
325                 void PlaySound( wxCommandEvent& event );
326                 void StopSound( wxCommandEvent& event );
327                 void AddCalendarAddress( wxCommandEvent& event );
328                 void ModifyCalendarAddress( wxCommandEvent& event );
329                 void DeleteCalendarAddress( wxCommandEvent& event );
330                 void AddCalendarRequest( wxCommandEvent& event );
331                 void ModifyCalendarRequest( wxCommandEvent& event );
332                 void DeleteCalendarRequest( wxCommandEvent& event );
333                 void AddFreeBusy( wxCommandEvent& event );
334                 void ModifyFreeBusy( wxCommandEvent& event );
335                 void DeleteFreeBusy( wxCommandEvent& event );
336                 void AddKey( wxCommandEvent& event );
337                 void ModifyKey( wxCommandEvent& event );
338                 void DeleteKey( wxCommandEvent& event );
339                 void AddVendorNamespace( wxCommandEvent& event );
340                 void ModifyVendorNamespace( wxCommandEvent& event );
341                 void DeleteVendorNamespace( wxCommandEvent& event );
342                 void MoveVendorNamespaceUp( wxCommandEvent& event );
343                 void MoveVendorNamespaceDown( wxCommandEvent& event );
344                 void AddXToken( wxCommandEvent& event );
345                 void ModifyXToken( wxCommandEvent& event );
346                 void DeleteXToken( wxCommandEvent& event );
347                 void MoveXTokenUp( wxCommandEvent& event );
348                 void MoveXTokenDown( wxCommandEvent& event );
349                 void SaveContact( wxCommandEvent& event );
350                 void SaveCloseContact( wxCommandEvent& event );
351                 void CloseContact( wxCommandEvent& event );
352                 void CloseWindow( wxCloseEvent& event );
353                 void CutText( wxCommandEvent& event );
354                 void CopyText( wxCommandEvent& event );
355                 void PasteText( wxCommandEvent& event );
356                 void SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl);
357                 void UpdateMembersTab( wxCommandEvent &event );
358                 void UpdateDisplayAs( wxCommandEvent &event );
359                 void UpdateName( wxCommandEvent &event );
360                 bool GetSelectedItem(wxListCtrl *ListCtrlPtr, 
361                         long *longSelected,
362                         int *intSelectedData);
363                 int GetLastInt(std::map<int, wxString> *MapData);
364                 int GetLastInt(std::map<int, std::string> *MapData);
365                 bool ProcessEvent(wxEvent& event);
366         public:
367                 /** Constructor */
368                 frmContactEditor( wxWindow* parent );
369                 void SetupHeaders();
370                 void SetupContact(wxString AccountName);
371                 void SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc,
372                                         frmMain *MainPtrInc);
373                 bool LoadContact(wxString Filename);
374                 void SetMode(bool StartupEditMode);
375                 void SetUID(int UID);
376         private:
377         
378                 void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData);
379                 void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
380                 void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
381                 void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
383                 void DeleteMapDataB () {} ;
384         
385                 template<typename MapData, typename... Args>
386                 void DeleteMapDataB(MapData* mapdata, Args*... args) {
388                         DeleteMapDataProcess(intSeekSelectedData, mapdata);
389                         DeleteMapDataB(args...);
391                 }
393                 template<typename... Args>
394                 void DeleteMapData(int IndexNum, Args*... args) {
396                         //int intSeekSelectedData = 0;
398                         //DeleteMapDataProcess(IndexNum, Moo);
400                         intSeekSelectedData = IndexNum;
401                         DeleteMapDataB(args...);
402         
403                 }
405                 void ProcessSaveDataProc(wxString PropName,
406                                 std::map<int,int>* MapData);
407                 void ProcessSaveDataProc(wxString PropName,
408                                 std::map<int,wxString>* MapData);
409                 void ProcessSaveDataStrProc(wxString PropName,
410                                 std::map<int,int>* MapData);
411                 void ProcessSaveDataStrProc(wxString PropName,
412                                 std::map<int,wxString>* MapData);
413                 void ProcessSaveDataStrProc(wxString PropName,
414                                 std::map<int,std::string>* MapData);
416                 
417                 void ProcessSaveDataB () {  } ;
418                 void ProcessSaveDataC () {  } ;
419                 
420                 template<typename PropName, typename MapData, typename... Args>
421                 void ProcessSaveDataB(PropName propname, MapData* mapdata, Args*... args) {
423                         ProcessSaveDataProc(propname, mapdata);
424                         ProcessSaveDataB(args...);
425                         
426                 }
427                 
428                 template<typename PropName, typename MapData, typename... Args>
429                 void ProcessSaveDataC(PropName propname, MapData* mapdata, Args*... args) {
431                         ProcessSaveDataStrProc(propname, mapdata);
432                         ProcessSaveDataC(args...);
433                         
434                 }
436                 template<typename... Args>
437                 void ProcessSaveData(wxString strPropertyName,
438                         wxString *strPropertyInc, 
439                         bool *boolAdditionalInc, bool *boolExtraInc, 
440                         std::map<int,wxString>::iterator *iterDataInc,
441                         std::map<int,wxString> *MainMapData,
442                         std::map<int,wxString>::iterator *iterFileTypeInc,
443                         std::map<int,wxString>::iterator *iterFileEncInc,                       
444                         vCard *vCardData,
445                         Args*... args) {
447                         //int intSeekSelectedData = 0;
449                         //DeleteMapDataProcess(IndexNum, Moo);
450                         
451                         strPropertyPtr = strPropertyInc;
452                         boolAdditionalPtr = boolAdditionalInc;
453                         boolExtraPtr = boolExtraInc;
454                         iterDataPtr = iterDataInc;
455                         iterFileTypePtr = iterFileTypeInc;
456                         iterFileEncPtr = iterFileEncInc;
457                         ProcessSaveDataB(args...);
458                         
459                         std::map<int,wxString>::iterator strIter;
460                         wxString strMainValue;
461                         
462                         int intSeekData = (*iterDataStringPtr)->first;
463                         strIter = MainMapData->find(intSeekData);
464                         
465                         wxString strFileType = (*iterFileTypePtr)->second;
466                         wxString strFileEnc = (*iterFileEncPtr)->second;
467                         
468                         EscapeString(&strFileType, FALSE);
469                         EscapeString(&strFileEnc, FALSE);
471                         if (strIter->first == intSeekData){
472         
473                                 strMainValue = strIter->second;
474                                 strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
475         
476                         }
477                         
478                         if (*boolExtraPtr == TRUE){
480                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
482                         } else {
484                                 vCardData->AddRaw(strPropertyName, strMainValue);
486                         }
487                         
488                         boolExtraPtr = FALSE;
489                         iterDataPtr = 0;
490         
491                 }
493                 template<typename... Args>
494                 void ProcessSaveData(wxString strPropertyName,
495                         wxString *strPropertyInc, 
496                         bool *boolAdditionalInc, bool *boolExtraInc, 
497                         std::map<int,std::string>::iterator *iterDataInc,
498                         std::map<int,std::string> *MainMapData,
499                         std::map<int,wxString>::iterator *iterFileTypeInc,
500                         std::map<int,wxString>::iterator *iterFileEncInc,                       
501                         vCard *vCardData,
502                         Args*... args) {
504                         //int intSeekSelectedData = 0;
506                         //DeleteMapDataProcess(IndexNum, Moo);
507                         
508                         strPropertyPtr = strPropertyInc;
509                         boolAdditionalPtr = boolAdditionalInc;
510                         boolExtraPtr = boolExtraInc;
511                         iterDataStringPtr = iterDataInc;
512                         iterFileTypePtr = iterFileTypeInc;
513                         iterFileEncPtr = iterFileEncInc;                        
515                         ProcessSaveDataC(args...);
516                         
517                         std::map<int,std::string>::iterator strIter;
518                         wxString strMainValue;
519                         
520                         int intSeekData = (*iterDataStringPtr)->first;
521                         strIter = MainMapData->find(intSeekData);
522                         
523                         wxString strFileType = (*iterFileTypePtr)->second;
524                         wxString strFileEnc = (*iterFileEncPtr)->second;
526                         EscapeString(&strFileType, FALSE);
527                         EscapeString(&strFileEnc, FALSE);
529                         if (strIter->first == intSeekData){
530         
531                                 strMainValue = wxString::FromAscii(strIter->second.c_str());
532                                 strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
533         
534                         }
535                         
536                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
538                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
540                         } else {
542                                 vCardData->AddRaw(strPropertyName, strMainValue);
544                         }
545                         
546                         *boolExtraPtr = FALSE;
547                         *boolAdditionalPtr = FALSE;
548                         iterDataStringPtr = 0;
549         
550                 }
551                 
552                 template<typename... Args>
553                 void ProcessSaveData(wxString strPropertyName,
554                         wxString *strPropertyInc, 
555                         bool *boolAdditionalInc, bool *boolExtraInc, 
556                         std::map<int,wxString>::iterator *iterDataInc,
557                         std::map<int,wxString> *MainMapData,
558                         vCard *vCardData,
559                         Args*... args) {
561                         //int intSeekSelectedData = 0;
563                         //DeleteMapDataProcess(IndexNum, Moo);
564                         strPropertyPtr = strPropertyInc;
565                         boolAdditionalPtr = boolAdditionalInc;
566                         boolExtraPtr = boolExtraInc;
567                         iterDataPtr = iterDataInc;
568                         ProcessSaveDataB(args...);
569                         
570                         std::map<int,wxString>::iterator strIter;
571                         wxString strMainValue;
572                         
573                         int intSeekData = (*iterDataPtr)->first;
574                         strIter = MainMapData->find(intSeekData);
575         
576                         if (strIter->first == intSeekData){
577         
578                             strMainValue = strIter->second;
579         
580                         }
581                         
582                         EscapeString(&strMainValue, FALSE);
583                         
584                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
586                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
588                         } else {
590                                 vCardData->AddRaw(strPropertyName, strMainValue);
592                         }
593                         
594                         *boolExtraPtr = FALSE;
595                         *boolAdditionalPtr = FALSE;
596                         iterDataPtr = 0;
597         
598                 }
599                 
600                 template<typename... Args>
601                 void ProcessSaveData(wxString strPropertyName,
602                         wxString *strPropertyInc, 
603                         bool *boolAdditionalInc, bool *boolExtraInc, 
604                         std::map<int,wxString>::iterator *iterDataInc,
605                         wxString *MainData,
606                         vCard *vCardData,
607                         Args*... args) {
609                         //int intSeekSelectedData = 0;
611                         //DeleteMapDataProcess(IndexNum, Moo);
612                         strPropertyPtr = strPropertyInc;
613                         boolAdditionalPtr = boolAdditionalInc;
614                         boolExtraPtr = boolExtraInc;
615                         iterDataPtr = iterDataInc;
616                         
617                         ProcessSaveDataB(args...);
618                         
619                         std::map<int,wxString>::iterator strIter;
621                         if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
623                                 vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, *MainData);
625                         } else {
627                                 vCardData->AddRaw(strPropertyName, *MainData);
629                         }
630                         
631                         *boolExtraPtr = FALSE;
632                         *boolAdditionalPtr = FALSE;
633                         iterDataPtr = 0;
634         
635                 }
637                 void ProcessCaptureStringsB () {} ;
638                 
639                 void ProcessCaptureStringsProc(wxString *strCapture);
640                 
641                 template<typename StringCapture, typename... Args>
642                 void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
644                         ProcessCaptureStringsProc(string);
645                         ProcessCaptureStringsB(args...);
647                 }
648                 
649                 template<typename... Args>
650                 void ProcessCaptureStrings(Args*... args) {
652                         //int intSeekSelectedData = 0;
654                         ProcessCaptureStringsB(args...);
655         
656                 }
657                 
658                 void ResetSaveProcessData();
659                 void ContactFileChanged( wxCommandEvent &event );
660                 void ClearContact();
661                 
662                 /* Functions for loading contacts */
663                 void LoadKind(wxString KindType);
664                 void LoadMember(wxString MemberData, int *GroupCount);
665                 void LoadFN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FNCount, 
666                         bool *FNProcessed, vCard *ContactData);
667                 void LoadN(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *NameProcessed, 
668                         vCard *ContactData);
669                 void LoadNickname(wxString wxSpropertySeg1, wxString wxSPropertySeg2, 
670                         int *NicknameCount, vCard *ContactData);
671                 void LoadGender(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *GenderProcessed, 
672                         vCard *ContactData);
673                 void LoadBDay(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *BirthdayProcessed);
674                 void LoadAnniversary(wxString wxSPropertySeg1, wxString wxSPropertySeg2, bool *AnniversaryProcessed);
675                 void LoadTimeZone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TZCount);
676                 void LoadADR(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
677                 void LoadEmail(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *ADRCount);
678                 void LoadIM(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *IMPPCount);
679                 void LoadTelephone(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TelCount);
680                 void LoadLanguage(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *LangCount);
681                 void LoadGeo(wxString wxSProptertySeg1, wxString wxSPropertySeg2, int *GeoCount);
682                 void LoadRelated(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RelatedCount);
683                 void LoadURL(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *URLCount);
684                 void LoadTitle(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *TitleCount);
685                 void LoadRole(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *RoleCount);
686                 void LoadOrg(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *OrgCount);
687                 void LoadNote(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *NoteCount);
688                 void LoadCategory(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CategoryCount);
689                 void LoadPhoto(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
690                 void LoadLogo(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *PhotoCount);
691                 void LoadSound(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *SoundCount);
692                 void LoadCalURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalAdrCount);
693                 void LoadCalAdrURI(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *CalReqAdrCount);
694                 void LoadCalFreeBusy(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *FreeBusyCount);
695                 void LoadKey(wxString wxSPropertySeg1, wxString wxSPropertySeg2, int *KeyCount);
696         
697                 int intValueSeek = 1;
698                 bool IsGroup = FALSE;
699         
700                 /* Items on General Tab */
701         
702                 wxString NameTitle;
703                 wxString NameForename;
704                 wxString NameSurname;
705                 wxString NameOtherNames;
706                 wxString NameSuffix;
707                 wxString NameNickname;
708                 wxString NameDisplayAs;
709                 wxString NameLanguage;
710                 wxString NameAltID;
711                 wxString NameTokens;
712                 
713                 wxString Birthday;
714                 wxString BirthdayAltID;
715                 wxString BirthdayCalScale;
716                 wxString BirthdayTokens;
717                 wxString Anniversary;
718                 wxString AnniversaryAltID;
719                 wxString AnniversaryCalScale;
720                 wxString AnniversaryTokens;
721                 
722                 wxString Gender;
723                 wxString GenderDetails;
724                 wxString GenderTokens;
725                 
726                 wxString UIDToken;
728                 /* We don't use these at the moment but we want to keep
729                   them for compatability reasons */
731                 /*std::map<int, wxString> ExtraFullNames;*/
732                 /*std::map<int, wxString> ExtraNicknames;*/
733         
734                 std::map<int, wxString> FullNamesList;  
735                 std::map<int, wxString> FullNamesListType;
736                 std::map<int, wxString> FullNamesListLanguage;
737                 std::map<int, wxString> FullNamesListAltID;
738                 std::map<int, wxString> FullNamesListPID;
739                 std::map<int, wxString> FullNamesListTokens;
740                 std::map<int, int> FullNamesListPref;
741                 
742                 std::map<int, wxString> GeneralNicknamesList;
743                 std::map<int, wxString> GeneralNicknamesListType;
744                 std::map<int, wxString> GeneralNicknamesListLanguage;
745                 std::map<int, wxString> GeneralNicknamesListAltID;
746                 std::map<int, wxString> GeneralNicknamesListPID;
747                 std::map<int, wxString> GeneralNicknamesListTokens;             
748                 std::map<int, int> GeneralNicknamesListPref;            
749         
750                 std::map<int, wxString> GeneralAddressList;
751                 std::map<int, wxString> GeneralAddressListTown;
752                 std::map<int, wxString> GeneralAddressListCounty;
753                 std::map<int, wxString> GeneralAddressListPostCode;
754                 std::map<int, wxString> GeneralAddressListCountry;
755                 std::map<int, wxString> GeneralAddressListLabel;
756                 std::map<int, wxString> GeneralAddressListLang;         
757                 std::map<int, wxString> GeneralAddressListAltID;
758                 std::map<int, wxString> GeneralAddressListPID;
759                 std::map<int, wxString> GeneralAddressListTokens;
760                 std::map<int, wxString> GeneralAddressListGeo;
761                 std::map<int, wxString> GeneralAddressListTimezone;             
762                 std::map<int, wxString> GeneralAddressListType;
763                 std::map<int, wxString> GeneralAddressListMediatype;
764                 std::map<int, int> GeneralAddressListPref;
765                 
766                 std::map<int, wxString> GeneralEmailList;
767                 std::map<int, wxString> GeneralEmailListAltID;
768                 std::map<int, wxString> GeneralEmailListPID;
769                 std::map<int, wxString> GeneralEmailListType;
770                 std::map<int, wxString> GeneralEmailListTokens;
771                 std::map<int, int> GeneralEmailListPref;
772                 
773                 std::map<int, wxString> GeneralIMList;
774                 std::map<int, wxString> GeneralIMListAltID;
775                 std::map<int, wxString> GeneralIMListPID;
776                 std::map<int, wxString> GeneralIMListType;
777                 std::map<int, wxString> GeneralIMListTokens;
778                 std::map<int, wxString> GeneralIMListMediatype;
779                 std::map<int, int> GeneralIMListPref;
780                 
781                 std::map<int, wxString> GeneralTelephoneList;
782                 std::map<int, wxString> GeneralTelephoneListAltID;
783                 std::map<int, wxString> GeneralTelephoneListPID;
784                 std::map<int, wxString> GeneralTelephoneListType;
785                 std::map<int, wxString> GeneralTelephoneListTokens;
786                 std::map<int, int> GeneralTelephoneListPref;
787                 
788                 std::map<int, wxString> GeneralLanguageList;
789                 std::map<int, wxString> GeneralLanguageListAltID;
790                 std::map<int, wxString> GeneralLanguageListPID;
791                 std::map<int, wxString> GeneralLanguageListType;
792                 std::map<int, wxString> GeneralLanguageListTokens;
793                 std::map<int, int> GeneralLanguageListPref;
794                 
795                 std::map<int, wxString> GeneralTZList;
796                 std::map<int, wxString> GeneralTZListAltID;
797                 std::map<int, wxString> GeneralTZListPID;
798                 std::map<int, wxString> GeneralTZListType;
799                 std::map<int, wxString> GeneralTZListTokens;
800                 std::map<int, wxString> GeneralTZListMediatype;
801                 std::map<int, int> GeneralTZListPref;
802                 
803                 std::map<int, wxString> GeneralGeographyList;
804                 std::map<int, wxString> GeneralGeographyListAltID;
805                 std::map<int, wxString> GeneralGeographyListPID;
806                 std::map<int, wxString> GeneralGeographyListType;
807                 std::map<int, wxString> GeneralGeographyListTokens;
808                 std::map<int, wxString> GeneralGeographyListMediatype;
809                 std::map<int, int> GeneralGeographyListPref;
810         
811                 std::map<int, wxString> GeneralRelatedList;
812                 std::map<int, wxString> GeneralRelatedListRelType;
813                 std::map<int, wxString> GeneralRelatedListLanguage;
814                 std::map<int, wxString> GeneralRelatedListAltID;
815                 std::map<int, wxString> GeneralRelatedListPID;
816                 std::map<int, wxString> GeneralRelatedListType;
817                 std::map<int, wxString> GeneralRelatedListTokens;
818                 std::map<int, int> GeneralRelatedListPref;
819                 
820                 std::map<int, wxString> GeneralWebsiteList;
821                 std::map<int, wxString> GeneralWebsiteListAltID;
822                 std::map<int, wxString> GeneralWebsiteListPID;
823                 std::map<int, wxString> GeneralWebsiteListType;
824                 std::map<int, wxString> GeneralWebsiteListTokens;
825                 std::map<int, wxString> GeneralWebsiteListMediatype;
826                 std::map<int, int> GeneralWebsiteListPref;
827                 
828                 std::map<int, wxString> GeneralTitleList;
829                 std::map<int, wxString> GeneralTitleListLanguage;               
830                 std::map<int, wxString> GeneralTitleListAltID;
831                 std::map<int, wxString> GeneralTitleListPID;
832                 std::map<int, wxString> GeneralTitleListType;
833                 std::map<int, wxString> GeneralTitleListTokens;
834                 std::map<int, int> GeneralTitleListPref;
835                 
836                 std::map<int, wxString> GeneralRoleList;
837                 std::map<int, wxString> GeneralRoleListLanguage;                
838                 std::map<int, wxString> GeneralRoleListAltID;
839                 std::map<int, wxString> GeneralRoleListPID;
840                 std::map<int, wxString> GeneralRoleListType;
841                 std::map<int, wxString> GeneralRoleListTokens;
842                 std::map<int, int> GeneralRoleListPref;
843                 
844                 std::map<int, wxString> GeneralOrganisationsList;
845                 std::map<int, wxString> GeneralOrganisationsListLanguage;               
846                 std::map<int, wxString> GeneralOrganisationsListAltID;
847                 std::map<int, wxString> GeneralOrganisationsListPID;
848                 std::map<int, wxString> GeneralOrganisationsListType;
849                 std::map<int, wxString> GeneralOrganisationsListTokens;
850                 std::map<int, wxString> GeneralOrganisationsListSortAs;
851                 std::map<int, int> GeneralOrganisationsListPref;
852         
853                 std::map<int, wxString> GeneralNoteList;
854                 std::map<int, wxString> GeneralNoteListLanguage;                
855                 std::map<int, wxString> GeneralNoteListAltID;
856                 std::map<int, wxString> GeneralNoteListPID;
857                 std::map<int, wxString> GeneralNoteListType;
858                 std::map<int, wxString> GeneralNoteListTokens;
859                 std::map<int, int> GeneralNoteListPref;
860                 
861                 /* Items on Home Tab */         
862                 
863                 std::map<int, wxString> HomeNicknamesList;
864                 std::map<int, wxString> HomeNicknamesListType;
865                 std::map<int, wxString> HomeNicknamesListLanguage;
866                 std::map<int, wxString> HomeNicknamesListAltID;
867                 std::map<int, wxString> HomeNicknamesListPID;
868                 std::map<int, wxString> HomeNicknamesListTokens;                
869                 std::map<int, int> HomeNicknamesListPref;               
870                 
871                 std::map<int, wxString> HomeAddressList;
872                 std::map<int, wxString> HomeAddressListTown;
873                 std::map<int, wxString> HomeAddressListCounty;
874                 std::map<int, wxString> HomeAddressListPostCode;
875                 std::map<int, wxString> HomeAddressListCountry;
876                 std::map<int, wxString> HomeAddressListLabel;
877                 std::map<int, wxString> HomeAddressListLang;            
878                 std::map<int, wxString> HomeAddressListAltID;
879                 std::map<int, wxString> HomeAddressListPID;
880                 std::map<int, wxString> HomeAddressListTokens;
881                 std::map<int, wxString> HomeAddressListGeo;
882                 std::map<int, wxString> HomeAddressListTimezone;                
883                 std::map<int, wxString> HomeAddressListType;
884                 std::map<int, wxString> HomeAddressListMediatype;
885                 std::map<int, int> HomeAddressListPref;
886                 
887                 std::map<int, wxString> HomeEmailList;
888                 std::map<int, wxString> HomeEmailListAltID;
889                 std::map<int, wxString> HomeEmailListPID;
890                 std::map<int, wxString> HomeEmailListType;
891                 std::map<int, wxString> HomeEmailListTokens;
892                 std::map<int, int> HomeEmailListPref;
893                 
894                 std::map<int, wxString> HomeIMList;
895                 std::map<int, wxString> HomeIMListAltID;
896                 std::map<int, wxString> HomeIMListPID;
897                 std::map<int, wxString> HomeIMListType;
898                 std::map<int, wxString> HomeIMListTokens;
899                 std::map<int, wxString> HomeIMListMediatype;
900                 std::map<int, int> HomeIMListPref;
901                 
902                 std::map<int, wxString> HomeTelephoneList;
903                 std::map<int, wxString> HomeTelephoneListAltID;
904                 std::map<int, wxString> HomeTelephoneListPID;
905                 std::map<int, wxString> HomeTelephoneListType;
906                 std::map<int, wxString> HomeTelephoneListTokens;
907                 std::map<int, int> HomeTelephoneListPref;
908                 
909                 std::map<int, wxString> HomeLanguageList;
910                 std::map<int, wxString> HomeLanguageListAltID;
911                 std::map<int, wxString> HomeLanguageListPID;
912                 std::map<int, wxString> HomeLanguageListType;
913                 std::map<int, wxString> HomeLanguageListTokens;
914                 std::map<int, int> HomeLanguageListPref;
915                 
916                 std::map<int, wxString> HomeTZList;
917                 std::map<int, wxString> HomeTZListAltID;
918                 std::map<int, wxString> HomeTZListPID;
919                 std::map<int, wxString> HomeTZListType;
920                 std::map<int, wxString> HomeTZListTokens;
921                 std::map<int, wxString> HomeTZListMediatype;
922                 std::map<int, int> HomeTZListPref;
923                 
924                 std::map<int, wxString> HomeGeographyList;
925                 std::map<int, wxString> HomeGeographyListAltID;
926                 std::map<int, wxString> HomeGeographyListPID;
927                 std::map<int, wxString> HomeGeographyListType;
928                 std::map<int, wxString> HomeGeographyListTokens;
929                 std::map<int, wxString> HomeGeographyListMediatype;
930                 std::map<int, int> HomeGeographyListPref;
931                 
932                 std::map<int, wxString> HomeRelatedList;
933                 std::map<int, wxString> HomeRelatedListRelType;
934                 std::map<int, wxString> HomeRelatedListLanguage;
935                 std::map<int, wxString> HomeRelatedListAltID;
936                 std::map<int, wxString> HomeRelatedListPID;
937                 std::map<int, wxString> HomeRelatedListType;
938                 std::map<int, wxString> HomeRelatedListTokens;
939                 std::map<int, int> HomeRelatedListPref;         
940                 
941                 std::map<int, wxString> HomeWebsiteList;
942                 std::map<int, wxString> HomeWebsiteListAltID;
943                 std::map<int, wxString> HomeWebsiteListPID;
944                 std::map<int, wxString> HomeWebsiteListType;
945                 std::map<int, wxString> HomeWebsiteListTokens;
946                 std::map<int, wxString> HomeWebsiteListMediatype;
947                 std::map<int, int> HomeWebsiteListPref;
948                 
949                 std::map<int, wxString> HomeTitleList;
950                 std::map<int, wxString> HomeTitleListLanguage;
951                 std::map<int, wxString> HomeTitleListAltID;
952                 std::map<int, wxString> HomeTitleListPID;
953                 std::map<int, wxString> HomeTitleListType;
954                 std::map<int, wxString> HomeTitleListTokens;
955                 std::map<int, int> HomeTitleListPref;
956                 
957                 std::map<int, wxString> HomeRoleList;
958                 std::map<int, wxString> HomeRoleListLanguage;           
959                 std::map<int, wxString> HomeRoleListAltID;
960                 std::map<int, wxString> HomeRoleListPID;
961                 std::map<int, wxString> HomeRoleListType;
962                 std::map<int, wxString> HomeRoleListTokens;
963                 std::map<int, int> HomeRoleListPref;
964                 
965                 std::map<int, wxString> HomeOrganisationsList;
966                 std::map<int, wxString> HomeOrganisationsListLanguage;          
967                 std::map<int, wxString> HomeOrganisationsListAltID;
968                 std::map<int, wxString> HomeOrganisationsListPID;
969                 std::map<int, wxString> HomeOrganisationsListType;
970                 std::map<int, wxString> HomeOrganisationsListTokens;
971                 std::map<int, wxString> HomeOrganisationsListSortAs;
972                 std::map<int, int> HomeOrganisationsListPref;
973                 
974                 std::map<int, wxString> HomeNoteList;
975                 std::map<int, wxString> HomeNoteListLanguage;           
976                 std::map<int, wxString> HomeNoteListAltID;
977                 std::map<int, wxString> HomeNoteListPID;
978                 std::map<int, wxString> HomeNoteListType;
979                 std::map<int, wxString> HomeNoteListTokens;
980                 std::map<int, int> HomeNoteListPref;            
981         
982                 /* Items on the Business tab */
983                 
984                 std::map<int, wxString> BusinessNicknamesList;
985                 std::map<int, wxString> BusinessNicknamesListType;
986                 std::map<int, wxString> BusinessNicknamesListLanguage;
987                 std::map<int, wxString> BusinessNicknamesListAltID;
988                 std::map<int, wxString> BusinessNicknamesListPID;
989                 std::map<int, wxString> BusinessNicknamesListTokens;            
990                 std::map<int, int> BusinessNicknamesListPref;           
991                 
992                 std::map<int, wxString> BusinessAddressList;
993                 std::map<int, wxString> BusinessAddressListTown;
994                 std::map<int, wxString> BusinessAddressListCounty;
995                 std::map<int, wxString> BusinessAddressListPostCode;
996                 std::map<int, wxString> BusinessAddressListCountry;
997                 std::map<int, wxString> BusinessAddressListLabel;
998                 std::map<int, wxString> BusinessAddressListLang;                
999                 std::map<int, wxString> BusinessAddressListAltID;
1000                 std::map<int, wxString> BusinessAddressListPID;
1001                 std::map<int, wxString> BusinessAddressListTokens;
1002                 std::map<int, wxString> BusinessAddressListGeo;
1003                 std::map<int, wxString> BusinessAddressListTimezone;            
1004                 std::map<int, wxString> BusinessAddressListType;
1005                 std::map<int, wxString> BusinessAddressListMediatype;
1006                 std::map<int, int> BusinessAddressListPref;
1007                 
1008                 std::map<int, wxString> BusinessEmailList;
1009                 std::map<int, wxString> BusinessEmailListAltID;
1010                 std::map<int, wxString> BusinessEmailListPID;
1011                 std::map<int, wxString> BusinessEmailListType;
1012                 std::map<int, wxString> BusinessEmailListTokens;
1013                 std::map<int, int> BusinessEmailListPref;
1014                 
1015                 std::map<int, wxString> BusinessIMList;
1016                 std::map<int, wxString> BusinessIMListAltID;
1017                 std::map<int, wxString> BusinessIMListPID;
1018                 std::map<int, wxString> BusinessIMListType;
1019                 std::map<int, wxString> BusinessIMListTokens;
1020                 std::map<int, wxString> BusinessIMListMediatype;
1021                 std::map<int, int> BusinessIMListPref;
1022                 
1023                 std::map<int, wxString> BusinessTelephoneList;
1024                 std::map<int, wxString> BusinessTelephoneListAltID;
1025                 std::map<int, wxString> BusinessTelephoneListPID;
1026                 std::map<int, wxString> BusinessTelephoneListType;
1027                 std::map<int, wxString> BusinessTelephoneListTokens;
1028                 std::map<int, int> BusinessTelephoneListPref;
1029                 
1030                 std::map<int, wxString> BusinessLanguageList;
1031                 std::map<int, wxString> BusinessLanguageListAltID;
1032                 std::map<int, wxString> BusinessLanguageListPID;
1033                 std::map<int, wxString> BusinessLanguageListType;
1034                 std::map<int, wxString> BusinessLanguageListTokens;
1035                 std::map<int, int> BusinessLanguageListPref;
1036                 
1037                 std::map<int, wxString> BusinessTZList;
1038                 std::map<int, wxString> BusinessTZListAltID;
1039                 std::map<int, wxString> BusinessTZListPID;
1040                 std::map<int, wxString> BusinessTZListType;
1041                 std::map<int, wxString> BusinessTZListTokens;
1042                 std::map<int, wxString> BusinessTZListMediatype;
1043                 std::map<int, int> BusinessTZListPref;
1044                 
1045                 std::map<int, wxString> BusinessGeographyList;
1046                 std::map<int, wxString> BusinessGeographyListAltID;
1047                 std::map<int, wxString> BusinessGeographyListPID;
1048                 std::map<int, wxString> BusinessGeographyListType;
1049                 std::map<int, wxString> BusinessGeographyListTokens;
1050                 std::map<int, wxString> BusinessGeographyListMediatype;
1051                 std::map<int, int> BusinessGeographyListPref;
1052                 
1053                 std::map<int, wxString> BusinessRelatedList;
1054                 std::map<int, wxString> BusinessRelatedListRelType;
1055                 std::map<int, wxString> BusinessRelatedListLanguage;
1056                 std::map<int, wxString> BusinessRelatedListAltID;
1057                 std::map<int, wxString> BusinessRelatedListPID;
1058                 std::map<int, wxString> BusinessRelatedListType;
1059                 std::map<int, wxString> BusinessRelatedListTokens;
1060                 std::map<int, int> BusinessRelatedListPref;                     
1061                 
1062                 std::map<int, wxString> BusinessWebsiteList;
1063                 std::map<int, wxString> BusinessWebsiteListAltID;
1064                 std::map<int, wxString> BusinessWebsiteListPID;
1065                 std::map<int, wxString> BusinessWebsiteListType;
1066                 std::map<int, wxString> BusinessWebsiteListTokens;
1067                 std::map<int, wxString> BusinessWebsiteListMediatype;
1068                 std::map<int, int> BusinessWebsiteListPref;
1069                 
1070                 std::map<int, wxString> BusinessTitleList;
1071                 std::map<int, wxString> BusinessTitleListLanguage;              
1072                 std::map<int, wxString> BusinessTitleListAltID;
1073                 std::map<int, wxString> BusinessTitleListPID;
1074                 std::map<int, wxString> BusinessTitleListType;
1075                 std::map<int, wxString> BusinessTitleListTokens;
1076                 std::map<int, int> BusinessTitleListPref;
1077                 
1078                 std::map<int, wxString> BusinessRoleList;
1079                 std::map<int, wxString> BusinessRoleListLanguage;               
1080                 std::map<int, wxString> BusinessRoleListAltID;
1081                 std::map<int, wxString> BusinessRoleListPID;
1082                 std::map<int, wxString> BusinessRoleListType;
1083                 std::map<int, wxString> BusinessRoleListTokens;
1084                 std::map<int, int> BusinessRoleListPref;
1085                 
1086                 std::map<int, wxString> BusinessOrganisationsList;
1087                 std::map<int, wxString> BusinessOrganisationsListLanguage;              
1088                 std::map<int, wxString> BusinessOrganisationsListAltID;
1089                 std::map<int, wxString> BusinessOrganisationsListPID;
1090                 std::map<int, wxString> BusinessOrganisationsListType;
1091                 std::map<int, wxString> BusinessOrganisationsListTokens;
1092                 std::map<int, wxString> BusinessOrganisationsListSortAs;                
1093                 std::map<int, int> BusinessOrganisationsListPref;
1094                 
1095                 std::map<int, wxString> BusinessNoteList;
1096                 std::map<int, wxString> BusinessNoteListLanguage;               
1097                 std::map<int, wxString> BusinessNoteListAltID;
1098                 std::map<int, wxString> BusinessNoteListPID;
1099                 std::map<int, wxString> BusinessNoteListType;
1100                 std::map<int, wxString> BusinessNoteListTokens;
1101                 std::map<int, int> BusinessNoteListPref;                
1102                 
1103                 /* Items on the Categories tab */
1104                 
1105                 std::map<int, wxString> CategoriesList;
1106                 std::map<int, wxString> CategoriesListAltID;
1107                 std::map<int, wxString> CategoriesListPID;
1108                 std::map<int, wxString> CategoriesListType;
1109                 std::map<int, wxString> CategoriesListTokens;
1110                 std::map<int, int> CategoriesListPref;  
1111                 
1112                 /* Items on the Groups tab */
1113                 
1114                 std::map<int, wxString> GroupsList;
1115                 std::map<int, wxString> GroupsListAltID;
1116                 std::map<int, wxString> GroupsListPID;
1117                 std::map<int, wxString> GroupsListType;
1118                 std::map<int, wxString> GroupsListTokens;
1119                 std::map<int, int> GroupsListPref;
1120                 
1121                 /* Items on the Pictures tab */
1122                 
1123                 std::map<int, std::string> PicturesList;
1124                 std::map<int, wxString> PicturesListAltID;
1125                 std::map<int, wxString> PicturesListPID;
1126                 std::map<int, wxString> PicturesListType;
1127                 std::map<int, wxString> PicturesListPicEncType;
1128                 std::map<int, wxString> PicturesListPictureType;
1129                 std::map<int, wxString> PicturesListTokens;
1130                 std::map<int, wxString> PicturesListMediatype;          
1131                 std::map<int, int> PicturesListPref;
1133                 /* Items on the Logos tab */
1134                 
1135                 std::map<int, std::string> LogosList;
1136                 std::map<int, wxString> LogosListAltID;
1137                 std::map<int, wxString> LogosListPID;
1138                 std::map<int, wxString> LogosListType;
1139                 std::map<int, wxString> LogosListPicEncType;            
1140                 std::map<int, wxString> LogosListPictureType;
1141                 std::map<int, wxString> LogosListTokens;
1142                 std::map<int, wxString> LogosListMediatype;             
1143                 std::map<int, int> LogosListPref;
1144                 
1145                 /* Items on the Sounds tab */
1146                 
1147                 std::map<int, std::string> SoundsList;
1148                 std::map<int, wxString> SoundsListAltID;
1149                 std::map<int, wxString> SoundsListPID;
1150                 std::map<int, wxString> SoundsListType;
1151                 std::map<int, wxString> SoundsListAudioEncType;         
1152                 std::map<int, wxString> SoundsListAudioType;            
1153                 std::map<int, wxString> SoundsListTokens;
1154                 std::map<int, wxString> SoundsListMediatype;            
1155                 std::map<int, int> SoundsListPref;      
1156                 
1157                 /* Items on the Calendaring tab */
1158                 
1159                 std::map<int, wxString> CalendarList;
1160                 std::map<int, wxString> CalendarListAltID;
1161                 std::map<int, wxString> CalendarListPID;
1162                 std::map<int, wxString> CalendarListType;
1163                 std::map<int, wxString> CalendarListTokens;
1164                 std::map<int, wxString> CalendarListMediatype;          
1165                 std::map<int, int> CalendarListPref;
1166                 
1167                 std::map<int, wxString> CalendarRequestList;
1168                 std::map<int, wxString> CalendarRequestListAltID;
1169                 std::map<int, wxString> CalendarRequestListPID;
1170                 std::map<int, wxString> CalendarRequestListType;
1171                 std::map<int, wxString> CalendarRequestListTokens;
1172                 std::map<int, wxString> CalendarRequestListMediatype;           
1173                 std::map<int, int> CalendarRequestListPref;             
1174                                 
1175                 std::map<int, wxString> FreeBusyList;
1176                 std::map<int, wxString> FreeBusyListAltID;
1177                 std::map<int, wxString> FreeBusyListPID;
1178                 std::map<int, wxString> FreeBusyListType;
1179                 std::map<int, wxString> FreeBusyListTokens;
1180                 std::map<int, wxString> FreeBusyListMediatype;          
1181                 std::map<int, int> FreeBusyListPref;
1182                 
1183                 /* Items on the Security tab */
1184                 
1185                 std::map<int, wxString> KeyList;
1186                 std::map<int, wxString> KeyListAltID;
1187                 std::map<int, wxString> KeyListPID;
1188                 std::map<int, bool> KeyListKeyType;             
1189                 std::map<int, wxString> KeyListDataType;                
1190                 std::map<int, wxString> KeyListDataEncType;
1191                 std::map<int, wxString> KeyListType;
1192                 std::map<int, wxString> KeyListTokens;
1193                 std::map<int, int> KeyListPref;
1194                 
1195                 /* Items on the Other tab */
1196                 
1197                 std::map<int, wxString> VendorList;
1198                 std::map<int, wxString> VendorListPEN;
1199                 std::map<int, wxString> VendorListElement;
1200                 
1201                 std::map<int, wxString> XTokenList;             
1202                 std::map<int, wxString> XTokenListTokens;                       
1203         
1204                 /* Items regarding account and filename */
1205                 
1206                 wxString wxSContactFilename;
1207                 wxString wxSContactAccount;
1208                 bool boolContactModified;
1209                 int intSeekSelectedData;
1210                 
1211                 /* Section for saving/loading data */
1212                 
1213                 wxString *strPropertyPtr;
1214                 bool *boolAdditionalPtr;
1215                 bool *boolExtraPtr;
1216                 std::map<int,wxString>::iterator *iterDataPtr = 0;
1217                 std::map<int,std::string>::iterator *iterDataStringPtr = 0;
1218                 std::map<int,wxString>::iterator *iterFileTypePtr = 0;
1219                 std::map<int,wxString>::iterator *iterFileEncPtr = 0;
1220                 
1221                 wxString ETag;
1222                 wxString ETagOriginal;
1223                 
1224                 wxString strValue;
1225                 wxString strValue2;
1226                 wxString strValue3;
1228                 bool boolValue = FALSE;
1229                 bool boolValue2 = FALSE;
1230                 size_t intValue = 0;
1231                 int intValue2 = 0;
1232                 int intValue3 = 0;
1233                 bool BinaryDataProc = FALSE;
1234                 bool EditMode = FALSE;
1235                 bool StartupEditMode = FALSE;
1236                 bool DialogOpen = FALSE;
1237                 
1238                 /*
1239                 std::string base64dec;
1240                 sf::Sound AudioPlayback;
1241                 sf::SoundBuffer AudioBuffer;
1242                 */
1243                 
1244                 size_t base64declen;
1245                 std::string base64dec;
1246                 sf::Music AudioPlayback;
1247                 AudioStream AudioStreamPlayback;
1248                 sf::SoundBuffer AudioBuffer;
1249                 
1250                 wxBitmap PictureImage;
1251                 wxBitmap LogoImage;
1252                 
1253                 void SplitValues(wxString *PropertyLine,
1254                         std::map<int,int> *SplitPoints, 
1255                         std::map<int,int> *SplitLength, 
1256                         int intSize);
1257                 
1258                 frmMain *MainPtr;
1259                 frmActivityMgr *ActMgrPtr;
1260                 wxETagProcessTimer *ETagTmrPtr;
1261                 wxContactFileMonitorTimer FMTimer;
1262                 
1263                 int ContactEditorUID;
1264                 
1265                 DECLARE_EVENT_TABLE()
1266         
1267         //// end generated class members
1268         
1269 };
1271 #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