diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-28 07:21:30 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-28 07:21:30 +0100 |
| commit | 214d46b8e26ae88b13f9a1a9083d36ce83671d46 (patch) | |
| tree | b6d9e4a4cbfc3d9b772367f987807fa7ebbd076b /src/base_tab | |
| parent | 4eeb110f807cd175fc778a5c19e9964589b4d885 (diff) | |
Improve user experience
Diffstat (limited to 'src/base_tab')
| -rw-r--r-- | src/base_tab/BaseGameTab.cpp | 9 | ||||
| -rw-r--r-- | src/base_tab/BaseImportTab.cpp | 4 | ||||
| -rw-r--r-- | src/base_tab/gamebase/GameBase.cpp | 5 | ||||
| -rw-r--r-- | src/base_tab/gamebase/GameBase.hpp | 10 |
4 files changed, 24 insertions, 4 deletions
diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp index fc617a5..e7e3ab6 100644 --- a/src/base_tab/BaseGameTab.cpp +++ b/src/base_tab/BaseGameTab.cpp @@ -36,13 +36,18 @@ void BaseGameTab::OnApplyFilter(wxCommandEvent &event){ void BaseGameTab::OnDelete(wxCommandEvent &event) { for(auto i: glm->GetSelectedItems()){ - deleted.push_back(glm->GetItemGameId(i)); - glm->MarkItemAsDeleted(i); + game_list->SetItemState(i, 0, wxLIST_STATE_SELECTED); // First deselect + long gameid=glm->GetItemGameId(i); + if(!std::count(deleted.begin(), deleted.end(), gameid)){ + deleted.push_back(gameid); + glm->MarkItemAsDeleted(i); + } } NOTIFY_MANAGE_TAB(); } std::shared_ptr<Game> BaseGameTab::OpenGame(long gameid, long item) { + game_list->SetItemState(item, 0, wxLIST_STATE_SELECTED); // First deselect if(edited.find(gameid) != edited.end()){ // TODO: Focus on the game tab and if close reopen it wxLogDebug("Already opened!"); diff --git a/src/base_tab/BaseImportTab.cpp b/src/base_tab/BaseImportTab.cpp index 422a76f..3e93633 100644 --- a/src/base_tab/BaseImportTab.cpp +++ b/src/base_tab/BaseImportTab.cpp @@ -77,6 +77,7 @@ void BaseImportTab::OnImportSelection(wxCommandEvent &event){ while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED)) != wxNOT_FOUND) { + game_list->SetItemState(selected, 0, wxLIST_STATE_SELECTED); // First deselect // Get game id long game_id=glm->GetItemGameId(selected); // Select the right db hashmap @@ -112,6 +113,7 @@ void BaseImportTab::OnLoad(wxCommandEvent &event){ selected_base=OpenDatabase(game_tab->GetBase()->GetFilePath()); SHOW_DIALOG_BUSY("Loading database..."); auto &game_list=selected_games_to_import[selected_base->GetFilePath()]; + bool baseImported=std::count(databases_to_import.begin(),databases_to_import.end(),selected_base->GetFilePath())>0; while (selected_base->NextGame()) { long id=glm->AddGame( selected_base->GetTag("White"), @@ -120,7 +122,7 @@ void BaseImportTab::OnLoad(wxCommandEvent &event){ selected_base->GetTag("Round"), selected_base->GetTag("Result"), selected_base->GetTag("ECO")); - if(game_list.find(id)!=game_list.end()){ + if(game_list.find(id)!=game_list.end() || baseImported){ glm->MarkItemAsImported(id); } } diff --git a/src/base_tab/gamebase/GameBase.cpp b/src/base_tab/gamebase/GameBase.cpp index a4c51ce..3d7b5d3 100644 --- a/src/base_tab/gamebase/GameBase.cpp +++ b/src/base_tab/gamebase/GameBase.cpp @@ -11,4 +11,9 @@ std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfN return std::shared_ptr<GameBase>(new PGNGameBase(dbpath)); } return nullptr; +} + +std::shared_ptr<Game> OpenGameX(const std::string &dbpath, long id){ + std::shared_ptr<GameBase> base=OpenDatabase(dbpath); + return base->GetGame(id); }
\ No newline at end of file diff --git a/src/base_tab/gamebase/GameBase.hpp b/src/base_tab/gamebase/GameBase.hpp index 6798330..b84047b 100644 --- a/src/base_tab/gamebase/GameBase.hpp +++ b/src/base_tab/gamebase/GameBase.hpp @@ -35,4 +35,12 @@ public: * @param dbpath * @return std::shared_ptr<GameBase> */ -std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfNotExist=true);
\ No newline at end of file +std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfNotExist=true); +/** + * @brief Single game open + * + * @param dbpath + * @param id + * @return std::shared_ptr<Game> + */ +std::shared_ptr<Game> OpenGameX(const std::string &dbpath, long id);
\ No newline at end of file |
