diff options
Diffstat (limited to 'src/base_tab')
| -rw-r--r-- | src/base_tab/BaseImportTab.cpp | 11 | ||||
| -rw-r--r-- | src/base_tab/BaseImportTab.hpp | 2 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.cpp | 8 | ||||
| -rw-r--r-- | src/base_tab/GameListManager.hpp | 4 |
4 files changed, 21 insertions, 4 deletions
diff --git a/src/base_tab/BaseImportTab.cpp b/src/base_tab/BaseImportTab.cpp index c3fe433..eb98c04 100644 --- a/src/base_tab/BaseImportTab.cpp +++ b/src/base_tab/BaseImportTab.cpp @@ -27,9 +27,10 @@ void BaseImportTab::OnImportDatabase(wxCommandEvent &event){ void BaseImportTab::RefreshPendingImports(){ int ngames=games_to_import.size(); int ndb=databases_to_import.size(); + int nbselect=selected_games_to_import.size(); pending_imports->Clear(); - if(ngames+ndb>0){ - pending_imports->AppendText(" Pending imports: "+std::to_string(ngames)+" games and "+std::to_string(ndb)+" databases"); + if(ngames+ndb+nbselect>0){ + pending_imports->AppendText(" Pending imports: "+std::to_string(ngames+nbselect)+" games and "+std::to_string(ndb)+" databases"); }else pending_imports->SetHint("No pending imports"); } @@ -56,7 +57,11 @@ void BaseImportTab::OnImportSelection(wxCommandEvent &event){ while ((selected = game_list->GetNextItem(selected, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED)) != wxNOT_FOUND) { - games_to_import.push_back(selected_base->GetGame(glm->GetItemGameId(selected))); + long game_id=glm->GetItemGameId(selected); + if(selected_games_to_import.find(game_id) == selected_games_to_import.end()){ + selected_games_to_import[game_id]=selected_base->GetGame(glm->GetItemGameId(selected)); + glm->MarkItemAsImported(selected); + } } RefreshPendingImports(); } diff --git a/src/base_tab/BaseImportTab.hpp b/src/base_tab/BaseImportTab.hpp index a3a19de..320fdc8 100644 --- a/src/base_tab/BaseImportTab.hpp +++ b/src/base_tab/BaseImportTab.hpp @@ -9,6 +9,7 @@ class BaseImportTab : public TabBase_TabImport { std::shared_ptr<GameListManager> glm; std::vector<std::shared_ptr<Game>> games_to_import; std::vector<std::shared_ptr<GameBase>> databases_to_import; + std::unordered_map<long, std::shared_ptr<Game>> selected_games_to_import; std::shared_ptr<GameBase> base; std::shared_ptr<GameBase> selected_base; @@ -21,4 +22,5 @@ public: void OnImportSelection(wxCommandEvent &event); void OnImportDatabase(wxCommandEvent &event); void Reset(std::shared_ptr<GameBase> base); + };
\ No newline at end of file diff --git a/src/base_tab/GameListManager.cpp b/src/base_tab/GameListManager.cpp index 4ff2f85..84c2a34 100644 --- a/src/base_tab/GameListManager.cpp +++ b/src/base_tab/GameListManager.cpp @@ -34,10 +34,13 @@ void GameListManager::DisplayRow(long id){ BG_OPEN(index); if(std::find(deleted_games.begin(), deleted_games.end(), row.id) != deleted_games.end()) BG_DELETE(index); + if(std::find(imported_games.begin(), imported_games.end(), row.id) != imported_games.end()) + BG_IMPORT(index); } void GameListManager::Clear(){ game_list->DeleteAllItems(); + imported_games.clear(); deleted_games.clear(); opened_games.clear(); rows.clear(); @@ -58,6 +61,11 @@ void GameListManager::MarkItemAsDeleted(long item){ BG_DELETE(item); } +void GameListManager::MarkItemAsImported(long item){ + imported_games.push_back(rows[item].id); + BG_IMPORT(item); +} + void GameListManager::SortBy(short col){ ClearDisplayedRow(); switch(col){ diff --git a/src/base_tab/GameListManager.hpp b/src/base_tab/GameListManager.hpp index 3145297..8aadc6f 100644 --- a/src/base_tab/GameListManager.hpp +++ b/src/base_tab/GameListManager.hpp @@ -7,6 +7,7 @@ #define TERMS_IN(COL) (row.COL.find(terms) != std::string::npos) #define BG_OPEN(INDEX) game_list->SetItemBackgroundColour(INDEX, *wxGREEN) #define BG_DELETE(INDEX) game_list->SetItemBackgroundColour(INDEX, *wxRED) +#define BG_IMPORT(INDEX) game_list->SetItemBackgroundColour(INDEX, *wxBLUE) #define DISPLAY_ALL_ROWS() {for(int i=0;i<rows.size();i++){DisplayRow(i);}} typedef std::string CType; @@ -24,7 +25,7 @@ typedef struct Item { class GameListManager { long game_counter; wxListCtrl *game_list; - std::vector<long> deleted_games, opened_games; + std::vector<long> deleted_games, opened_games, imported_games; void DisplayRow(long id); void ClearDisplayedRow(); @@ -36,6 +37,7 @@ public: void Clear(); void MarkItemAsOpen(long item); void MarkItemAsDeleted(long item); + void MarkItemAsImported(long item); std::vector<long> GetSelectedItems(); long GetItemGameId(long item); void Filter(std::string terms); |
