diff options
Diffstat (limited to 'src/search/SearchModel.cpp')
| -rw-r--r-- | src/search/SearchModel.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/search/SearchModel.cpp b/src/search/SearchModel.cpp index 4a410c3..e1d9849 100644 --- a/src/search/SearchModel.cpp +++ b/src/search/SearchModel.cpp @@ -37,6 +37,8 @@ void SearchModel::UpdateSaveList(int pageNumber, std::string query) currentPage = pageNumber; notifySaveListChanged(); notifyPageChanged(); + selected.clear(); + notifySelectedChanged(); //Threading if(!updateSaveListWorking) @@ -94,6 +96,36 @@ void SearchModel::AddObserver(SearchView * observer) observer->NotifyShowOwnChanged(this); } +void SearchModel::SelectSave(int saveID) +{ + for(int i = 0; i < selected.size(); i++) + { + if(selected[i]==saveID) + { + return; + } + } + selected.push_back(saveID); + notifySelectedChanged(); +} + +void SearchModel::DeselectSave(int saveID) +{ + bool changed = false; +restart: + for(int i = 0; i < selected.size(); i++) + { + if(selected[i]==saveID) + { + selected.erase(selected.begin()+i); + changed = true; + goto restart; //Just ensure all cases are removed. + } + } + if(changed) + notifySelectedChanged(); +} + void SearchModel::notifySaveListChanged() { for(int i = 0; i < observers.size(); i++) @@ -130,6 +162,15 @@ void SearchModel::notifyShowOwnChanged() } } +void SearchModel::notifySelectedChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + SearchView* cObserver = observers[i]; + cObserver->NotifySelectedChanged(this); + } +} + SearchModel::~SearchModel() { if(loadedSave) |
