Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Implemented LoadData for even better simplification.
[xestiaab/.git] / source / contacteditor / frmContactEditor-Load.cpp
index 6b97937..a48d0a3 100644 (file)
@@ -30,6 +30,7 @@
 #include "../vcard/vcard.h"
 #include "../common/textprocessing.h"
 #include "../common/dirs.h"
+#include "cdo/ContactDataObject.h"
 
 bool frmContactEditor::LoadContact(wxString Filename){
 
@@ -61,6 +62,8 @@ bool frmContactEditor::LoadContact(wxString Filename){
        
        }
        
+       ContactEditorData.LoadFile(Filename);
+       
        ContactFile.ReadAll(&wxSContactString, wxConvAuto());
        
        // Split the lines.
@@ -87,13 +90,13 @@ bool frmContactEditor::LoadContact(wxString Filename){
        bool HasExtraNicknames = FALSE;
        bool IgnoreGender = FALSE;
        bool ExtraLineSeek = TRUE;
-       bool BirthdayProcessed = FALSE;
-       bool AnniversaryProcessed = FALSE;
+       //bool BirthdayProcessed = FALSE;
+       //bool AnniversaryProcessed = FALSE;
        bool FNProcessed = FALSE;
        bool GenderProcessed = FALSE;
        bool NameProcessed = FALSE;
-       bool UIDProcessed = FALSE;
-       bool KindProcessed = FALSE;
+       //bool UIDProcessed = FALSE;
+       //bool KindProcessed = FALSE;
        bool ETagFound = FALSE;
        bool ETagOrigFound = FALSE;
        bool VersionProcessed = FALSE;
@@ -133,6 +136,94 @@ bool frmContactEditor::LoadContact(wxString Filename){
        int XTokenCount = 0;
        //int intValueSeek = 1;
 
+       // Process the unique ID (UID)
+       
+       UIDToken = ContactEditorData.UIDToken;
+
+       // Process the contact type (KIND) (frmContactEditor-LoadGroup.cpp)
+
+       LoadKind(&ContactEditorData.ContactKind);
+
+       // Process the Birthday (BDAY) (frmContactEditor-LoadBADays.cpp)
+       
+       LoadBirthday(&ContactEditorData.Birthday, &ContactEditorData.BirthdayText);
+
+       // Process the Anniversary (ANNIVERSARY) (frmContactEditor-LoadBADays.cpp)
+       
+       LoadAnniversary(&ContactEditorData.Anniversary, &ContactEditorData.AnniversaryText);
+
+       // Process the Gender (GENDER) (frmContactEditor-LoadGender.cpp)
+       
+       LoadGender(&ContactEditorData.Gender, &ContactEditorData.GenderDetails);
+       
+       // Process the Name (N) (frmContactEditor-LoadName.cpp)
+       
+       LoadName(&ContactEditorData.NameTitle, &ContactEditorData.NameForename,
+               &ContactEditorData.NameSurname, &ContactEditorData.NameOtherNames,
+               &ContactEditorData.NameSuffix);
+               
+       // Process the group members (MEMBER) (frmContactEditor-LoadGroup.cpp)
+               
+       LoadMember(&ContactEditorData.GroupsList);
+
+       // Process the addresses (ADR) (frmContactEditor-LoadAddress.cpp)
+       
+       LoadAddress(&ContactEditorData.GeneralAddressList,
+               &ContactEditorData.GeneralAddressListTown,
+               &ContactEditorData.GeneralAddressListCounty,
+               &ContactEditorData.GeneralAddressListPostCode,
+               &ContactEditorData.GeneralAddressListPref,
+               &ContactEditorData.HomeAddressList,
+               &ContactEditorData.HomeAddressListTown,
+               &ContactEditorData.HomeAddressListCounty,
+               &ContactEditorData.HomeAddressListPostCode,
+               &ContactEditorData.HomeAddressListPref,
+               &ContactEditorData.BusinessAddressList,
+               &ContactEditorData.BusinessAddressListTown,
+               &ContactEditorData.BusinessAddressListCounty,
+               &ContactEditorData.BusinessAddressListPostCode,
+               &ContactEditorData.BusinessAddressListPref,
+               &ADRCount);
+
+       // Process the timezones (TZ) (frmContactEditor-LoadTimeZone.cpp)
+       
+       LoadData(&ContactEditorData.GeneralTZList,
+               &ContactEditorData.GeneralTZListPref,
+               lboTimezones,
+               &ContactEditorData.HomeTZList,
+               &ContactEditorData.HomeTZListPref,
+               lboHomeTimezones,
+               &ContactEditorData.BusinessTZList,
+               &ContactEditorData.BusinessTZListPref,
+               lboBusinessTimezones,
+               &TZCount);
+               
+       // Process the emails (EMAIL) (frmContactEditor-LoadEmail.cpp)
+       
+       LoadData(&ContactEditorData.GeneralEmailList,
+               &ContactEditorData.GeneralEmailListPref,
+               lboEmails,
+               &ContactEditorData.HomeEmailList,
+               &ContactEditorData.HomeEmailListPref,
+               lboHomeEmails,
+               &ContactEditorData.BusinessEmailList,
+               &ContactEditorData.BusinessEmailListPref,
+               lboBusinessEmail,
+               &EmailCount);
+
+       // Process the nicknames (NICKNAME) (frmContactEditor-LoadNickname.cpp)
+       
+       LoadData(&ContactEditorData.GeneralNicknamesList,
+               &ContactEditorData.GeneralNicknamesListPref,
+               lboNicknames,
+               &ContactEditorData.HomeNicknamesList,
+               &ContactEditorData.HomeNicknamesListPref,
+               lboHomeNicknames,
+               &ContactEditorData.BusinessNicknamesList,
+               &ContactEditorData.BusinessNicknamesListPref,
+               lboBusinessNicknames,
+               &NicknameCount);
+
        for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
         iter != ContactFileLines.end(); ++iter){
        
@@ -234,25 +325,25 @@ bool frmContactEditor::LoadContact(wxString Filename){
                        
                        VersionProcessed = TRUE;
                
-               } if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){
+               }/* if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){
                
                        // See frmContactEditor-LoadGroup.cpp
                
                        LoadKind(wxSPropertySeg2);
                
-               } else if (wxSProperty == wxT("MEMBER")){
+               }/* else if (wxSProperty == wxT("MEMBER")){
 
                        // See frmContactEditor-LoadGroup.cpp
 
                        LoadMember(wxSPropertySeg2, &GroupCount);               
                
-               } else if (wxSProperty == wxT("FN")){
+               }*/ else if (wxSProperty == wxT("FN")){
                
                        // See frmContactEditor-LoadName.cpp
                
                        LoadFN(wxSPropertySeg1, wxSPropertySeg2, &FNCount, &FNProcessed, &ContactData);
                
-               } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){
+               }/* else if (wxSProperty == wxT("N") && NameProcessed == FALSE){
                
                        // See frmContactEditor-LoadName.cpp
                
@@ -288,7 +379,7 @@ bool frmContactEditor::LoadContact(wxString Filename){
                
                        LoadTimeZone(wxSPropertySeg1, wxSPropertySeg2, &TZCount);       
                
-               } else if (wxSProperty == wxT("ADR")){
+               }  else if (wxSProperty == wxT("ADR")){
                        
                        // See frmContactEditor-LoadAddress.cpp
                
@@ -300,7 +391,7 @@ bool frmContactEditor::LoadContact(wxString Filename){
                        
                        LoadEmail(wxSPropertySeg1, wxSPropertySeg2, &EmailCount);       
                
-               } else if (wxSProperty == wxT("IMPP")){
+               }*/ else if (wxSProperty == wxT("IMPP")){
                
                        // See frmContactEditor-LoadIM.cpp
                
@@ -408,12 +499,12 @@ bool frmContactEditor::LoadContact(wxString Filename){
                        
                        LoadKey(wxSPropertySeg1, wxSPropertySeg2, &KeyCount);
                
-               } else if (wxSProperty == wxT("UID") && UIDProcessed == FALSE){
+               }/* else if (wxSProperty == wxT("UID") && UIDProcessed == FALSE){
                
                        UIDToken = wxSPropertySeg2;
                        UIDProcessed = TRUE;
                
-               } else if (wxSProperty.Mid(0, 3) == wxT("VND")){
+               }*/ else if (wxSProperty.Mid(0, 3) == wxT("VND")){
                
                        // Split the Vendor three ways.
                        
@@ -555,4 +646,91 @@ void frmContactEditor::SplitValues(wxString *PropertyLine,
 
        }
 
+}
+
+void frmContactEditor::LoadData(std::map<int, wxString> *GeneralList,
+               std::map<int, int> *GeneralListPref,
+               wxListCtrl *GeneralListCtrl,
+               std::map<int, wxString> *HomeList,
+               std::map<int, int> *HomeListPref,
+               wxListCtrl *HomeListCtrl,
+               std::map<int, wxString> *BusinessList,
+               std::map<int, int> *BusinessListPref,
+               wxListCtrl *BusinessListCtrl,
+               int *DataCount){
+
+       long ListCtrlIndex = -1;
+
+       // Deal with the general addresses.
+       
+       for (std::map<int,wxString>::iterator Iter = GeneralList->begin();
+               Iter != GeneralList->end();
+               Iter++){
+       
+               wxListItem coldata;
+
+               coldata.SetId(*DataCount);
+               coldata.SetData(*DataCount);
+               coldata.SetText(Iter->second);
+               
+               ListCtrlIndex = GeneralListCtrl->InsertItem(coldata);
+
+               if (MapDataExists(DataCount, GeneralListPref)){
+               
+                       GeneralListCtrl->SetItem(ListCtrlIndex, 1, wxString::Format("%i", GeneralListPref->find(*DataCount)->second));
+               
+               }
+       
+               (*DataCount)++;
+       
+       }
+       
+       // Deal with the home addresses.
+       
+       for (std::map<int,wxString>::iterator Iter = HomeList->begin();
+               Iter != HomeList->end();
+               Iter++){
+       
+               wxListItem coldata;
+
+               coldata.SetId(*DataCount);
+               coldata.SetData(*DataCount);
+               coldata.SetText(Iter->second);
+               
+               ListCtrlIndex = HomeListCtrl->InsertItem(coldata);
+
+               if (MapDataExists(DataCount, HomeListPref)){
+               
+                       HomeListCtrl->SetItem(ListCtrlIndex, 1, wxString::Format("%i", HomeListPref->find(*DataCount)->second));
+               
+               }
+       
+               (*DataCount)++;
+       
+       }
+       
+       // Deal with the work addresses.
+       
+       for (std::map<int,wxString>::iterator Iter = BusinessList->begin();
+               Iter != BusinessList->end();
+               Iter++){
+       
+               wxListItem coldata;
+
+               coldata.SetId(*DataCount);
+               coldata.SetData(*DataCount);
+               coldata.SetText(Iter->second);
+               
+               ListCtrlIndex = BusinessListCtrl->InsertItem(coldata);
+                               
+               if (MapDataExists(DataCount, BusinessListPref)){
+               
+                       BusinessListCtrl->SetItem(ListCtrlIndex, 1, wxString::Format("%i", BusinessListPref->find(*DataCount)->second));
+               
+               }
+       
+               (*DataCount)++;
+       
+       }
+
 }
\ No newline at end of file
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