From 5df6e9395c4ec744f38e7ce874ff7c02e8a3afbd Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 25 Dec 2022 18:30:56 +0100 Subject: Improve game filtering --- src/base_tab/BaseGameTab.cpp | 11 +++++++++++ src/base_tab/BaseGameTab.hpp | 1 + src/base_tab/GameListManager.cpp | 22 ++++++++++++++++++++++ src/base_tab/GameListManager.hpp | 4 ++++ 4 files changed, 38 insertions(+) (limited to 'src/base_tab') diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp index 6084d67..29729c4 100644 --- a/src/base_tab/BaseGameTab.cpp +++ b/src/base_tab/BaseGameTab.cpp @@ -16,12 +16,23 @@ BaseGameTab::BaseGameTab(wxFrame *parent, std::string base_file, TabInfos *main_ this->Bind(wxEVT_BUTTON, &BaseGameTab::OnExport, this, ID_EXPORT_BUTTON); this->Bind(wxEVT_LIST_ITEM_ACTIVATED, &BaseGameTab::OnOpenGame, this, wxID_ANY); this->Bind(wxEVT_BUTTON, &BaseGameTab::OnImport, this, ID_IMPORT_BUTTON); + this->Bind(wxEVT_BUTTON, &BaseGameTab::OnApplyFilter, this, ID_APPLY_FILTER_BUTTON); + this->Bind(wxEVT_TEXT_ENTER, &BaseGameTab::OnApplyFilter, this, ID_SEARCH_TERMS); current_base->SetLabel(base_file); search_terms->SetHint("e.g: Paul Morphy"); LoadFile(); } +void BaseGameTab::OnApplyFilter(wxCommandEvent &event){ + wxString terms=search_terms->GetValue(); + if(terms.length()>0){ + glm->Filter(terms.ToStdString()); + } else { + glm->ClearFilter(); + } +} + void BaseGameTab::OnImport(wxCommandEvent &event) { AppendGameDialog *dia = new AppendGameDialog(this, base); dia->ShowModal(); diff --git a/src/base_tab/BaseGameTab.hpp b/src/base_tab/BaseGameTab.hpp index 45cc552..c9be350 100644 --- a/src/base_tab/BaseGameTab.hpp +++ b/src/base_tab/BaseGameTab.hpp @@ -27,6 +27,7 @@ public: void OnExport(wxCommandEvent &event); void OnOpenGame(wxListEvent &event); void OnImport(wxCommandEvent &event); + void OnApplyFilter(wxCommandEvent &event); std::shared_ptr GetGame() { return (std::shared_ptr(NULL)); } std::shared_ptr GetBase() { return (std::shared_ptr(base)); }; }; \ No newline at end of file diff --git a/src/base_tab/GameListManager.cpp b/src/base_tab/GameListManager.cpp index e073eed..35b6158 100644 --- a/src/base_tab/GameListManager.cpp +++ b/src/base_tab/GameListManager.cpp @@ -68,3 +68,25 @@ long GameListManager::GetItemGameId(long item){ return std::stol(listItem.GetText().ToStdString()); } +void GameListManager::Filter(std::string terms){ + ClearDisplayedRow(); + for(int i=0;i GetSelectedItems(); long GetItemGameId(long item); + void Filter(std::string terms); + void ClearFilter(); }; \ No newline at end of file -- cgit v1.2.3