From d298c59206ccb8c3e511fad9884e1cb0bd98b793 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sat, 24 Dec 2022 22:30:20 +0100 Subject: Update db management --- src/base_tab/BaseGameTab.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'src/base_tab/BaseGameTab.cpp') diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp index dafa71a..ae652cc 100644 --- a/src/base_tab/BaseGameTab.cpp +++ b/src/base_tab/BaseGameTab.cpp @@ -5,9 +5,9 @@ wxDEFINE_EVENT(OPEN_GAME_EVENT, wxCommandEvent); -BaseGameTab::BaseGameTab(wxFrame *parent, std::string base_file) +BaseGameTab::BaseGameTab(wxFrame *parent, std::string base_file, TabInfos *main_tab) : TabBase_TabGames(parent), base_file(base_file), - base(NULL) { + base(NULL),main_tab(main_tab) { game_list->InsertColumn(0, L"id", wxLIST_FORMAT_LEFT, 50); game_list->InsertColumn(1, L"White", wxLIST_FORMAT_LEFT, 200); @@ -56,11 +56,25 @@ void BaseGameTab::OnDelete(wxCommandEvent &event) { void BaseGameTab::OnSave(wxCommandEvent &event) { std::vector> new_games_bases; + + // Build edited games vector + std::vector> edited_games; + for (auto itr = edited.begin(); itr != edited.end(); itr++) { + edited_games.push_back(itr->second); + } + + // Combine new_games and edited games std::vector> new_games; new_games.insert( - new_games.end(), edited.begin(), - edited.end()); // Add edited game (since they are also deleted) + new_games.end(), edited_games.begin(), + edited_games.end()); // Add edited game (since they are also deleted) base->Save(deleted, new_games_bases, new_games); + + // CLose all opened games in this database + wxCommandEvent closeLinkedTabEvent(CLOSE_LINKED_TAB, GetId()); + closeLinkedTabEvent.SetClientData(main_tab); + ProcessEvent(closeLinkedTabEvent); + game_list->DeleteAllItems(); edited.clear(); deleted.clear(); @@ -72,7 +86,7 @@ void BaseGameTab::OnOpenGame(wxListEvent &event) { long id = std::stoi(event.GetItem().GetText().ToStdString()); std::shared_ptr *g = new std::shared_ptr(base->GetGame(id)); if (g != NULL) { - edited.push_back(*g); + edited[id]=*g; deleted.push_back(id); game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN); wxCommandEvent openGameEvent(OPEN_GAME_EVENT, GetId()); -- cgit v1.2.3