+ if (ContactEditorData.UIDToken.IsEmpty()){
+
+ // UID Token is empty. (Shouldn't be).
+ // Generate a new UID Token.
+
+ ContactEditorData.UIDToken = GenerateUUID();
+ ContactEditorData.UIDToken = ContactEditorData.UIDToken.MakeUpper();
+
+ }
+
+ FilenameFinal = wxSContactFilename;
+
+ }
+
+ // Setup the data and write it into the account folder.
+
+ // Begin preperations to write the contact to a file.
+
+ bool FNFirst = TRUE;
+ std::map<int,int>::iterator intiter;
+ std::map<int,wxString>::iterator striter;
+
+ // Set some values for saving.
+
+ ContactEditorData.NameForename = txtForename->GetValue();
+ ContactEditorData.NameSurname = txtSurname->GetValue();
+ ContactEditorData.NameOtherNames = txtOtherNames->GetValue();
+ ContactEditorData.NameTitle = txtTitle->GetValue();
+ ContactEditorData.NameSuffix = txtSuffix->GetValue();
+
+ ContactEditorData.GenderDetails = txtGenderDescription->GetValue();
+
+ // Process Birthday: Get Day, Month & Year.
+
+ wxDateTime BirthdayDate;
+ wxDateTime::Month BirthdayMonth;
+ int BirthdayDay;
+ int BirthdayYear;
+ wxString DataBeforeT;
+ wxString DataAfterT;
+ wxString FinalBirthdayString;
+ bool ProcessDataAfterT = FALSE;
+
+ BirthdayDate = dapBirthday->GetValue();
+
+ if (!txtBirthday->IsEmpty()){
+
+ // Birthday value is text so use this.
+
+ ContactEditorData.Birthday = txtBirthday->GetValue();
+
+ } else if (BirthdayDate.IsValid()){
+
+ BirthdayDay = BirthdayDate.GetDay();
+ BirthdayMonth = BirthdayDate.GetMonth();
+ BirthdayYear = BirthdayDate.GetYear();
+
+ // Look for T and replace data before this.
+
+ wxStringTokenizer wSTDate(ContactEditorData.Birthday, wxT("T"));
+
+ while (wSTDate.HasMoreTokens()){
+
+ if (ProcessDataAfterT == FALSE){
+
+ DataBeforeT = wSTDate.GetNextToken();
+ ProcessDataAfterT = TRUE;
+
+ } else {
+
+ DataAfterT = wSTDate.GetNextToken();
+ break;
+
+ }
+
+ }
+
+ // If there is not T then replace altogether.
+
+ wxString FinalBirthdayDay;
+ wxString FinalBirthdayMonth;
+ wxString FinalBirthdayYear;
+
+ if (BirthdayDay < 10){
+
+ FinalBirthdayDay = wxT("0") + wxString::Format(wxT("%i"), BirthdayDay);
+
+ } else {
+
+ FinalBirthdayDay = wxString::Format(wxT("%i"), BirthdayDay);
+
+ }
+
+ if (((int)BirthdayMonth + 1) < 10){
+
+ FinalBirthdayMonth = wxT("0") + wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1));
+
+ } else {
+
+ FinalBirthdayMonth = wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1));
+
+ }
+
+ if (BirthdayYear == 0){
+
+ FinalBirthdayYear = wxT("--");
+
+ } else {
+
+ FinalBirthdayYear = wxString::Format(wxT("%i"), BirthdayYear);
+
+ }
+
+ if (!DataAfterT.IsEmpty()){
+
+ FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay + wxT("T") + DataAfterT;
+
+ } else {
+
+ FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay;
+
+ }
+
+ if(!FinalBirthdayString.IsEmpty()){
+
+ ContactEditorData.Birthday = FinalBirthdayString;
+
+ }
+
+ }
+
+ // Process Anniversary: Get Day, Month & Year.
+
+ wxDateTime AnniversaryDate;
+ wxDateTime::Month AnniversaryMonth;
+ int AnniversaryDay;
+ int AnniversaryYear;
+ DataBeforeT = "";
+ DataAfterT = "";
+ wxString FinalAnniversaryString;
+ ProcessDataAfterT = FALSE;
+
+ AnniversaryDate = dapAnniversary->GetValue();
+
+ if (!txtAnniversary->IsEmpty()){
+
+ // Birthday value is text so use this.
+
+ ContactEditorData.Anniversary = txtAnniversary->GetValue();
+
+ } else if (AnniversaryDate.IsValid()){
+
+ AnniversaryDay = AnniversaryDate.GetDay();
+ AnniversaryMonth = AnniversaryDate.GetMonth();
+ AnniversaryYear = AnniversaryDate.GetYear();
+
+ // Look for T and replace data before this.