Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added copyright and license header to the C++ files and headers in the top source...
[xestiaab/.git] / source / frmMain.cpp
index b9ae291..14fc084 100644 (file)
@@ -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 <http://www.gnu.org/licenses/>
+
 #include <iostream>
 #include <algorithm>
 #include <vector>
@@ -13,6 +31,7 @@
 #include <wx/dir.h>
 #include <wx/stdpaths.h>
 #include <wx/fileconf.h>
+#include <wx/gdicmn.h>
 //#include <boost/filesystem/fstream.hpp>
 
 // 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<wxTreeItemId, int>::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId);
-            std::multimap<int, wxString>::iterator AGFiter = AccountGroupFilename.find(AGTiter->second);
             std::multimap<int, int>::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<frmActivityMgr*>(ActMgrPtr);
-        frameActMgr->AddTask(3, wxT(""), ActiveAccount,
-                             wxT(""), wxT(""), wxT(""), wxT(""));
-        
+   
+       if (ActiveAccountType != wxT("Local")){
+        
+               // Account type is not local.
+       
+               frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(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<frmContact*>(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<frmContactEditor*>(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<frmActivityMgr*>(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<int,wxString> *ResultData = (std::map<int,wxString>*)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
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy