Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
XABSearchPanel/frmSearch: common/preferences.h include missing
[xestiaab/.git] / source / search / frmSearch.cpp
index 23b32b6..8d8530c 100644 (file)
@@ -1,6 +1,6 @@
 // frmSearch.cpp - Search form.
 //
-// (c) 2012-2015 Xestia Software Development.
+// (c) 2012-2017 Xestia Software Development.
 //
 // This file is part of Xestia Address Book.
 //
 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
 
 #include "frmSearch.h"
-#include "../frmMain.h"
-#include "../frmContact.h"
-#include "frmSearchAccounts.h"
-#include "../common/preferences.h"
-#include "../common/dirs.h"
-#include "../vcard/vcard.h"
 
-#include <thread>
+
+#define SEARCHSETTINGS_MAX 15
 
 DEFINE_EVENT_TYPE(SE_ADDSEARCHSETTING);
 DEFINE_EVENT_TYPE(SE_REMOVESEARCHSETTING);
@@ -57,6 +52,17 @@ frmSearch::frmSearch( wxWindow* parent )
 frmSearchADT( parent )
 {
        
+       // Setup the application icon.
+       
+       wxMemoryInputStream istream(bigimgs_searchicon_png, sizeof(bigimgs_searchicon_png));
+       wxImage bigimgs_searchiconi(istream, wxBITMAP_TYPE_PNG);
+       wxBitmap searchiconbmp(bigimgs_searchiconi, -1);    
+       wxIcon searchicon;
+       searchicon.CopyFromBitmap(searchiconbmp);
+       this->SetIcon(searchicon);
+       
+       // Setup the search window.
+       
        XABSearchPanel *InitPanel = new XABSearchPanel( tabSearch );
        InitPanel->EnableButtons(TRUE, FALSE);
        InitPanel->SetupPointers(this);
@@ -228,6 +234,15 @@ void frmSearch::ResetContacts( wxCommandEvent& event )
                
        }
 
+       // Clear the status bar.
+       
+       wxCommandEvent statusResetEvent (SE_SBUPDATE);
+               
+       wxString *statusReset = new wxString(wxT(""));
+       
+       statusResetEvent.SetClientData(statusReset);
+       wxPostEvent(this, statusResetEvent);
+       
        // Add a search settings with the default things.
        
        ScrollGen = 0;
@@ -253,7 +268,6 @@ void frmSearch::AddSearchSetting( wxCommandEvent& event )
        NewPanel->SetupPointers(this);
        NewPanel->SetupInteger(ScrollGen);
        szrSearch->Add(NewPanel, 1, wxEXPAND|wxGROW, 5);
-       //szrSearch->Fit(tabSearch);
        szrSearch->FitInside(tabSearch);
        szrSearch->Layout();
        szrSearch->RecalcSizes();
@@ -261,13 +275,13 @@ void frmSearch::AddSearchSetting( wxCommandEvent& event )
        SearchFrames.insert(std::make_pair(ScrollGen, NewPanel));
        ScrollGen++;
        
-       // Check if number of search settings is 15 (or over).
+       // Check if number of search settings is SEARCHSETTINGS_MAX (or over).
        // If it is, disable the option of adding extra settings
        // for all frames until one is removed.
 
        XABSearchPanel *XABSPPtr;
        
-       if (SearchFrames.size() >= 15){
+       if (SearchFrames.size() >= SEARCHSETTINGS_MAX){
        
                for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
                iter != SearchFrames.end(); ++iter){
@@ -300,13 +314,13 @@ void frmSearch::AddSearchSetting( wxCommandEvent& event )
 void frmSearch::RemoveSearchSetting( wxCommandEvent& event )
 {
 
+       // Remove a search setting frame from the list.
+       
        // Get the integer from the event.
        
        std::map<int,void*>::iterator iter;
        iter = SearchFrames.find(event.GetInt());
 
-       // Remove a search setting frame from the list.
-
        XABSearchPanel *XABSPPtr;
        XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
        
@@ -319,9 +333,7 @@ void frmSearch::RemoveSearchSetting( wxCommandEvent& event )
        delete XABSPPtr;
        XABSPPtr = NULL;
        
-       //szrSearch->Fit(tabSearch);
-       
-       if (SearchFrames.size() < 15 && SearchFrames.size() > 1){
+       if (SearchFrames.size() < SEARCHSETTINGS_MAX && SearchFrames.size() > 1){
        
                for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
                iter != SearchFrames.end(); ++iter){
@@ -359,7 +371,9 @@ void frmSearch::ReloadAccountList( wxCommandEvent& event ){
 }
 
 void frmSearch::SearchBarUpdate( wxCommandEvent& event ){
-
+       
+       // Update the status bar.
+       
        wxString *SBData = (wxString*)event.GetClientData();
 
        stbBottom->SetStatusText(*SBData, 0);
@@ -371,6 +385,9 @@ void frmSearch::SearchBarUpdate( wxCommandEvent& event ){
 
 void frmSearch::SearchFinished( wxCommandEvent& event ){
 
+       // Reset the search button and unlock the search
+       // panel buttons.
+       
        StopMode = FALSE;
        btnSearch->SetLabel(_("Search"));
        DisableAllSearchSettings(FALSE);
@@ -379,6 +396,35 @@ void frmSearch::SearchFinished( wxCommandEvent& event ){
 
 void frmSearch::DisableAllSearchSettings(bool Enable){
 
+       // Check if there is only one search value. If there is, only enable
+       // the add button if this is the case.
+       
+       if (SearchFrames.size() == 1){
+       
+               XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(SearchFrames.begin()->second);
+               XABSPPtr->EnableButtons(TRUE, FALSE);
+               return;
+               
+       }
+       
+       // Check if there is SEARCHSETTINGS_MAX controls set or more, only
+       // enable the remove button if this is the case.
+       
+       if (SearchFrames.size() >= SEARCHSETTINGS_MAX){
+       
+               for (std::map<int, void*>::iterator siter = SearchFrames.begin();
+                       siter != SearchFrames.end(); siter++){
+                       
+                       XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(SearchFrames.begin()->second);
+                       XABSPPtr->EnableButtons(FALSE, TRUE);
+                               
+               }
+               return;
+               
+       }
+       
+       // More than one control, so process them.
+       
        for (std::map<int, void*>::iterator siter = SearchFrames.begin();
                siter != SearchFrames.end(); siter++){
        
@@ -428,20 +474,24 @@ void frmSearch::CloseWindow( wxCloseEvent& event ){
        
        // Close window.
        
-       WindowData *WData = new WindowData;
+       if (SearchMode == false){
+       
+               WindowData *WData = new WindowData;
 
-       WData->DataType = 2;
-       WData->WindowPointer = this;
-       WData->WindowID = SearchUID;
+               WData->DataType = 2;
+               WData->WindowPointer = this;
+               WData->WindowID = SearchUID;
 
-       wxCommandEvent delevent(WINDOW_CLOSE);
-       delevent.SetClientData(WData);
-       wxPostEvent(GetParent(), delevent);
+               wxCommandEvent delevent(WINDOW_CLOSE);
+               delevent.SetClientData(WData);
+               wxPostEvent(GetParent(), delevent);
                
-       wxCommandEvent rs(CE_REMOVESEARCH);
-       wxPostEvent(this, rs);
+               wxCommandEvent rs(CE_REMOVESEARCH);
+               wxPostEvent(this, rs);
        
-       WData = NULL;
+               WData = NULL;
+               
+       }
        
        this->Destroy();
 
@@ -449,18 +499,24 @@ void frmSearch::CloseWindow( wxCloseEvent& event ){
 
 void frmSearch::CloseWindow( wxCommandEvent& event ){
 
+       // Close this window.
+       
        this->Close();
 
 }
 
 void frmSearch::SetUID(int UID){
 
+       // Set the UID of the search window.
+       
        SearchUID = UID;
 
 }
 
 void frmSearch::SetSearchMode(bool SearchModeIn){
 
+       // Set the search mode of the window.
+       
        SearchMode = SearchModeIn;
 
        if (SearchMode == TRUE){
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