// frmImportContacts.cpp - frmImportContacts form. // // (c) 2012-2015 Xestia Software Development. // // This file is part of Xestia Address Book. // // Xestia Address Book is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // // Xestia Address Book is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with Xestia Address Book. If not, see #include #include #include "frmImportContacts.h" #include "import-struct.h" #include "../common/preferences.h" #include "../bitmaps.h" #include "../vcard/vcard.h" #include "../common/dirs.h" frmImportContacts::frmImportContacts( wxWindow* parent ) : frmImportContactsADT( parent ) { // Setup the account selection control. AccControl->SetPopupMaxHeight(175); AccControl->SetPopupControl(treAccounts); szrAccount->Insert(1, AccControl, 1, wxEXPAND, 5); szrAccount->Layout(); wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png)); wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png)); wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png)); wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG); wxBitmap AccInet(icons_accinet_png, -1); wxIcon wxIAccInet; wxIAccInet.CopyFromBitmap(AccInet); wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG); wxBitmap AccNIcon(icons_acclocal_png, -1); wxIcon wxIAccNIcon; wxIAccNIcon.CopyFromBitmap(AccNIcon); wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG); wxBitmap AccGrp(icons_accgroup_png, -1); wxIcon wxIAccGrp; wxIAccGrp.CopyFromBitmap(AccGrp); AccountID = AccImgList->Add(wxIAccNIcon); AccountNetID = AccImgList->Add(wxIAccInet); AccountGrpID = AccImgList->Add(wxIAccGrp); treAccounts->AssignImageList(AccImgList); // Load the preferences. wxString preffilename = GetUserPrefDir(); XABPreferences preferences(preffilename); // Setup the main window position (if needed). bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition")); bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks")); if (SaveWindowPos == TRUE){ this->SetSize(preferences.GetMainWindowData()); } treAccounts->DeleteAllItems(); wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item")); wxString AccDir; wxString AccDirFull; wxString AccDirFullSfx; wxString AccName; wxString AccType; wxString AccDirFinal; wxTreeItemId AccountTreeId; wxTreeItemId GroupTreeId; for (int i = 0; i < preferences.accounts.GetCount(); i++){ if ((preferences.accounts.GetAccountType(i) == wxT("Local") || preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){ continue; } AccDir = preferences.accounts.GetAccountDirectory(i); AccDirFull = preferences.accounts.GetAccountDirectory(i); AccDirFull.Trim(); AccDirFull.Append(wxT(".")); AccDirFullSfx.Append(preferences.accounts.GetAccountType(i)); AccDirFullSfx.LowerCase(); AccDirFullSfx.Trim(); AccDirFull.Append(AccDirFullSfx); AccName = preferences.accounts.GetAccountName(i); AccName.Trim(); AccType = preferences.accounts.GetAccountType(i); AccType.Trim(); AccountAccDirList.insert(std::make_pair(i, AccDirFull)); AccountAccTypeList.insert(std::make_pair(i, AccType)); if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") || preferences.accounts.GetAccountType(i) == wxT("carddav")){ AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1); } else { AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1); } // Clearup for next account. AccDir.clear(); AccDirFull.clear(); AccDirFullSfx.clear(); AccDirFinal.clear(); AccName.clear(); } DialogResult = FALSE; } frmImportContacts::~frmImportContacts() { } void frmImportContacts::GetResult() { } void frmImportContacts::GetContacts() { } void frmImportContacts::CloseWindow( wxCommandEvent& event ) { DialogResult = FALSE; this->Close(); } void frmImportContacts::ImportContacts( wxCommandEvent& event ) { DialogResult = TRUE; this->Close(); } void frmImportContacts::SetupList(std::map* ContactDataInc) { // Go through the list and setup each contact for the list. int Seek = 0; for (std::map::iterator iter = ContactDataInc->begin(); iter != ContactDataInc->end(); iter++){ ImportDataContact *Moo = &iter->second; vCard ContactLoad; ContactLoad.LoadString(Moo->ContactData); // Alter the data on this. (FN instead of Name?) wxString ContactName = ContactLoad.Get(wxT("FN")); iter->second.FriendlyName = ContactName; lstContacts->InsertItems(1, &ContactName, Seek); Seek++; } for (int i = 0; i < lstContacts->GetCount(); i++){ lstContacts->Check(i, TRUE); } } void frmImportContacts::GetResults(std::map* ContactDataInc) { int ItemIndex = 0; for (std::map::iterator DataIter = ContactDataInc->begin(); DataIter != ContactDataInc->end(); ++DataIter){ if (lstContacts->IsChecked(ItemIndex) == FALSE){ DataIter->second.ContactSelected = FALSE; } ItemIndex++; } } wxString frmImportContacts::GetAccount() { wxString preffilename = GetUserPrefDir(); XABPreferences preferences(preffilename); wxString AccountName; wxTreeItemIdValue cookie; wxTreeItemId next = treAccounts->GetRootItem(); wxTreeItemId selectedChild = treAccounts->GetSelection(); wxTreeItemId nextChild; for (int i = 0; i < preferences.accounts.GetCount(); i++){ if (!nextChild){ nextChild = treAccounts->GetFirstChild(next, cookie); } else { nextChild = treAccounts->GetNextSibling(nextChild); } if (nextChild == selectedChild){ std::map::iterator AccNameIter = AccountAccDirList.find(i); AccountName = AccNameIter->second; } } return AccountName; } wxString frmImportContacts::GetAccountType() { wxString preffilename = GetUserPrefDir(); XABPreferences preferences(preffilename); wxString AccountType; wxTreeItemIdValue cookie; wxTreeItemId next = treAccounts->GetRootItem(); wxTreeItemId selectedChild = treAccounts->GetSelection(); wxTreeItemId nextChild; for (int i = 0; i < preferences.accounts.GetCount(); i++){ if (!nextChild){ nextChild = treAccounts->GetFirstChild(next, cookie); } else { nextChild = treAccounts->GetNextSibling(nextChild); } if (nextChild == selectedChild){ std::map::iterator AccTypeIter = AccountAccTypeList.find(i); AccountType = AccTypeIter->second; } } return AccountType; } bool frmImportContacts::GetDialogResult(){ return DialogResult; }