// 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"));
/*
for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){
treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i));
}
*/
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()
{
/*delete AccControl;
AccControl = NULL;
delete treAccounts;
treAccounts = NULL;
delete AccImgList;
AccImgList = NULL;*/
}
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;
//XABPrefAccounts prefaccounts;
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;
//XABPrefAccounts prefaccounts;
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;
}