From f7eab5a5936bda9ae9a9c69cc6988146dc5ef280 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 25 Dec 2022 17:30:22 +0100 Subject: [PATCH] Improve game list manager --- src/base_tab/BaseGameTab.cpp | 19 ++++--------------- src/base_tab/GameListManager.cpp | 29 +++++++++++++++++++++++++++++ src/base_tab/GameListManager.hpp | 4 ++++ 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp index cdab3b1..0b73146 100644 --- a/src/base_tab/BaseGameTab.cpp +++ b/src/base_tab/BaseGameTab.cpp @@ -31,20 +31,9 @@ void BaseGameTab::OnImport(wxCommandEvent &event) { } void BaseGameTab::OnDelete(wxCommandEvent &event) { - long selected = -1; - - while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL, - wxLIST_STATE_SELECTED)) != - wxNOT_FOUND) { - wxListItem listItem; - listItem.m_itemId = selected; // sets row - listItem.m_col = 0; // sets column - game_list->GetItem(listItem); // gets item - deleted.push_back(std::stoi(listItem.GetText().ToStdString())); - for (std::uint32_t &i : deleted) { - wxLogDebug("%d", i); - } - game_list->SetItemBackgroundColour(selected, *wxRED); + for(auto i: glm->GetSelectedItems()){ + deleted.push_back(glm->GetItemGameId(i)); + glm->MarkItemAsDeleted(i); } } @@ -87,7 +76,7 @@ void BaseGameTab::OnOpenGame(wxListEvent &event) { wxLogDebug("Open game"); edited[id]=*g; deleted.push_back(id); - game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN); + glm->MarkItemAsOpen(event.GetIndex()); wxCommandEvent openGameEvent(OPEN_GAME_EVENT, GetId()); openGameEvent.SetEventObject(this); openGameEvent.SetClientData(g); diff --git a/src/base_tab/GameListManager.cpp b/src/base_tab/GameListManager.cpp index fac9074..e073eed 100644 --- a/src/base_tab/GameListManager.cpp +++ b/src/base_tab/GameListManager.cpp @@ -39,3 +39,32 @@ void GameListManager::Clear(){ void GameListManager::ClearDisplayedRow(){ game_list->DeleteAllItems(); } + +void GameListManager::MarkItemAsOpen(long item){ + game_list->SetItemBackgroundColour(item, *wxGREEN); +} + +void GameListManager::MarkItemAsDeleted(long item){ + game_list->SetItemBackgroundColour(item, *wxRED); +} + +std::vector GameListManager::GetSelectedItems(){ + std::vector items; + long selected = -1; + while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED)) != + wxNOT_FOUND) { + items.push_back(selected); + } + return(items); +} + +long GameListManager::GetItemGameId(long item){ + wxListItem listItem; + listItem.m_itemId = item; // sets row + listItem.m_col = 0; // sets column to Id (column 0) + game_list->GetItem(listItem); // gets item + + return std::stol(listItem.GetText().ToStdString()); +} + diff --git a/src/base_tab/GameListManager.hpp b/src/base_tab/GameListManager.hpp index 188407b..edfd18b 100644 --- a/src/base_tab/GameListManager.hpp +++ b/src/base_tab/GameListManager.hpp @@ -22,4 +22,8 @@ public: GameListManager(wxListCtrl *game_list); void AddGame(CType White,CType Black,CType Event,CType Round, CType Result, CType Eco); void Clear(); + void MarkItemAsOpen(long item); + void MarkItemAsDeleted(long item); + std::vector GetSelectedItems(); + long GetItemGameId(long item); }; \ No newline at end of file