diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-07 13:23:26 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-07 13:23:26 (GMT) |
| commit | 61ed6e0276d580515d0acf5ddb96b1db95b9b191 (patch) | |
| tree | 65d9ad219e0b0f6bb1a81813c1888888f2cbd7a4 /src/localbrowser/LocalBrowserModel.cpp | |
| parent | 2e48fc6115ebe0d294a2c7ff7fe8774217676f44 (diff) | |
| download | powder-61ed6e0276d580515d0acf5ddb96b1db95b9b191.zip powder-61ed6e0276d580515d0acf5ddb96b1db95b9b191.tar.gz | |
Rename Save class to SaveInfo, introduce SaveFile for hanlding of local data (stamps and local saves). Rename Stamps browser to LocalBrowser, ready for sharing code with the local save browser
Diffstat (limited to 'src/localbrowser/LocalBrowserModel.cpp')
| -rw-r--r-- | src/localbrowser/LocalBrowserModel.cpp | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/localbrowser/LocalBrowserModel.cpp b/src/localbrowser/LocalBrowserModel.cpp new file mode 100644 index 0000000..ca75874 --- /dev/null +++ b/src/localbrowser/LocalBrowserModel.cpp @@ -0,0 +1,131 @@ +/* + * StampsModel.cpp + * + * Created on: Mar 29, 2012 + * Author: Simon + */ + +#include "LocalBrowserModel.h" +#include "LocalBrowserView.h" +#include "client/Client.h" +#include "LocalBrowserModelException.h" + +LocalBrowserModel::LocalBrowserModel(): + stamp(NULL), + currentPage(1) +{ + // TODO Auto-generated constructor stub + stampIDs = Client::Ref().GetStamps(); +} + + +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 < tempStampsList.size(); i++) + { + delete tempStampsList[i]; + }*/ + + int stampsEnd = pageNumber*20; + + for(int i = stampsEnd-20; i<stampIDs.size() && i<stampsEnd; i++) + { + SaveFile * tempSave = Client::Ref().GetStamp(stampIDs[i]); + if(tempSave) + { + savesList.push_back(tempSave); + } + } + notifySavesListChanged(); +} + +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; +} + |
