diff options
| author | Bryan Hoyle <starfoxprime@gmail.com> | 2012-06-22 16:00:17 (GMT) |
|---|---|---|
| committer | Bryan Hoyle <starfoxprime@gmail.com> | 2012-06-22 16:00:17 (GMT) |
| commit | 6fa05d1930964d0a09093c627b30241d73c69dda (patch) | |
| tree | b2d9856f5f0c26529de8eff8fc8b8f39cb234b64 /src/preview/PreviewModel.cpp | |
| parent | 58f3494f6fce58729e6e3fe91e1234a9bd636d55 (diff) | |
| parent | 55d90a44a8425f70b08d864570e255f4bad8ba4c (diff) | |
| download | powder-6fa05d1930964d0a09093c627b30241d73c69dda.zip powder-6fa05d1930964d0a09093c627b30241d73c69dda.tar.gz | |
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/preview/PreviewModel.cpp')
| -rw-r--r-- | src/preview/PreviewModel.cpp | 61 |
1 files changed, 59 insertions, 2 deletions
diff --git a/src/preview/PreviewModel.cpp b/src/preview/PreviewModel.cpp index f923ceb..3066ac3 100644 --- a/src/preview/PreviewModel.cpp +++ b/src/preview/PreviewModel.cpp @@ -5,6 +5,7 @@ * Author: Simon */ +#include <cmath> #include "PreviewModel.h" #include "client/Client.h" #include "PreviewModelException.h" @@ -18,7 +19,9 @@ PreviewModel::PreviewModel(): updateSaveInfoWorking(false), updateSaveInfoFinished(false), updateSaveCommentsWorking(false), - updateSaveCommentsFinished(false) + updateSaveCommentsFinished(false), + commentsTotal(0), + commentsPageNumber(1) { // TODO Auto-generated constructor stub @@ -58,7 +61,7 @@ void * PreviewModel::updateSaveDataT() void * PreviewModel::updateSaveCommentsT() { - std::vector<SaveComment*> * tempComments = Client::Ref().GetComments(tSaveID, 0, 10); + std::vector<SaveComment*> * tempComments = Client::Ref().GetComments(tSaveID, (commentsPageNumber-1)*10, 10); updateSaveCommentsFinished = true; return tempComments; } @@ -110,6 +113,7 @@ void PreviewModel::UpdateSave(int saveID, int saveDate) if(!updateSaveCommentsWorking) { + commentsLoaded = false; updateSaveCommentsWorking = true; updateSaveCommentsFinished = false; pthread_create(&updateSaveCommentsThread, 0, &PreviewModel::updateSaveCommentsTHelper, this); @@ -131,6 +135,46 @@ SaveInfo * PreviewModel::GetSave() return save; } +int PreviewModel::GetCommentsPageNum() +{ + return commentsPageNumber; +} + +int PreviewModel::GetCommentsPageCount() +{ + return max(1, (int)(ceil(commentsTotal/10))); +} + +bool PreviewModel::GetCommentsLoaded() +{ + return commentsLoaded; +} + +void PreviewModel::UpdateComments(int pageNumber) +{ + commentsLoaded = false; + if(saveComments) + { + for(int i = 0; i < saveComments->size(); i++) + delete saveComments->at(i); + delete saveComments; + saveComments = NULL; + } + + //resultCount = 0; + commentsPageNumber = pageNumber; + notifySaveCommentsChanged(); + notifyCommentsPageChanged(); + + //Threading + if(!updateSaveCommentsWorking) + { + updateSaveCommentsFinished = false; + updateSaveCommentsWorking = true; + pthread_create(&updateSaveCommentsThread, 0, &PreviewModel::updateSaveCommentsTHelper, this); + } +} + std::vector<SaveComment*> * PreviewModel::GetComments() { return saveComments; @@ -144,6 +188,14 @@ void PreviewModel::notifySaveChanged() } } +void PreviewModel::notifyCommentsPageChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyCommentsPageChanged(this); + } +} + void PreviewModel::notifySaveCommentsChanged() { for(int i = 0; i < observers.size(); i++) @@ -155,6 +207,8 @@ void PreviewModel::notifySaveCommentsChanged() void PreviewModel::AddObserver(PreviewView * observer) { observers.push_back(observer); observer->NotifySaveChanged(this); + observer->NotifyCommentsChanged(this); + observer->NotifyCommentsPageChanged(this); } void PreviewModel::Update() @@ -194,6 +248,7 @@ void PreviewModel::Update() pthread_join(updateSaveInfoThread, (void**)(&save)); if(updateSaveDataFinished && save) { + commentsTotal = save->Comments; try { save->SetGameSave(new GameSave(&saveDataBuffer[0], saveDataBuffer.size())); @@ -204,6 +259,7 @@ void PreviewModel::Update() } } notifySaveChanged(); + notifyCommentsPageChanged(); if(!save) throw PreviewModelException("Unable to load save"); } @@ -220,6 +276,7 @@ void PreviewModel::Update() delete saveComments; saveComments = NULL; } + commentsLoaded = true; updateSaveCommentsWorking = false; pthread_join(updateSaveCommentsThread, (void**)(&saveComments)); notifySaveCommentsChanged(); |
