diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-11-17 19:44:09 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-11-17 19:44:09 (GMT) |
| commit | 058a2edd75debbd0297f92572316daa704bd379f (patch) | |
| tree | ad303f091f9a08b209b91eb34a9fcad996a3de69 /src/localbrowser/LocalBrowserModel.cpp | |
| parent | e3594aba9e05c6865d396418c028049cda92c2f3 (diff) | |
| parent | 7a21ae192fe19868539956f3fe28e62b2c7c4429 (diff) | |
| download | powder-058a2edd75debbd0297f92572316daa704bd379f.zip powder-058a2edd75debbd0297f92572316daa704bd379f.tar.gz | |
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/localbrowser/LocalBrowserModel.cpp')
| -rw-r--r-- | src/localbrowser/LocalBrowserModel.cpp | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/src/localbrowser/LocalBrowserModel.cpp b/src/localbrowser/LocalBrowserModel.cpp new file mode 100644 index 0000000..9e869cc --- /dev/null +++ b/src/localbrowser/LocalBrowserModel.cpp @@ -0,0 +1,143 @@ +/* + * StampsModel.cpp + * + * Created on: Mar 29, 2012 + * Author: Simon + */ + +#include "LocalBrowserModel.h" +#include "LocalBrowserView.h" +#include "LocalBrowserModelException.h" +#include "client/Client.h" +#include "client/SaveFile.h" + +LocalBrowserModel::LocalBrowserModel(): + stamp(NULL), + currentPage(1) +{ + // TODO Auto-generated constructor stub + //stampIDs = Client::Ref().GetStamps(); + stampIDs = Client::Ref().GetStamps(0, 16); +} + + +std::vector<SaveFile*> LocalBrowserModel::GetSavesList() +{ + return savesList; +} + +void LocalBrowserModel::AddObserver(LocalBrowserView * observer) +{ + observers.push_back(observer); + observer->NotifySavesListChanged(this); + observer->NotifyPageChanged(this); +} + +void LocalBrowserModel::notifySavesListChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifySavesListChanged(this); + } +} + +void LocalBrowserModel::notifyPageChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyPageChanged(this); + } +} + +SaveFile * LocalBrowserModel::GetSave() +{ + return stamp; +} + +void LocalBrowserModel::SetSave(SaveFile * newStamp) +{ + if(stamp) + delete stamp; + stamp = new SaveFile(*newStamp); +} + +void LocalBrowserModel::UpdateSavesList(int pageNumber) +{ + std::vector<SaveFile*> tempSavesList = savesList; + savesList.clear(); + currentPage = pageNumber; + notifyPageChanged(); + notifySavesListChanged(); + //notifyStampsListChanged(); + /*for(int i = 0; i < tempSavesList.size(); i++) + { + delete tempSavesList[i]; + }*/ + + stampIDs = Client::Ref().GetStamps((pageNumber-1)*20, 20); + + for(int i = 0; i<stampIDs.size(); i++) + { + SaveFile * tempSave = Client::Ref().GetStamp(stampIDs[i]); + if(tempSave) + { + savesList.push_back(tempSave); + } + } + notifySavesListChanged(); +} + +void LocalBrowserModel::RescanStamps() +{ + Client::Ref().RescanStamps(); +} + +int LocalBrowserModel::GetPageCount() +{ + return std::max(1, (int)(std::ceil(float(Client::Ref().GetStampsCount())/20.0f))); +} + +void LocalBrowserModel::SelectSave(std::string stampID) +{ + for(int i = 0; i < selected.size(); i++) + { + if(selected[i]==stampID) + { + return; + } + } + selected.push_back(stampID); + notifySelectedChanged(); +} + +void LocalBrowserModel::DeselectSave(std::string stampID) +{ + bool changed = false; +restart: + for(int i = 0; i < selected.size(); i++) + { + if(selected[i]==stampID) + { + selected.erase(selected.begin()+i); + changed = true; + goto restart; //Just ensure all cases are removed. + } + } + if(changed) + notifySelectedChanged(); +} + +void LocalBrowserModel::notifySelectedChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + LocalBrowserView* cObserver = observers[i]; + cObserver->NotifySelectedChanged(this); + } +} + +LocalBrowserModel::~LocalBrowserModel() { + if(stamp) + delete stamp; +} + |
