2 #include <wx/mstream.h>
4 #include "frmImportContacts.h"
5 #include "import-struct.h"
6 #include "../common/preferences.h"
7 #include "../bitmaps.h"
8 #include "../vcard/vcard.h"
9 #include "../common/dirs.h"
11 frmImportContacts::frmImportContacts( wxWindow* parent )
13 frmImportContactsADT( parent )
16 // Setup the account selection control.
18 AccControl->SetPopupMaxHeight(175);
19 AccControl->SetPopupControl(treAccounts);
21 szrAccount->Insert(1, AccControl, 1, wxEXPAND, 5);
24 wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png));
25 wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png));
26 wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png));
28 wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG);
29 wxBitmap AccInet(icons_accinet_png, -1);
31 wxIAccInet.CopyFromBitmap(AccInet);
33 wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG);
34 wxBitmap AccNIcon(icons_acclocal_png, -1);
36 wxIAccNIcon.CopyFromBitmap(AccNIcon);
38 wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG);
39 wxBitmap AccGrp(icons_accgroup_png, -1);
41 wxIAccGrp.CopyFromBitmap(AccGrp);
43 AccountID = AccImgList->Add(wxIAccNIcon);
44 AccountNetID = AccImgList->Add(wxIAccInet);
45 AccountGrpID = AccImgList->Add(wxIAccGrp);
47 treAccounts->AssignImageList(AccImgList);
49 // Load the preferences.
51 wxString preffilename = GetUserPrefDir();
53 XABPreferences preferences(preffilename);
55 // Setup the main window position (if needed).
57 bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition"));
58 bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks"));
60 if (SaveWindowPos == TRUE){
62 this->SetSize(preferences.GetMainWindowData());
66 treAccounts->DeleteAllItems();
68 wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item"));
71 for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){
72 treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i));
78 wxString AccDirFullSfx;
82 wxTreeItemId AccountTreeId;
83 wxTreeItemId GroupTreeId;
85 for (int i = 0; i < preferences.accounts.GetCount(); i++){
87 if ((preferences.accounts.GetAccountType(i) == wxT("Local") ||
88 preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){
94 AccDir = preferences.accounts.GetAccountDirectory(i);
95 AccDirFull = preferences.accounts.GetAccountDirectory(i);
97 AccDirFull.Append(wxT("."));
98 AccDirFullSfx.Append(preferences.accounts.GetAccountType(i));
99 AccDirFullSfx.LowerCase();
100 AccDirFullSfx.Trim();
101 AccDirFull.Append(AccDirFullSfx);
102 AccName = preferences.accounts.GetAccountName(i);
104 AccType = preferences.accounts.GetAccountType(i);
106 AccountAccDirList.insert(std::make_pair(i, AccDirFull));
107 AccountAccTypeList.insert(std::make_pair(i, AccType));
109 if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") ||
110 preferences.accounts.GetAccountType(i) == wxT("carddav")){
112 AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1);
116 AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1);
120 // Clearup for next account.
124 AccDirFullSfx.clear();
130 DialogResult = FALSE;
134 frmImportContacts::~frmImportContacts()
146 void frmImportContacts::GetResult()
151 void frmImportContacts::GetContacts()
156 void frmImportContacts::CloseWindow( wxCommandEvent& event )
158 DialogResult = FALSE;
162 void frmImportContacts::ImportContacts( wxCommandEvent& event )
168 void frmImportContacts::SetupList(std::map<int,ImportDataContact>* ContactDataInc)
171 // Go through the list and setup each contact for the list.
175 for (std::map<int,ImportDataContact>::iterator iter = ContactDataInc->begin();
176 iter != ContactDataInc->end(); iter++){
178 ImportDataContact *Moo = &iter->second;
181 ContactLoad.LoadString(Moo->ContactData);
183 // Alter the data on this. (FN instead of Name?)
185 wxString ContactName = ContactLoad.Get(wxT("FN"));
186 iter->second.FriendlyName = ContactName;
188 lstContacts->InsertItems(1, &ContactName, Seek);
194 for (int i = 0; i < lstContacts->GetCount(); i++){
196 lstContacts->Check(i, TRUE);
202 void frmImportContacts::GetResults(std::map<int,ImportDataContact>* ContactDataInc)
207 for (std::map<int, ImportDataContact>::iterator DataIter = ContactDataInc->begin();
208 DataIter != ContactDataInc->end(); ++DataIter){
210 if (lstContacts->IsChecked(ItemIndex) == FALSE){
212 DataIter->second.ContactSelected = FALSE;
222 wxString frmImportContacts::GetAccount()
225 wxString preffilename = GetUserPrefDir();
227 XABPreferences preferences(preffilename);
229 wxString AccountName;
231 //XABPrefAccounts prefaccounts;
233 wxTreeItemIdValue cookie;
234 wxTreeItemId next = treAccounts->GetRootItem();
236 wxTreeItemId selectedChild = treAccounts->GetSelection();
237 wxTreeItemId nextChild;
239 for (int i = 0; i < preferences.accounts.GetCount(); i++){
242 nextChild = treAccounts->GetFirstChild(next, cookie);
244 nextChild = treAccounts->GetNextSibling(nextChild);
247 if (nextChild == selectedChild){
249 std::map<int, wxString>::iterator AccNameIter = AccountAccDirList.find(i);
251 AccountName = AccNameIter->second;
262 wxString frmImportContacts::GetAccountType()
265 wxString preffilename = GetUserPrefDir();
267 XABPreferences preferences(preffilename);
269 wxString AccountType;
271 //XABPrefAccounts prefaccounts;
273 wxTreeItemIdValue cookie;
274 wxTreeItemId next = treAccounts->GetRootItem();
276 wxTreeItemId selectedChild = treAccounts->GetSelection();
277 wxTreeItemId nextChild;
279 for (int i = 0; i < preferences.accounts.GetCount(); i++){
282 nextChild = treAccounts->GetFirstChild(next, cookie);
284 nextChild = treAccounts->GetNextSibling(nextChild);
287 if (nextChild == selectedChild){
289 std::map<int, wxString>::iterator AccTypeIter = AccountAccTypeList.find(i);
291 AccountType = AccTypeIter->second;
302 bool frmImportContacts::GetDialogResult(){