#elif defined(__WIN32__)
- int stbBottomData [4] = { -1, 8, 8, 8 };
+ int stbBottomData [4] = { -1, 16, 16, 16 };
#else
stbBottom->GetFieldRect(3, rectActivity);
SSLToolTip = new wxToolTip(wxT(""));
-
- imgConnStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectOnline.GetX()),(rectOnline.GetY())), wxDefaultSize, 0 );
+
+#if defined(__WIN32__)
+
+ imgConnStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint(rectOnline.GetX(),rectOnline.GetY()), wxDefaultSize, 0 );
imgConnStatus->SetBitmap(*imgOnline);
imgConnStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ToggleConnectionStatus ), NULL, this );
imgActivityStatus->SetBitmap(*imgActIconSleep);
imgActivityStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ShowActivityWindow ), NULL, this );
+#else
+
+ imgConnStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectOnline.GetX()), (rectOnline.GetY())), wxDefaultSize, 0);
+ imgConnStatus->SetBitmap(*imgOnline);
+ imgConnStatus->Connect(wxEVT_LEFT_DCLICK, wxCommandEventHandler(frmMain::ToggleConnectionStatus), NULL, this);
+
+ imgSSLStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectSSL.GetX()), (rectSSL.GetY())), wxDefaultSize, 0);
+ imgSSLStatus->SetBitmap(*imgNoSSL);
+ imgSSLStatus->SetToolTip(SSLToolTip);
+ imgSSLStatus->Connect(wxEVT_LEFT_DCLICK, wxCommandEventHandler(frmMain::ShowSSLCertificates), NULL, this);
+
+ imgActivityStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectActivity.GetX()), (rectActivity.GetY())), wxDefaultSize, 0);
+ imgActivityStatus->SetBitmap(*imgActIconSleep);
+ imgActivityStatus->Connect(wxEVT_LEFT_DCLICK, wxCommandEventHandler(frmMain::ShowActivityWindow), NULL, this);
+
+#endif
+
// Setup the window menu.
// By default should be:
AccTmrPtr = NULL;
}
+
+#if defined(__WIN32__)
+
+ for (std::map<int, PCCERT_CONTEXT>::iterator CertificateIter = AccountCertificateData.begin();
+ CertificateIter != AccountCertificateData.end(); CertificateIter++){
+
+ CertFreeCertificateContext(CertificateIter->second);
+
+ }
+
+ AccountCertificateData.clear();
+
+#endif
AccountSyncTimers.clear();
AccType.clear();
}
-
+
+#elif defined(__WIN32__)
+
+ std::map<int, PCCERT_CONTEXT>::iterator SSLCertificateIter;
+
+ for (int i = 0; i < prefaccounts.GetCount(); i++){
+
+ SeekAccount.Append(prefaccounts.GetAccountDirectory(i));
+ AccType.Append(prefaccounts.GetAccountType(i));
+ AccountSSL = prefaccounts.GetAccountSSL(i);
+ AccTypeLower = AccType.MakeLower();
+ SeekAccount.Append(wxT("."));
+ SeekAccount.Append(AccTypeLower);
+
+ if (SeekAccount == ActiveAccount){
+
+ if (AccTypeLower == wxT("local")){
+
+ return;
+
+ }
+
+ if (AccountSSL == false){
+
+ return;
+
+ }
+
+ SSLCertificateIter = AccountCertificateData.find(i);
+
+ // Setup and display the form.
+
+ if (SSLCertificateIter == AccountCertificateData.end() || SSLCertificateIter->second->pCertInfo == NULL){
+
+ wxMessageBox("No certificate information is available due to invalid connection details, connection being in progress or invalid certificate data received.");
+
+ } else {
+
+ BOOL ModifiedCertificateData;
+ CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(SSLCertificateIter->second, (HWND)this->GetHandle());
+
+ if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){
+ wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog"));
+ }
+
+ }
+
+ //DisplayCertificate(SSLTrustIter->second);
+
+ }
+
+ SeekAccount.Clear();
+ AccTypeLower.Clear();
+ AccType.clear();
+
+ }
+
#else
std::map<int, SSLCertCollection>::iterator SSLColIter;
#elif defined(__WIN32__)
-void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, CERT_CONTEXT CertificateContext){
+void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, PCCERT_CONTEXT CertificateContext){
// Delete existing data.
+ std::map<int, PCCERT_CONTEXT>::iterator CertificateIter = AccountCertificateData.find(AccountID);
+
+ if (CertificateIter != AccountCertificateData.end()){
+ CertFreeCertificateContext(CertificateIter->second);
+ }
+
AccountCertificateData.erase(AccountID);
AccountSSLResult.erase(AccountID);
std::map<int,int>::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);