X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2FfrmMain.cpp;h=6c57e6b840165377c70a40930a4c95bf4a56fafb;hb=beff02d5576972205d0ebefe689b6b55dd67a826;hp=b9ae29121950074c70ea2b072dcaa36694127fe2;hpb=969329975a0af9d346c76dc34e9ff9cd54cc61ee;p=xestiaab%2F.git diff --git a/source/frmMain.cpp b/source/frmMain.cpp index b9ae291..6c57e6b 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,7 +31,7 @@ #include #include #include -//#include +#include // Include the forms. @@ -21,13 +39,14 @@ #include "frmAbout.h" #include "frmPreferences.h" #include "frmNewAccount.h" -#include "frmActivityMgr.h" +#include "actmgr/frmActivityMgr.h" #include "frmContact.h" #include "frmConflictResolution.h" #include "frmInvalidSSLCertificate.h" -#include "frmSearch.h" +#include "search/frmSearch.h" #include "frmSSLCertificate.h" #include "frmUpdate.h" +#include "import/frmImportResults.h" #include "bitmaps.h" #include "common/preferences.h" @@ -39,6 +58,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 +72,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 +85,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 +100,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 +117,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 +227,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,13 +353,34 @@ 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. + // + // wxCommandEvent Accepts a referenced event command. //------------------------------------------------------------------- //Go through the windows and close each one (be it search @@ -394,18 +445,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 +563,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 +798,6 @@ void frmMain::LoadContactList( wxTreeEvent& event ) vCard Person; vCardFilenameFull.Append(AccountDirFinal); - vCardFilenameFull.Append(wxT("/")); vCardFilenameFull.Append(vCardFilename); Person.LoadFile(vCardFilenameFull); @@ -869,7 +907,6 @@ void frmMain::ShowContactInfo( wxListEvent& event ) { long intSelected = -1; - int intSelectedData = 0; long ContactSeekNum = -1; // intSelected = lstContacts->GetSelection(); @@ -918,9 +955,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 +1179,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 +1250,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 +1285,6 @@ void frmMain::OpenContactInfo( wxListEvent& event ) wxString nextchar; long intSelected = -1; - int intSelectedData = 0; long intContactSeekNum = -1; intSelected = lstContacts->GetNextItem(intSelected, @@ -1285,6 +1331,13 @@ void frmMain::OpenContactInfo( wxListEvent& event ) } +void frmMain::OpenContactInfoList( wxCommandEvent& event ){ + + wxListEvent pevent; + OpenContactInfoList(pevent); + +} + void frmMain::OpenContactInfo( wxCommandEvent& event ) { @@ -1298,10 +1351,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 +1488,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 +1634,7 @@ void frmMain::UpdateContactList(wxCommandEvent& event){ } - intSelectedData = lstContacts->GetItemData(longSelected); + intSelectedData = (int)lstContacts->GetItemData(longSelected); if (ucd->ContactFilename == ContactsFileIndex[intSelectedData]){ @@ -1812,20 +1861,6 @@ void frmMain::RemoveContactEditorWindowPointer(wxCommandEvent& event){ } -void frmMain::UpdateWindowList(wxCommandEvent& event){ - - // Update the Window List. - - // Delete the existing items in the window menu. - - // Get the list of contacts. - - // Insert a separator. - - // Get the list of search windows. - -} - void frmMain::RevealContact(wxCommandEvent& event){ UCNotif *uc = (UCNotif*)event.GetClientData(); @@ -1873,21 +1908,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 +1935,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 +2086,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 +2129,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 +2364,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); @@ -2335,21 +2373,9 @@ void frmMain::WindowEdit( wxCommandEvent &event ){ std::map::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID); MenuIter->second->SetItemLabel(WindowTitle); - - //mnuWindow->FindChildItem(intID, &pos); - //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); - //mnuNewItem->SetId(WData->WindowID); - //ContactWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); - //ContactWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); - //mnuWindow->Insert((pos + 1), mnuNewItem); - //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactWindow)); - + } 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); @@ -2368,14 +2394,6 @@ void frmMain::WindowEdit( wxCommandEvent &event ){ } - //mnuWindow->FindChildItem(intID, &pos); - //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); - //mnuNewItem->SetId(WData->WindowID); - //ContactEditorWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); - //ContactEditorWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); - //mnuWindow->Insert((pos + 1), mnuNewItem); - //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactEditorWindow)); - } delete WData; @@ -2687,7 +2705,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 +2760,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 +2776,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 +2827,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