X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2FfrmMain.cpp;h=14fc084b933928158deb0ff3928b7c6693f8a2bf;hb=a73019906500e3a0fc306a61e4b7975f79725866;hp=b9ae29121950074c70ea2b072dcaa36694127fe2;hpb=969329975a0af9d346c76dc34e9ff9cd54cc61ee;p=xestiaab%2F.git diff --git a/source/frmMain.cpp b/source/frmMain.cpp index b9ae291..14fc084 100644 --- a/source/frmMain.cpp +++ b/source/frmMain.cpp @@ -1,3 +1,21 @@ +// frmMain.cpp - Main window 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 @@ -13,6 +31,7 @@ #include #include #include +#include //#include // Include the forms. @@ -28,6 +47,7 @@ #include "frmSearch.h" #include "frmSSLCertificate.h" #include "frmUpdate.h" +#include "import/frmImportResults.h" #include "bitmaps.h" #include "common/preferences.h" @@ -39,6 +59,7 @@ #include "contacteditor/frmContactEditor.h" #include "import/import.h" #include "export/export.h" +#include "widgets/XABContactMenu.h" #include "widgets/XABAccountView.h" #include "version.h" @@ -52,7 +73,10 @@ DEFINE_EVENT_TYPE(CE_UPDATECONTACTLIST); DEFINE_EVENT_TYPE(CE_UPDATEACCOUNTLIST); DEFINE_EVENT_TYPE(SE_UPDATECONTACTNOTIF); DEFINE_EVENT_TYPE(CE_OPENCONTACT); +DEFINE_EVENT_TYPE(CE_OPENCONTACTLIST); +DEFINE_EVENT_TYPE(CE_NEWCONTACT); DEFINE_EVENT_TYPE(CE_EDITCONTACT); +DEFINE_EVENT_TYPE(CE_DELETECONTACT); DEFINE_EVENT_TYPE(CE_REVEALCONTACT); DEFINE_EVENT_TYPE(CE_REMOVECONTACT); DEFINE_EVENT_TYPE(CE_REMOVESEARCH); @@ -62,12 +86,14 @@ DEFINE_EVENT_TYPE(ACTMGR_SHUFFLE); DEFINE_EVENT_TYPE(ACTMGR_STOP); DEFINE_EVENT_TYPE(WINDOW_ADD); DEFINE_EVENT_TYPE(WINDOW_EDIT); -//DEFINE_EVENT_TYPE(WINDOW_DELETE); DEFINE_EVENT_TYPE(WINDOW_CLOSE); DEFINE_EVENT_TYPE(CONNSTAT_UPDATE); DEFINE_EVENT_TYPE(INVALIDSSLCERT); DEFINE_EVENT_TYPE(GETSELECTEDLIST); DEFINE_EVENT_TYPE(SYNCACCOUNT); +DEFINE_EVENT_TYPE(IMPORT_RESULTSSHOW); +DEFINE_EVENT_TYPE(RELOADCONTACTLIST); +DEFINE_EVENT_TYPE(REFRESHADDRESSBOOK); BEGIN_EVENT_TABLE(frmMain, wxFrame) EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmMain::ConflictResolution) @@ -75,7 +101,10 @@ EVT_COMMAND(wxID_ANY, CE_UPDATECONTACTLIST, frmMain::UpdateContactList) EVT_COMMAND(wxID_ANY, CE_UPDATEACCOUNTLIST, frmMain::UpdateAccountList) EVT_COMMAND(wxID_ANY, SE_UPDATECONTACTNOTIF, frmMain::UpdateSearchContactLists) EVT_COMMAND(wxID_ANY, CE_OPENCONTACT, frmMain::OpenContactInfo) +EVT_COMMAND(wxID_ANY, CE_OPENCONTACTLIST, frmMain::OpenContactInfoList) +EVT_COMMAND(wxID_ANY, CE_NEWCONTACT, frmMain::ShowContactEditorNew) EVT_COMMAND(wxID_ANY, CE_EDITCONTACT, frmMain::ShowContactEditorEdit) +EVT_COMMAND(wxID_ANY, CE_DELETECONTACT, frmMain::DeleteContact) EVT_COMMAND(wxID_ANY, CE_REVEALCONTACT, frmMain::RevealContact) EVT_COMMAND(wxID_ANY, CE_REMOVESEARCH, frmMain::RemoveContactsWindowPointer) EVT_COMMAND(wxID_ANY, SYNC_EMPTYSERVER, frmMain::EmptyServerDialog) @@ -89,6 +118,9 @@ EVT_COMMAND(wxID_ANY, CONNSTAT_UPDATE, frmMain::UpdateConnectionStatus) EVT_COMMAND(wxID_ANY, INVALIDSSLCERT, frmMain::InvalidSSLCertificate) EVT_COMMAND(wxID_ANY, GETSELECTEDLIST, frmMain::GetSelectedList) EVT_COMMAND(wxID_ANY, SYNCACCOUNT, frmMain::SyncAccount) +EVT_COMMAND(wxID_ANY, IMPORT_RESULTSSHOW, frmMain::ShowImportResults) +EVT_COMMAND(wxID_ANY, RELOADCONTACTLIST, frmMain::ReloadContactList) +EVT_COMMAND(wxID_ANY, REFRESHADDRESSBOOK, frmMain::RefreshAddressBook) END_EVENT_TABLE() frmMain::frmMain( wxWindow* parent ) @@ -196,7 +228,6 @@ frmMainADT( parent ) AccCtrl->SetPopupMinWidth(250); treAccounts->AssignImageList(AccImgList); //bmpIcon->Hide(); - wxRect AccTextCtrlSize = AccCtrl->GetTextRect(); /*wxStaticBitmap* BeepBoop = new wxStaticBitmap(AccCtrl, wxID_ANY, wxNullBitmap, wxPoint(AccTextCtrlSize.GetX() + 3, AccTextCtrlSize.GetY() + 2), wxDefaultSize, 0); @@ -323,9 +354,30 @@ frmMainADT( parent ) } +void frmMain::QuitApp( wxCloseEvent& event ) +{ + + QuitApp(); + +} + void frmMain::QuitApp( wxCommandEvent& event ) { + + QuitApp(); + +} + +void frmMain::QuitApp() +{ + //------------------------------------------------------------------- + // frmMain::QuitApp: Quits the application by simply closing this + // window which causes the exit as frmMain is the main window. + // + // wxCommandEvent Accepts a referenced event command. //------------------------------------------------------------------- + + //------------------------------------------------------------------- // frmMain::QuitApp: Quits the application by simply closing this // window which causes the exit as frmMain is the main window. // @@ -394,18 +446,7 @@ void frmMain::QuitApp( wxCommandEvent& event ) std::exit(0); -} - -void frmMain::QuitApp() -{ - //------------------------------------------------------------------- - // frmMain::QuitApp: Quits the application by simply closing this - // window which causes the exit as frmMain is the main window. - // - // wxCommandEvent Accepts a referenced event command. - //------------------------------------------------------------------- - - Close(this); + Close(); } @@ -523,7 +564,6 @@ void frmMain::LoadContactList( wxTreeEvent& event ) if (ActiveItemIcon == 2){ std::multimap::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId); - std::multimap::iterator AGFiter = AccountGroupFilename.find(AGTiter->second); std::multimap::iterator AGLiter = AccountGroupList.find(AGTiter->second); int ActiveAccountG = AGLiter->second; @@ -759,7 +799,6 @@ void frmMain::LoadContactList( wxTreeEvent& event ) vCard Person; vCardFilenameFull.Append(AccountDirFinal); - vCardFilenameFull.Append(wxT("/")); vCardFilenameFull.Append(vCardFilename); Person.LoadFile(vCardFilenameFull); @@ -869,7 +908,6 @@ void frmMain::ShowContactInfo( wxListEvent& event ) { long intSelected = -1; - int intSelectedData = 0; long ContactSeekNum = -1; // intSelected = lstContacts->GetSelection(); @@ -918,9 +956,9 @@ void frmMain::ShowContactInfo( wxListEvent& event ) wxString ContactLine; vCard Person; - int ContactLineLen; + size_t ContactLineLen; bool ExtraLineSeek = FALSE; - int QuoteBreakPoint; + int QuoteBreakPoint = 0; bool PropertyFind = FALSE; bool QuoteMode = FALSE; @@ -1142,7 +1180,6 @@ void frmMain::ShowContactEditorEdit( wxCommandEvent& event ) // Check if a contact has been selected. long intSelected = -1; - int intSelectedData = 0; long intContactSeekNum = -1; // intSelected = lstContacts->GetSelection(); @@ -1214,20 +1251,31 @@ void frmMain::ShowContactEditorEdit( wxCommandEvent& event ) } void frmMain::RefreshAddressBook( wxCommandEvent& event ){ - - // TODO: Check Account Type. + + // Check if ActiveAccount is empty. If not then check if + // account type is not local otherwise continue. if (!ActiveAccount.IsEmpty()){ - - frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); - frameActMgr->AddTask(3, wxT(""), ActiveAccount, - wxT(""), wxT(""), wxT(""), wxT("")); - + + if (ActiveAccountType != wxT("Local")){ + + // Account type is not local. + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frameActMgr->AddTask(3, wxT(""), ActiveAccount, + wxT(""), wxT(""), wxT(""), wxT("")); + + } else { + + wxMessageBox(_("The refresh address book command is not supported with this type of account."), wxT("Not supported for this type of account")); + + } + } } -void frmMain::OpenContactInfo( wxListEvent& event ) +void frmMain::OpenContactInfoList( wxListEvent& event ) { wxStringTokenizer vcardfileline; @@ -1238,7 +1286,6 @@ void frmMain::OpenContactInfo( wxListEvent& event ) wxString nextchar; long intSelected = -1; - int intSelectedData = 0; long intContactSeekNum = -1; intSelected = lstContacts->GetNextItem(intSelected, @@ -1285,6 +1332,13 @@ void frmMain::OpenContactInfo( wxListEvent& event ) } +void frmMain::OpenContactInfoList( wxCommandEvent& event ){ + + wxListEvent pevent; + OpenContactInfoList(pevent); + +} + void frmMain::OpenContactInfo( wxCommandEvent& event ) { @@ -1298,10 +1352,6 @@ void frmMain::OpenContactInfo( wxCommandEvent& event ) wxString nextchar; //std::fstream vcardfile; - long intSelected = -1; - int intSelectedData = 0; - long intContactSeekNum = -1; - Person.LoadFile(uc->ContactFilename); wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); @@ -1439,7 +1489,7 @@ void frmMain::LoadPreferences(){ ActTmrPtr->SetupData(AccDirFull, AccName); ActTmrPtr->SetupPointers(this, ActMgrPtr, ETagProcTimer.GetPointer(AccDirFull)); - ActTmrPtr->Start(preferences.accounts.GetAccountRefresh(i) * 1000); + ActTmrPtr->Start((int)(preferences.accounts.GetAccountRefresh(i) * 1000)); ActTmrPtr->SetOwner(this); ActTmrPtr->Notify(); @@ -1585,7 +1635,7 @@ void frmMain::UpdateContactList(wxCommandEvent& event){ } - intSelectedData = lstContacts->GetItemData(longSelected); + intSelectedData = (int)lstContacts->GetItemData(longSelected); if (ucd->ContactFilename == ContactsFileIndex[intSelectedData]){ @@ -1873,21 +1923,23 @@ void frmMain::RevealContact(wxCommandEvent& event){ } - intSelectedData = lstContacts->GetItemData(longSelected); + intSelectedData = (int)lstContacts->GetItemData(longSelected); // Compare the filename with the one received. // If they match then select it. if (ContactsFileIndex[intSelectedData] == uc->ContactFilename){ - + // Select. lstContacts->SetItemState(longSelected, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); lstContacts->EnsureVisible(longSelected); - break; - - } + } else { + + lstContacts->SetItemState(longSelected, 0, wxLIST_STATE_SELECTED); + + } } @@ -1898,7 +1950,6 @@ void frmMain::DeleteContact(wxCommandEvent& event){ // Check if a contact is selected. long intSelected = -1; - int intSelectedData = 0; long intContactSeekNum = -1; wxString wxSContactName; @@ -2050,6 +2101,12 @@ void frmMain::EmptyServerDialog(wxCommandEvent& event){ int QResponse = wxMessageBox(_("The list of contacts on the server is empty. Upload all locally stored contacts for this account now?"), _("No contacts on server"), wxYES_NO, this); + if (QResponse == wxNO){ + + return; + + } + wxCommandEvent event2(ACTMGR_RESUMEPROC); event2.SetInt(*qrn->QResponse); event2.SetClientData(qrn->PausePtr); @@ -2087,7 +2144,7 @@ void frmMain::DeleteContactSync(wxString &Account, wxString &Filename){ } - intSelectedData = lstContacts->GetItemData(longSelected); + intSelectedData = (int)lstContacts->GetItemData(longSelected); // Compare the filename with the one received. // If they match then select it. @@ -2322,10 +2379,6 @@ void frmMain::WindowEdit( wxCommandEvent &event ){ if (WData->DataType == 0){ - // Contact Window - - int intID = mnuContactWindows->GetId(); - // Get the window title and use that. frmContact *frmContactPtr = static_cast(WData->WindowPointer); @@ -2346,10 +2399,6 @@ void frmMain::WindowEdit( wxCommandEvent &event ){ } else if (WData->DataType == 1){ - // Contact Editor Window - - int intID = mnuContactEditorWindows->GetId(); - // Get the window title and use that. frmContactEditor *frmCEPtr = static_cast(WData->WindowPointer); @@ -2687,7 +2736,7 @@ void frmMain::OpenExportDialog( wxCommandEvent& event ){ } - int FileID = lstContacts->GetItemData(longSelected); + int FileID = (int)lstContacts->GetItemData(longSelected); ArrData.Insert(ContactsFileIndex[FileID], ContactsCollected, 1); @@ -2742,7 +2791,7 @@ void frmMain::GetSelectedList( wxCommandEvent& event ){ // Get the file information and add to the list. - int FileID = lstContacts->GetItemData(longSelected); + int FileID = (int)lstContacts->GetItemData(longSelected); ArrData->Insert(ContactsFileIndex[FileID], ContactsCollected, 1); @@ -2758,10 +2807,10 @@ void frmMain::GetSelectedList( wxCommandEvent& event ){ void frmMain::SyncAccount( wxCommandEvent& event ){ - wxString *AccNameInc = (wxString*)event.GetClientData(); + wxString AccNameInc = event.GetString(); frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); - frameActMgr->AddTask(3, wxT(""), *AccNameInc, + frameActMgr->AddTask(3, wxT(""), AccNameInc, wxT(""), wxT(""), wxT(""), wxT("")); } @@ -2809,4 +2858,50 @@ void frmMain::ShowHelp( wxCommandEvent& event ){ #endif +} + +void frmMain::ShowImportResults( wxCommandEvent &event ){ + + std::map *ResultData = (std::map*)event.GetClientData(); + + frmImportResults *frmIR = new frmImportResults(this); + frmIR->LoadData(ResultData, event.GetInt(), (int)event.GetExtraLong()); + frmIR->ShowModal(); + + delete frmIR; + frmIR = NULL; + + delete ResultData; + ResultData = NULL; + +} + +void frmMain::ReloadContactList( wxCommandEvent &event ){ + + // Check if the account name given is the current + // account selected. + + if (ActiveAccount == event.GetString()){ + + wxTreeEvent NullEvent; + LoadContactList(NullEvent); + + } + +} + +void frmMain::ShowContactMenu( wxMouseEvent& event ){ + + bool EnableRefresh = FALSE; + + if (!ActiveAccount.IsEmpty()){ + + EnableRefresh = TRUE; + + } + + ContactMenu->SetupPointers(this, lstContacts, EnableRefresh); + + this->PopupMenu(ContactMenu->MenuPointer(), wxDefaultPosition); + } \ No newline at end of file