aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-25 17:30:22 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-25 17:30:22 +0100
commitf7eab5a5936bda9ae9a9c69cc6988146dc5ef280 (patch)
treefc94dd121dafcfc76baa1aa6c44f4fdfa408c9a5
parentcd9f55f5addd2135e7c48f2f180bb7aeacf14c61 (diff)
Improve game list manager
-rw-r--r--src/base_tab/BaseGameTab.cpp19
-rw-r--r--src/base_tab/GameListManager.cpp29
-rw-r--r--src/base_tab/GameListManager.hpp4
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<long> GameListManager::GetSelectedItems(){
+ std::vector<long> 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<long> GetSelectedItems();
+ long GetItemGameId(long item);
}; \ No newline at end of file