X-Git-Url: http://Server1/repobrowser/?p=xestiaab%2F.git;a=blobdiff_plain;f=source%2FfrmMain.cpp;h=c32e61dca8975ce2dc1ad5f5437fabe7392a7dc7;hp=fad846918cf4cc67ab59b2d20011d08a6e44cd82;hb=7f33f83780a10b4f4083f5950412f1924f3639a6;hpb=57d545b714d1d77e805af3749915c49338fea522 diff --git a/source/frmMain.cpp b/source/frmMain.cpp index fad8469..c32e61d 100644 --- a/source/frmMain.cpp +++ b/source/frmMain.cpp @@ -54,7 +54,6 @@ #include "common/events.h" #include "common/dirs.h" #include "vcard/vcard.h" -#include "carddav/carddav.h" #include "contacteditor/frmContactEditor.h" #include "import/import.h" #include "export/export.h" @@ -66,7 +65,6 @@ // Define the event types. 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); @@ -85,6 +83,7 @@ DEFINE_EVENT_TYPE(WINDOW_EDIT); DEFINE_EVENT_TYPE(WINDOW_CLOSE); DEFINE_EVENT_TYPE(CONNSTAT_UPDATE); DEFINE_EVENT_TYPE(INVALIDSSLCERT); +DEFINE_EVENT_TYPE(INVALIDSSLCERTSTRING); DEFINE_EVENT_TYPE(GETSELECTEDLIST); DEFINE_EVENT_TYPE(SYNCACCOUNT); DEFINE_EVENT_TYPE(IMPORT_RESULTSSHOW); @@ -99,7 +98,6 @@ DEFINE_EVENT_TYPE(INVALIDSSLTRUST); BEGIN_EVENT_TABLE(frmMain, wxFrame) EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmMain::ConflictResolution) 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) @@ -117,6 +115,7 @@ EVT_COMMAND(wxID_ANY, WINDOW_EDIT, frmMain::WindowEdit) EVT_COMMAND(wxID_ANY, WINDOW_CLOSE, frmMain::WindowDelete) EVT_COMMAND(wxID_ANY, CONNSTAT_UPDATE, frmMain::UpdateConnectionStatus) EVT_COMMAND(wxID_ANY, INVALIDSSLCERT, frmMain::InvalidSSLCertificate) +EVT_COMMAND(wxID_ANY, INVALIDSSLCERTSTRING, frmMain::InvalidSSLCertificateString) EVT_COMMAND(wxID_ANY, GETSELECTEDLIST, frmMain::GetSelectedList) EVT_COMMAND(wxID_ANY, SYNCACCOUNT, frmMain::SyncAccount) EVT_COMMAND(wxID_ANY, IMPORT_RESULTSSHOW, frmMain::ShowImportResults) @@ -138,6 +137,7 @@ frmMainADT( parent ) wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png)); wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png)); wxMemoryInputStream dstream(icons_accnone_png, sizeof(icons_accnone_png)); + wxMemoryInputStream estream(icons_accunsupported_png, sizeof(icons_accunsupported_png)); wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG); wxBitmap AccInet(icons_accinet_png, -1); @@ -153,16 +153,22 @@ frmMainADT( parent ) wxBitmap AccGrp(icons_accgroup_png, -1); wxIcon wxIAccGrp; wxIAccGrp.CopyFromBitmap(AccGrp); - + wxImage icons_accnone_png(dstream, wxBITMAP_TYPE_PNG); wxBitmap AccNone(icons_accnone_png, -1); wxIcon wxIAccNone; wxIAccNone.CopyFromBitmap(AccNone); + + wxImage icons_accunsupported_png(estream, wxBITMAP_TYPE_PNG); + wxBitmap AccUnsupported(icons_accunsupported_png, -1); + wxIcon wxIAccUnsupported; + wxIAccUnsupported.CopyFromBitmap(AccUnsupported); AccountID = AccImgList->Add(wxIAccNIcon); AccountNetID = AccImgList->Add(wxIAccInet); AccountGrpID = AccImgList->Add(wxIAccGrp); AccountNoneID = AccImgList->Add(wxIAccNone); + AccountUnsupportedID = AccImgList->Add(wxIAccUnsupported); bmpIcon->SetIcon(AccImgList->GetIcon(AccountNoneID)); @@ -182,7 +188,40 @@ frmMainADT( parent ) wxImage icons_nossl_png(nosslstream, wxBITMAP_TYPE_PNG); imgNoSSL = new wxBitmap(icons_nossl_png, -1); - + + // Toolbar icons. + + wxMemoryInputStream addaddressbook(toolbar_addaddressbook_png, sizeof(toolbar_addaddressbook_png)); + wxMemoryInputStream preferences(toolbar_preferences_png, sizeof(toolbar_preferences_png)); + wxMemoryInputStream searchcontacts(toolbar_searchcontacts_png, sizeof(toolbar_searchcontacts_png)); + wxMemoryInputStream addcontact(toolbar_addcontact_png, sizeof(toolbar_addcontact_png)); + wxMemoryInputStream editcontact(toolbar_editcontact_png, sizeof(toolbar_editcontact_png)); + wxMemoryInputStream deletecontact(toolbar_deletecontact_png, sizeof(toolbar_deletecontact_png)); + + wxImage toolbar_addaddressbook_png(addaddressbook, wxBITMAP_TYPE_PNG); + imgAddAddressBook = new wxBitmap (toolbar_addaddressbook_png, -1); + tblMain->SetToolNormalBitmap(tbtNewAccount->GetId(), *imgAddAddressBook); + + wxImage toolbar_preferences_png(preferences, wxBITMAP_TYPE_PNG); + imgPreferences = new wxBitmap (toolbar_preferences_png, -1); + tblMain->SetToolNormalBitmap(tbtPreferences->GetId(), *imgPreferences); + + wxImage toolbar_searchcontacts_png(searchcontacts, wxBITMAP_TYPE_PNG); + imgSearchContacts = new wxBitmap (toolbar_searchcontacts_png, -1); + tblMain->SetToolNormalBitmap(tbtSearch->GetId(), *imgSearchContacts); + + wxImage toolbar_addcontact_png(addcontact, wxBITMAP_TYPE_PNG); + imgAddContact = new wxBitmap (toolbar_addcontact_png, -1); + tblMain->SetToolNormalBitmap(tbtAddContact->GetId(), *imgAddContact); + + wxImage toolbar_editcontact_png(editcontact, wxBITMAP_TYPE_PNG); + imgEditContact = new wxBitmap (toolbar_editcontact_png, -1); + tblMain->SetToolNormalBitmap(tbtEditContact->GetId(), *imgEditContact); + + wxImage toolbar_deletecontact_png(deletecontact, wxBITMAP_TYPE_PNG); + imgDeleteContact = new wxBitmap (toolbar_deletecontact_png, -1); + tblMain->SetToolNormalBitmap(tbtDeleteContact->GetId(), *imgDeleteContact); + // Activity Icon. wxMemoryInputStream act1(icons_act1_png, sizeof(icons_act1_png)); @@ -349,17 +388,11 @@ void frmMain::QuitApp() { // Function to run when quitting. - - //Go through the windows and close each one (be it search - //or contact editor). Abort if user wants to cancel. - - // Close the contact editor windows. - - // Close the contact windows. - - // Close the search windows. - + // Write out the ETag databases. + + ETagProcTimer.Stop(); + ETagProcTimer.Notify(); // Save Preferences: Save the window position if that option is enabled. @@ -395,7 +428,7 @@ void frmMain::QuitApp() if (SaveWindowPos == TRUE){ - wxRect frmMainPos = this->GetRect(); + wxRect frmMainPos = GetRect(); cfgfile->Write(wxT("WindowPositionX"), frmMainPos.GetX()); cfgfile->Write(wxT("WindowPositionY"), frmMainPos.GetY()); @@ -407,7 +440,7 @@ void frmMain::QuitApp() delete cfgfile; cfgfile = NULL; - //Everything closed... exit. + // Everything closed... exit. std::exit(0); @@ -442,6 +475,13 @@ void frmMain::ShowAboutWindow( wxCommandEvent& event ) void frmMain::OpenPreferences( wxCommandEvent& event) { + // Close all windows first. + + if (CloseAllWindows() == false) + { + return; + } + // Open the preferences window. ReloadAccounts = FALSE; @@ -457,7 +497,7 @@ void frmMain::OpenPreferences( wxCommandEvent& event) // Reload the accounts as a change has been made within // the application and clear the current contact information. - this->LoadPreferences(); + this->LoadPreferences(true); this->ResetContactInfo(); } @@ -482,7 +522,7 @@ void frmMain::OpenNewABDialog( wxCommandEvent& event) // Reload the accounts as a change has been made within // the application. - this->LoadPreferences(); + this->LoadPreferences(true); } @@ -541,6 +581,10 @@ void frmMain::LoadContactList( wxTreeEvent& event ) imgSSLStatus->SetBitmap(*imgOffline); SSLToolTip->SetTip(wxT("SSL status is not applicable for this account")); AccountTypeFinal.Append(wxT("local")); + } else { + imgSSLStatus->SetBitmap(*imgOffline); + SSLToolTip->SetTip(wxT("SSL status is not applicable for this account")); + AccountTypeFinal.Append(AccountType.Lower()); } AccountIndex = i; @@ -571,6 +615,8 @@ void frmMain::LoadContactList( wxTreeEvent& event ) } else if (AccountType == wxT("Local")){ SSLToolTip->SetTip(wxT("SSL status is not applicable for this account")); AccountTypeFinal.Append(wxT("local")); + } else { + AccountTypeFinal.Append(AccountType.Lower()); } AccountIndex = i; @@ -614,7 +660,7 @@ void frmMain::LoadContactList( wxTreeEvent& event ) long ContactSeekPoint = 0; wxDir vcardaccdir(AccountDirFinal); - + // Get the wxTreeItemId and image icon and compare it to the list. if (ActiveItemIcon == AccountGrpID){ @@ -1062,7 +1108,7 @@ void frmMain::ShowContactInfo( wxListEvent& event ) OldSessionID = SessionID; SessionID = wxString::Format(wxT("%i"), rand() % 32768); - LoadContactData(&Person, htmContactData, SessionID, OldSessionID, &MemoryFileList); + LoadContactData(&Person, htmContactData, SessionID, OldSessionID, &MemoryFileList, ContactBackgroundColour); ActiveFilename = ContactsFileIndex[ContactSeekNum]; } @@ -1080,6 +1126,17 @@ void frmMain::ShowContactEditorNew( wxCommandEvent& event ) return; } + + // Check if the account type is a valid account type, otherwise + // display an error message. + + if (ActiveAccountType != "CardDAV" && ActiveAccountType != "carddav" && + ActiveAccountType != "Local" && ActiveAccountType != "local"){ + + wxMessageBox(_("Cannot add a new contact as the account type is unsupported."), _("Unsupported account type"), wxICON_ERROR); + return; + + } // Add Pointer to SetupPointers for the ETagDB. @@ -1130,7 +1187,7 @@ void frmMain::ShowContactEditorEdit( wxCommandEvent& event ) return; } - + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); @@ -1175,6 +1232,13 @@ void frmMain::ShowContactEditorEdit( wxCommandEvent& event ) ContactEditor->SetupPointers(frameActMgr, &ETagProcTimer, this); ContactEditor->SetupHeaders(); + + if (ActiveAccountType != "CardDAV" && ActiveAccountType != "carddav" && + ActiveAccountType != "Local" && ActiveAccountType != "local"){ + + ContactEditor->SetupAccountData(true); + + } // Check if pointer is NULL (not from the search forms) or not. @@ -1218,7 +1282,7 @@ void frmMain::RefreshAddressBook( wxCommandEvent& event ){ if (!ActiveAccount.IsEmpty()){ - if (ActiveAccountType != wxT("Local")){ + if (ActiveAccountType == wxT("CardDAV") || ActiveAccountType == wxT("carddav")){ // Account type is not local. @@ -1228,7 +1292,7 @@ void frmMain::RefreshAddressBook( wxCommandEvent& event ){ } else { - wxMessageBox(_("The refresh address book command is not supported with this type of account."), wxT("Not supported for this type of account")); + wxMessageBox(_("The refresh address book command is not supported with this type of account."), wxT("Not supported"), wxICON_ERROR); } @@ -1290,6 +1354,7 @@ void frmMain::OpenContactInfoList( wxListEvent& event ) wxPostEvent(this, addevent); Contact->SetupPointers(&MemoryFileList); + Contact->SetBackgroundColour(ContactBackgroundColour.GetAsString(wxC2S_CSS_SYNTAX)); Contact->SetupContactData(&Person); Contact->SetIcon(contacticon); @@ -1347,6 +1412,7 @@ void frmMain::OpenContactInfo( wxCommandEvent& event ) wxPostEvent(this, addevent); Contact->SetupPointers(&MemoryFileList); + Contact->SetBackgroundColour(ContactBackgroundColour.GetAsString(wxC2S_CSS_SYNTAX)); Contact->SetupContactData(&Person); Contact->SetIcon(contacticon); @@ -1360,11 +1426,11 @@ void frmMain::LoadPreferences( wxActivateEvent& event) // Load the preferences. - this->LoadPreferences(); + this->LoadPreferences(true); } -void frmMain::LoadPreferences(){ +void frmMain::LoadPreferences(bool skipWindowSizeReload){ // Load the preferences. @@ -1372,17 +1438,35 @@ void frmMain::LoadPreferences(){ XABPreferences preferences(preffilename); + // Clear the active account/filename information and account list. + + ActiveAccount = ""; + ActiveAccountType = ""; + ActiveFilename = ""; + lstContacts->DeleteAllItems(); + // Setup the main window position (if needed). bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition")); bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks")); + bool UseBackgroundContactColour = preferences.GetBoolData(wxT("UseBackgroundContactColour")); - if (SaveWindowPos == TRUE){ + if (SaveWindowPos == true && skipWindowSizeReload == false){ this->SetSize(preferences.GetMainWindowData()); } + if (UseBackgroundContactColour == true){ + + ContactBackgroundColour = preferences.GetBackgroundContactColourData(); + + } else { + + ContactBackgroundColour = wxTransparentColour; + + } + treAccounts->DeleteAllItems(); wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item"), AccountNoneID); @@ -1399,6 +1483,19 @@ void frmMain::LoadPreferences(){ AccTmrPtr = NULL; } + +#if defined(__WIN32__) + + for (std::map::iterator CertificateIter = AccountCertificateData.begin(); + CertificateIter != AccountCertificateData.end(); CertificateIter++){ + + CertFreeCertificateContext(CertificateIter->second); + + } + + AccountCertificateData.clear(); + +#endif AccountSyncTimers.clear(); @@ -1420,9 +1517,9 @@ void frmMain::LoadPreferences(){ ETagProcTimer.ReloadAccounts(); for (int i = 0; i < preferences.accounts.GetCount(); i++){ - + if ((preferences.accounts.GetAccountType(i) == wxT("Local") || - preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){ + preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == true){ continue; @@ -1445,7 +1542,7 @@ void frmMain::LoadPreferences(){ AccName = preferences.accounts.GetAccountName(i); AccName.Trim(); AccountAccDirList.insert(std::make_pair(i, AccDirFull)); - + if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") || preferences.accounts.GetAccountType(i) == wxT("carddav")){ @@ -1469,10 +1566,15 @@ void frmMain::LoadPreferences(){ AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1); - } else { + } else if (preferences.accounts.GetAccountType(i) == wxT("Local") || + preferences.accounts.GetAccountType(i) == wxT("local")) { AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1); + } else { + + AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountUnsupportedID, -1); + } // Go through the account directory and find contact files with @@ -1485,7 +1587,7 @@ void frmMain::LoadPreferences(){ wxString vCardFilename; wxString vCardDataString; wxString vCardFilenameFull; - + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); while(ProcFiles){ @@ -1557,7 +1659,7 @@ void frmMain::ConflictResolution(wxCommandEvent& event){ vCardConflictObj *vCardConfObj = (vCardConflictObj*)event.GetClientData(); vCard *ClientDataPtr = vCardConfObj->vCardLocalData; vCard *ServerDataPtr = vCardConfObj->vCardServerData; - frameCR->LoadData(ClientDataPtr, ServerDataPtr, &MemoryFileList); + frameCR->LoadData(ClientDataPtr, ServerDataPtr, &MemoryFileList, ContactBackgroundColour.GetAsString(wxC2S_CSS_SYNTAX)); frameCR->ShowModal(); int FinalConflictResult = frameCR->GetResult(); @@ -1667,6 +1769,7 @@ void frmMain::UpdateContactList(wxCommandEvent& event){ vCard UpdatedPerson; UpdatedPerson.LoadFile(ucd->ContactFilename); + frmContactPtr->SetBackgroundColour(ContactBackgroundColour.GetAsString(wxC2S_CSS_SYNTAX)); frmContactPtr->SetupContactData(&UpdatedPerson); } @@ -1691,12 +1794,6 @@ void frmMain::UpdateContactList(wxCommandEvent& event){ } -void frmMain::UpdateAccountList(wxCommandEvent& event){ - - // Update the account list (currently unimplemented). - -} - void frmMain::SetupPointers(void *ActMgrPtrInc){ // Setup the pointers for the main window. @@ -1740,7 +1837,7 @@ void frmMain::SetupForm(){ ciicon_png.LoadFile(ciextstream, wxBITMAP_TYPE_PNG); wxMemoryFSHandler::AddFile(wxT("ciext.png"), ciicon_png, wxBITMAP_TYPE_PNG); - LoadPreferences(); + LoadPreferences(false); } @@ -1865,8 +1962,8 @@ void frmMain::RevealContact(wxCommandEvent& event){ if (uc->ContactAccount == AccountAccDirList[i]){ - treAccounts->SelectItem(nextChild, TRUE); - AccCtrl->SetText(treAccounts->GetItemText(nextChild)); + treAccounts->SelectItem(nextChild, TRUE); + AccCtrl->SetText(treAccounts->GetItemText(nextChild)); } @@ -1914,7 +2011,7 @@ void frmMain::RevealContact(wxCommandEvent& event){ void frmMain::DeleteContact(wxCommandEvent& event){ // Delete a contact from the main window. - + // Check if a contact is selected. long intSelected = -1; @@ -1928,6 +2025,17 @@ void frmMain::DeleteContact(wxCommandEvent& event){ if (intSelected == -1){ return; } + + // Check if the account type is a valid account type, otherwise + // display an error message. + + if (ActiveAccountType != "CardDAV" && ActiveAccountType != "carddav" && + ActiveAccountType != "Local" && ActiveAccountType != "local"){ + + wxMessageBox(_("Cannot delete contact as the account type is unsupported."), _("Unsupported account type"), wxICON_ERROR); + return; + + } frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); @@ -2043,13 +2151,14 @@ void frmMain::DeleteContact(wxCommandEvent& event){ if (nextChild == selectedChild){ wxSDataURL = prefaccounts.GetAccountDirPrefix(i) + wxT("/") + wxSplitFilename; + break; } } // Add task to the activity monitor to delete the contact. - + frameActMgr->AddTask(2, wxSContactName, ActiveAccount, wxSDataURL, wxSplitFilename, ContactsFileIndex[intContactSeekNum], wxT("")); } @@ -2590,7 +2699,7 @@ void frmMain::ShowSSLCertificates( wxCommandEvent &event ){ #else - std::map::iterator SSLColIter; + std::map::iterator SSLColIter; for (int i = 0; i < prefaccounts.GetCount(); i++){ @@ -2617,11 +2726,11 @@ void frmMain::ShowSSLCertificates( wxCommandEvent &event ){ SSLColIter = AccountSSLData.find(i); - SSLCertCollection SSLCertInfo = SSLColIter->second; - + SSLCertCollectionString SSLCertInfo = SSLColIter->second; + frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this ); frameSSLCert->StartCertFrom(0); - frameSSLCert->SetupCerts(SSLCertInfo); + frameSSLCert->SetupCertsString(SSLCertInfo); frameSSLCert->ShowModal(); delete frameSSLCert; @@ -2690,6 +2799,31 @@ void frmMain::InvalidSSLCertificate( wxCommandEvent &event ){ } +void frmMain::InvalidSSLCertificateString( wxCommandEvent &event ){ + + // Display the form for showing an invalid SSL certificate. + + frmInvalidSSLCertificate *frameISC = new frmInvalidSSLCertificate ( this ); + SSLInvalidCertNotifObjString *SSLICNObj = (SSLInvalidCertNotifObjString*)event.GetClientData(); + SSLCertCollectionString SSLCCData = SSLICNObj->CertCollection; + wxString AccountName = SSLICNObj->AccountName; + frameISC->LoadData(SSLCCData, AccountName); + frameISC->ShowModal(); + + int FinalConflictResult = frameISC->GetResult(); + + wxCommandEvent event2(ACTMGR_RESUMEPROC); + event2.SetClientData(SSLICNObj->QRNotifData); + event2.SetInt(FinalConflictResult); + + delete frameISC; + frameISC = NULL; + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + wxPostEvent(frameActMgr, event2); + +} + void frmMain::PauseAllTimers(){ // Pause all the account timers. @@ -2742,7 +2876,7 @@ void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, PCCERT_CONTEX #else -void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollection SSLCertInc){ +void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollectionString SSLCertInc){ // Delete existing data. @@ -2778,6 +2912,17 @@ void frmMain::SetupSSLStatus( int AccountID ){ } + // Check the account type is a supported account type. + + if (AccType != "CardDAV" && AccType != "carddav" && + AccType != "Local" && AccType != "local"){ + + SSLToolTip->SetTip(wxT("SSL is not enabled for this account")); + imgSSLStatus->SetBitmap(*imgNoSSL); + return; + + } + // Check if the account has SSL enabled. bool SSLInUse = prefaccounts.GetAccountSSL(AccountID); @@ -2793,6 +2938,16 @@ void frmMain::SetupSSLStatus( int AccountID ){ std::map::iterator SSLResultIter = AccountSSLResult.find(AccountID); + // Check if a result value has been set. + + if (SSLResultIter == AccountSSLResult.end()){ + + imgSSLStatus->SetBitmap(*imgSSLWarning); + SSLToolTip->SetTip(wxT("Unable to determine SSL information for the '") + prefaccounts.GetAccountName(AccountID) + wxT("' account.")); + return; + + } + if (SSLResultIter->second == 1){ imgSSLStatus->SetBitmap(*imgSSLWarning); @@ -3027,7 +3182,10 @@ void frmMain::ShowContactMenu( wxMouseEvent& event ){ bool EnableRefresh = FALSE; - if (!ActiveAccount.IsEmpty()){ + if (!ActiveAccount.IsEmpty() && (ActiveAccountType == "CardDAV" || + ActiveAccountType == "carddav" || + ActiveAccountType == "Local" || + ActiveAccountType == "local")){ EnableRefresh = TRUE; @@ -3047,4 +3205,29 @@ void frmMain::ResetContactInfo(){ htmContactData->SetPage(EmptyPage); AccCtrl->SetValue(""); -} \ No newline at end of file +} + +bool frmMain::CloseAllWindows() +{ + // Attempt to close all windows. + + if (WindowListPointersMenu.size() == 0) + { + return true; + } + + if (wxMessageBox(_("Before preforming the action, all windows that are open will need to close. Do you wish to continue?"), _("Close All Windowss"), wxYES_NO) == wxYES) + { + for(std::map::iterator windowIter = WindowListPointers.begin(); + windowIter != WindowListPointers.end(); windowIter++) + { + wxWindow *windowPointer = static_cast(windowIter->second); + windowPointer->Close(); + } + return true; + } + else + { + return false; + } +}