aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/base_tab/BaseImportTab.cpp11
-rw-r--r--src/base_tab/BaseImportTab.hpp2
-rw-r--r--src/base_tab/GameListManager.cpp8
-rw-r--r--src/base_tab/GameListManager.hpp4
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);