summaryrefslogtreecommitdiff
path: root/src/preview
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-26 01:13:33 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-26 01:13:33 (GMT)
commit9e1be78bc21d1fb76a19ce12ef36193aea6e2b93 (patch)
tree081b67d551bb44fecbf6deb99b6c44ea9789614c /src/preview
parentb2d3257ae944a3ea3b57dc8ee4171b1b2f85483e (diff)
downloadpowder-9e1be78bc21d1fb76a19ce12ef36193aea6e2b93.zip
powder-9e1be78bc21d1fb76a19ce12ef36193aea6e2b93.tar.gz
I've got to a point where I can no longer be bothered to think of a proper commit comment
Diffstat (limited to 'src/preview')
-rw-r--r--src/preview/PreviewController.cpp33
-rw-r--r--src/preview/PreviewController.h10
-rw-r--r--src/preview/PreviewModel.cpp18
-rw-r--r--src/preview/PreviewModel.h3
-rw-r--r--src/preview/PreviewView.cpp13
5 files changed, 72 insertions, 5 deletions
diff --git a/src/preview/PreviewController.cpp b/src/preview/PreviewController.cpp
index ef5da4e..db3cdee 100644
--- a/src/preview/PreviewController.cpp
+++ b/src/preview/PreviewController.cpp
@@ -8,8 +8,11 @@
#include "PreviewController.h"
#include "PreviewView.h"
#include "PreviewModel.h"
+#include "Controller.h"
-PreviewController::PreviewController(int saveID) {
+PreviewController::PreviewController(int saveID, ControllerCallback * callback):
+ HasExited(false)
+{
// TODO Auto-generated constructor stub
previewModel = new PreviewModel();
previewView = new PreviewView();
@@ -17,6 +20,34 @@ PreviewController::PreviewController(int saveID) {
previewView->AttachController(this);
previewModel->UpdateSave(saveID, 0);
+
+ this->callback = callback;
+}
+
+Save * PreviewController::GetSave()
+{
+ return previewModel->GetSave();
+}
+
+bool PreviewController::GetDoOpen()
+{
+ return previewModel->GetDoOpen();
+}
+
+void PreviewController::DoOpen()
+{
+ previewModel->SetDoOpen(true);
+}
+
+void PreviewController::Exit()
+{
+ if(ui::Engine::Ref().GetWindow() == previewView)
+ {
+ ui::Engine::Ref().CloseWindow();
+ }
+ if(callback)
+ callback->ControllerExit();
+ HasExited = true;
}
PreviewController::~PreviewController() {
diff --git a/src/preview/PreviewController.h b/src/preview/PreviewController.h
index 373ff03..452d686 100644
--- a/src/preview/PreviewController.h
+++ b/src/preview/PreviewController.h
@@ -10,14 +10,22 @@
#include "preview/PreviewModel.h"
#include "preview/PreviewView.h"
+#include "Controller.h"
+#include "search/Save.h"
class PreviewModel;
class PreviewView;
class PreviewController {
PreviewModel * previewModel;
PreviewView * previewView;
+ ControllerCallback * callback;
public:
- PreviewController(int saveID);
+ bool HasExited;
+ PreviewController(int saveID, ControllerCallback * callback);
+ void Exit();
+ void DoOpen();
+ bool GetDoOpen();
+ Save * GetSave();
PreviewView * GetView() { return previewView; }
virtual ~PreviewController();
};
diff --git a/src/preview/PreviewModel.cpp b/src/preview/PreviewModel.cpp
index 0e03490..07396cb 100644
--- a/src/preview/PreviewModel.cpp
+++ b/src/preview/PreviewModel.cpp
@@ -10,7 +10,8 @@
PreviewModel::PreviewModel():
save(NULL),
- savePreview(NULL)
+ savePreview(NULL),
+ doOpen(false)
{
// TODO Auto-generated constructor stub
@@ -24,6 +25,16 @@ void PreviewModel::UpdateSave(int saveID, int saveDate)
notifyPreviewChanged();
}
+void PreviewModel::SetDoOpen(bool doOpen)
+{
+ this->doOpen = doOpen;
+}
+
+bool PreviewModel::GetDoOpen()
+{
+ return doOpen;
+}
+
Thumbnail * PreviewModel::GetPreview()
{
return savePreview;
@@ -57,6 +68,9 @@ void PreviewModel::AddObserver(PreviewView * observer) {
}
PreviewModel::~PreviewModel() {
- // TODO Auto-generated destructor stub
+ if(save)
+ delete save;
+ if(savePreview)
+ delete savePreview;
}
diff --git a/src/preview/PreviewModel.h b/src/preview/PreviewModel.h
index 764771a..23ac2d7 100644
--- a/src/preview/PreviewModel.h
+++ b/src/preview/PreviewModel.h
@@ -17,6 +17,7 @@ using namespace std;
class PreviewView;
class PreviewModel {
+ bool doOpen;
vector<PreviewView*> observers;
Save * save;
Thumbnail * savePreview;
@@ -28,6 +29,8 @@ public:
Save * GetSave();
void AddObserver(PreviewView * observer);
void UpdateSave(int saveID, int saveDate);
+ bool GetDoOpen();
+ void SetDoOpen(bool doOpen);
virtual ~PreviewModel();
};
diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp
index 9d76fe7..d0bd6da 100644
--- a/src/preview/PreviewView.cpp
+++ b/src/preview/PreviewView.cpp
@@ -14,8 +14,19 @@ PreviewView::PreviewView():
ui::Window(ui::Point(-1, -1), ui::Point((XRES/2)+200, (YRES/2)+150)),
savePreview(NULL)
{
- // TODO Auto-generated constructor stub
+ class OpenAction: public ui::ButtonAction
+ {
+ PreviewView * v;
+ public:
+ OpenAction(PreviewView * v_){ v = v_; }
+ virtual void ActionCallback(ui::Button * sender)
+ {
+ v->c->DoOpen();
+ v->c->Exit();
+ }
+ };
openButton = new ui::Button(ui::Point(0, Size.Y-16), ui::Point(100, 16), "Open");
+ openButton->SetActionCallback(new OpenAction(this));
AddComponent(openButton);
saveNameLabel = new ui::Label(ui::Point(5, (YRES/2)+5), ui::Point(100, 16), "");