diff options
Diffstat (limited to 'src/base_tab')
| -rw-r--r-- | src/base_tab/BaseGameTab.cpp | 11 | ||||
| -rw-r--r-- | src/base_tab/BaseGameTab.hpp | 1 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.cpp | 22 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.hpp | 4 |
4 files changed, 38 insertions, 0 deletions
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<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); } std::shared_ptr<GameBase> GetBase() { return (std::shared_ptr<GameBase>(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<rows.size();i++){ + RType row=rows[i]; + if(TERMS_IN(White) || + TERMS_IN(Black) || + TERMS_IN(Event) || + TERMS_IN(Round) || + TERMS_IN(Result) || + TERMS_IN(Eco)){ + DisplayRow(i); + } + } +} + +void GameListManager::ClearFilter() { + ClearDisplayedRow(); + for(int i=0;i<rows.size();i++){ + DisplayRow(i); + } +} + diff --git a/src/base_tab/GameListManager.hpp b/src/base_tab/GameListManager.hpp index edfd18b..5c80a68 100644 --- a/src/base_tab/GameListManager.hpp +++ b/src/base_tab/GameListManager.hpp @@ -1,5 +1,7 @@ #include "ochess.hpp" +#define TERMS_IN(COL) (row.COL.find(terms) != std::string::npos) + typedef std::string CType; typedef struct Item { @@ -26,4 +28,6 @@ public: void MarkItemAsDeleted(long item); std::vector<long> GetSelectedItems(); long GetItemGameId(long item); + void Filter(std::string terms); + void ClearFilter(); };
\ No newline at end of file |
