X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2FfrmMain.cpp;h=f09456c21cd9fb8202a6653dc65df577bc7b0b9b;hb=0d97425fcb83c04a0db5558b6e793fbc2372726e;hp=fad846918cf4cc67ab59b2d20011d08a6e44cd82;hpb=57d545b714d1d77e805af3749915c49338fea522;p=xestiaab%2F.git
diff --git a/source/frmMain.cpp b/source/frmMain.cpp
index fad8469..f09456c 100644
--- a/source/frmMain.cpp
+++ b/source/frmMain.cpp
@@ -16,6 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with Xestia Address Book. If not, see
+#include
#include
#include
#include
@@ -54,7 +55,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 +66,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 +84,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 +99,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 +116,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 +138,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 +154,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 +189,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 +389,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.
@@ -373,6 +407,10 @@ void frmMain::QuitApp()
SetFilename.Append(wxT("settings"));
+#elif defined(__APPLE__)
+
+ TerminateHelpBrowserProcess();
+
#else
// *nix OSes
@@ -395,7 +433,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 +445,7 @@ void frmMain::QuitApp()
delete cfgfile;
cfgfile = NULL;
- //Everything closed... exit.
+ // Everything closed... exit.
std::exit(0);
@@ -442,6 +480,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 +502,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 +527,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 +586,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 +620,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 +665,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){
@@ -691,8 +742,6 @@ void frmMain::LoadContactList( wxTreeEvent& event )
// Split the name into sections.
- vCardDataString = Person.Get(wxT("N"));
-
vCardName NameData = Person.GetName();
vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;
@@ -1062,7 +1111,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 +1129,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 +1190,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 +1235,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 +1285,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 +1295,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 +1357,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 +1415,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 +1429,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 +1441,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 +1486,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 +1520,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 +1545,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 +1569,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 +1590,7 @@ void frmMain::LoadPreferences(){
wxString vCardFilename;
wxString vCardDataString;
wxString vCardFilenameFull;
-
+
bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
while(ProcFiles){
@@ -1557,7 +1662,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();
@@ -1613,19 +1718,40 @@ void frmMain::UpdateContactList(wxCommandEvent& event){
// First Name, Last Name.
- lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Forename + wxT(" ") + ucd->ContactNameArray.Surname);
+ if (ucd->ContactNameArray.Forename == wxT("") && ucd->ContactNameArray.Surname == wxT(""))
+ {
+ lstContacts->SetItem(longSelected, 0, ucd->ContactName);
+ }
+ else
+ {
+ lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Forename + wxT(" ") + ucd->ContactNameArray.Surname);
+ }
} else if (SortMode == 2){
// Last Name, First Name.
-
- lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Surname + wxT(", ") + ucd->ContactNameArray.Forename);
+
+ if (ucd->ContactNameArray.Forename == wxT("") && ucd->ContactNameArray.Surname == wxT(""))
+ {
+ lstContacts->SetItem(longSelected, 0, wxT(", ") + ucd->ContactName);
+ }
+ else
+ {
+ lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Surname + wxT(", ") + ucd->ContactNameArray.Forename);
+ }
} else if (SortMode == 3){
// Nickname.
- lstContacts->SetItem(longSelected, 0, ucd->ContactNickname);
+ if (ucd->ContactNickname == wxT(""))
+ {
+ lstContacts->SetItem(longSelected, 0, _("(no nickname)"));
+ }
+ else
+ {
+ lstContacts->SetItem(longSelected, 0, ucd->ContactNickname);
+ }
} else if (SortMode == 4){
@@ -1667,6 +1793,7 @@ void frmMain::UpdateContactList(wxCommandEvent& event){
vCard UpdatedPerson;
UpdatedPerson.LoadFile(ucd->ContactFilename);
+ frmContactPtr->SetBackgroundColour(ContactBackgroundColour.GetAsString(wxC2S_CSS_SYNTAX));
frmContactPtr->SetupContactData(&UpdatedPerson);
}
@@ -1691,12 +1818,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 +1861,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 +1986,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 +2035,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 +2049,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 +2175,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 +2723,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 +2750,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 +2823,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 +2900,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 +2936,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 +2962,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);
@@ -2947,43 +3126,70 @@ void frmMain::ShowHelp( wxCommandEvent& event ){
// Based on the operating system, work out where
// the documentation should be.
-
-//#ifdef __APPLE__
+
#if defined(__HAIKU__)
-
-#elif defined(__WIN32__)
-
-
-
+
+#elif defined(__WIN32__)
+
+#elif defined(__APPLE__)
+ DisplayHelpBrowser();
+ return;
#else
- if (wxFileExists("/usr/share/doc/xestiaab/index.html")){
-
- wxLaunchDefaultBrowser(wxT("file:///usr/share/doc/xestiaab/index.html"));
+ // Get the LANG environment variable
+
+ char *languageEnvironmentVariableChar = getenv("LANG");
+ std::string languageEnvironmentVariable(languageEnvironmentVariableChar);
+
+ int executeResult = 0;
+
+ wxString documentPath = wxString::Format("/usr/local/share/doc/xestiaab/%s.fodt",
+ wxString(languageEnvironmentVariable).BeforeFirst('.', nullptr));
+ std::string commandToExecute = "odthelpbrowser -d " + documentPath.ToStdString();
+
+ if (wxFileExists(documentPath))
+ executeResult = system(commandToExecute.c_str());
+
+ if (executeResult == 0)
return;
#if XSDAB_RELEASE == 0
+ documentPath = wxString::Format("/usr/share/doc/xestiaab/%s.fodt",
+ wxString(languageEnvironmentVariable).BeforeFirst('.', nullptr));
+ commandToExecute = "odthelpbrowser -d " + documentPath.ToStdString();
+
+ if (wxFileExists(documentPath))
+ executeResult = system(commandToExecute.c_str());
- } else if (wxFileExists("/usr/local/share/doc/xestiaab/index.html")){
-
- wxLaunchDefaultBrowser(wxT("file:///usr/local/share/doc/xestiaab/index.html"));
+ if (executeResult == 0)
return;
-
#endif
-
+
+ // Attempt to launch using the "default" language.
+
+ if (wxFileExists("/usr/share/doc/xestiaab/en_GB.fodt") && executeResult > 0)
+ {
+ commandToExecute = "odthelpbrowser -d " + documentPath.ToStdString();
+ executeResult = system(commandToExecute.c_str());
+ }
+ else if (wxFileExists("/usr/local/share/doc/xestiaab/en_GB.fodt") && executeResult > 0)
+ {
+ commandToExecute = "odthelpbrowser -d " + documentPath.ToStdString();
+ executeResult = system(commandToExecute.c_str());
}
-#endif
+ if (executeResult == 0)
+ return;
+#endif
+
#if XSDAB_RELEASE == 0
-
wxMessageBox(_("The help documentation is not available.\n\nYou can view the documentation that came with your source package."), _("Help documentation missing!"));
-
+ return;
#else
-
- wxMessageBox(_("The help documentation is not available in the usual locations on the system. Please visit http://documentation.xestia.co.uk/xestiaab/ for documentation"), _("Help documentation missing!"));
-
+ wxMessageBox(_("The help documentation is not available in the usual locations on the system. Please visit https://xestia.co.uk/addressbook for documentation"), _("Help documentation missing!"));
+ return;
#endif
}
@@ -3027,7 +3233,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 +3256,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;
+ }
+}