diff options
Diffstat (limited to 'src/base_tab/GameListManager.cpp')
| -rw-r--r-- | src/base_tab/GameListManager.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/base_tab/GameListManager.cpp b/src/base_tab/GameListManager.cpp index fef0241..07c9feb 100644 --- a/src/base_tab/GameListManager.cpp +++ b/src/base_tab/GameListManager.cpp @@ -13,7 +13,7 @@ GameListManager::GameListManager(wxListCtrl *game_list): game_list(game_list), g void GameListManager::AddGame(CType White,CType Black,CType Event,CType Round, CType Result, CType Eco){ // Update rows elements - rows.push_back({White,Black,Event,Round,Result,Eco}); + rows.push_back({game_counter,White,Black,Event,Round,Result,Eco}); // Display the row DisplayRow(game_counter); game_counter++; @@ -22,7 +22,7 @@ void GameListManager::AddGame(CType White,CType Black,CType Event,CType Round, C void GameListManager::DisplayRow(long id){ RType row=rows[id]; long index = - game_list->InsertItem(game_counter, std::to_string(id)); // want this for col. 1 + game_list->InsertItem(game_counter, std::to_string(row.id)); // want this for col. 1 game_list->SetItem(index, 1, row.White); game_list->SetItem(index, 2, row.Black); game_list->SetItem(index, 3, row.Event); @@ -30,16 +30,16 @@ void GameListManager::DisplayRow(long id){ game_list->SetItem(index, 5, row.Result); game_list->SetItem(index, 6, row.Eco); - if(std::find(opened_items.begin(), opened_items.end(), index) != opened_items.end()) - MarkItemAsOpen(index); - if(std::find(deleted_items.begin(), deleted_items.end(), index) != deleted_items.end()) - MarkItemAsDeleted(index); + if(std::find(opened_games.begin(), opened_games.end(), row.id) != opened_games.end()) + BG_OPEN(index); + if(std::find(deleted_games.begin(), deleted_games.end(), row.id) != deleted_games.end()) + BG_DELETE(index); } void GameListManager::Clear(){ game_list->DeleteAllItems(); - deleted_items.clear(); - opened_items.clear(); + deleted_games.clear(); + opened_games.clear(); rows.clear(); } @@ -48,13 +48,25 @@ void GameListManager::ClearDisplayedRow(){ } void GameListManager::MarkItemAsOpen(long item){ - opened_items.push_back(item); - game_list->SetItemBackgroundColour(item, *wxGREEN); + opened_games.push_back(rows[item].id); + BG_OPEN(item); } void GameListManager::MarkItemAsDeleted(long item){ - deleted_items.push_back(item); - game_list->SetItemBackgroundColour(item, *wxRED); + deleted_games.push_back(rows[item].id); + BG_DELETE(item); +} + +void GameListManager::SortBy(short col){ + ClearDisplayedRow(); + switch(col){ + case 1: + std::sort(rows.begin(),rows.end(), [&](RType a, RType b){return(a.White < b.White);}); + break; + default: + std::sort(rows.begin(),rows.end(), [&](RType a, RType b){return(a.id < b.id);}); + } + DISPLAY_ALL_ROWS(); } std::vector<long> GameListManager::GetSelectedItems(){ @@ -94,8 +106,6 @@ void GameListManager::Filter(std::string terms){ void GameListManager::ClearFilter() { ClearDisplayedRow(); - for(int i=0;i<rows.size();i++){ - DisplayRow(i); - } + DISPLAY_ALL_ROWS(); } |
