summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-21 22:48:37 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-21 22:48:37 (GMT)
commitdea70befcf770a767f1cbeecdd149930f6d4c0b8 (patch)
treed7262fed954074b5f60b2a75307ff50c8038c25d /src
parent984d39f8cc6e2fd54c1a1b4aa217334f04a5e479 (diff)
downloadpowder-dea70befcf770a767f1cbeecdd149930f6d4c0b8.zip
powder-dea70befcf770a767f1cbeecdd149930f6d4c0b8.tar.gz
Basic skeleton for save preview
Diffstat (limited to 'src')
-rw-r--r--src/interface/Engine.cpp8
-rw-r--r--src/interface/SaveButton.h1
-rw-r--r--src/interface/Window.h6
-rw-r--r--src/preview/PreviewController.cpp26
-rw-r--r--src/preview/PreviewController.h25
-rw-r--r--src/preview/PreviewModel.cpp29
-rw-r--r--src/preview/PreviewModel.h28
-rw-r--r--src/preview/PreviewView.cpp28
-rw-r--r--src/preview/PreviewView.h23
-rw-r--r--src/search/SearchController.cpp15
-rw-r--r--src/search/SearchController.h3
-rw-r--r--src/search/SearchView.cpp11
12 files changed, 199 insertions, 4 deletions
diff --git a/src/interface/Engine.cpp b/src/interface/Engine.cpp
index 6f81f56..19da36e 100644
--- a/src/interface/Engine.cpp
+++ b/src/interface/Engine.cpp
@@ -51,6 +51,14 @@ void Engine::Exit()
void Engine::ShowWindow(Window * window)
{
+ if(window->Position.X==-1)
+ {
+ window->Position.X = (width_-window->Size.X)/2;
+ }
+ if(window->Position.Y==-1)
+ {
+ window->Position.Y = (height_-window->Size.Y)/2;
+ }
if(state_)
{
windows.push(state_);
diff --git a/src/interface/SaveButton.h b/src/interface/SaveButton.h
index 8019a3c..65cff52 100644
--- a/src/interface/SaveButton.h
+++ b/src/interface/SaveButton.h
@@ -39,6 +39,7 @@ public:
virtual void Draw(const Point& screenPos);
virtual void Tick(float dt);
+ Save * GetSave() { return save; }
inline bool GetState() { return state; }
virtual void DoAction();
void SetActionCallback(SaveButtonAction * action);
diff --git a/src/interface/Window.h b/src/interface/Window.h
index 581b91f..4fc2b14 100644
--- a/src/interface/Window.h
+++ b/src/interface/Window.h
@@ -23,6 +23,9 @@ enum ChromeStyle
class Window
{
public:
+ Point Position;
+ Point Size;
+
Window(Point _position, Point _size);
virtual ~Window();
@@ -74,9 +77,6 @@ enum ChromeStyle
virtual void OnKeyRelease(int key, bool shift, bool ctrl, bool alt) {}
std::vector<Component*> Components;
Component* focusedComponent_;
-
- Point Position;
- Point Size;
ChromeStyle chrome;
};
diff --git a/src/preview/PreviewController.cpp b/src/preview/PreviewController.cpp
new file mode 100644
index 0000000..04c4dd6
--- /dev/null
+++ b/src/preview/PreviewController.cpp
@@ -0,0 +1,26 @@
+/*
+ * PreviewController.cpp
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#include "PreviewController.h"
+#include "PreviewView.h"
+#include "PreviewModel.h"
+
+PreviewController::PreviewController(int saveID) {
+ // TODO Auto-generated constructor stub
+ previewModel = new PreviewModel();
+ previewView = new PreviewView();
+ previewModel->AddObserver(previewView);
+ previewView->AttachController(this);
+
+ previewModel->UpdateSave(saveID);
+}
+
+PreviewController::~PreviewController() {
+ delete previewView;
+ delete previewModel;
+}
+
diff --git a/src/preview/PreviewController.h b/src/preview/PreviewController.h
new file mode 100644
index 0000000..373ff03
--- /dev/null
+++ b/src/preview/PreviewController.h
@@ -0,0 +1,25 @@
+/*
+ * PreviewController.h
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#ifndef PREVIEWCONTROLLER_H_
+#define PREVIEWCONTROLLER_H_
+
+#include "preview/PreviewModel.h"
+#include "preview/PreviewView.h"
+
+class PreviewModel;
+class PreviewView;
+class PreviewController {
+ PreviewModel * previewModel;
+ PreviewView * previewView;
+public:
+ PreviewController(int saveID);
+ PreviewView * GetView() { return previewView; }
+ virtual ~PreviewController();
+};
+
+#endif /* PREVIEWCONTROLLER_H_ */
diff --git a/src/preview/PreviewModel.cpp b/src/preview/PreviewModel.cpp
new file mode 100644
index 0000000..bf51ff0
--- /dev/null
+++ b/src/preview/PreviewModel.cpp
@@ -0,0 +1,29 @@
+/*
+ * PreviewModel.cpp
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#include "PreviewModel.h"
+
+PreviewModel::PreviewModel():
+ save(NULL)
+{
+ // TODO Auto-generated constructor stub
+
+}
+
+void PreviewModel::UpdateSave(int saveID)
+{
+
+}
+
+void PreviewModel::AddObserver(PreviewView * observer) {
+ observers.push_back(observer);
+}
+
+PreviewModel::~PreviewModel() {
+ // TODO Auto-generated destructor stub
+}
+
diff --git a/src/preview/PreviewModel.h b/src/preview/PreviewModel.h
new file mode 100644
index 0000000..ba11390
--- /dev/null
+++ b/src/preview/PreviewModel.h
@@ -0,0 +1,28 @@
+/*
+ * PreviewModel.h
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#ifndef PREVIEWMODEL_H_
+#define PREVIEWMODEL_H_
+
+#include <vector>
+#include "PreviewView.h"
+#include "search/Save.h"
+
+using namespace std;
+
+class PreviewView;
+class PreviewModel {
+ vector<PreviewView*> observers;
+ Save * save;
+public:
+ PreviewModel();
+ void AddObserver(PreviewView * observer);
+ void UpdateSave(int saveID);
+ virtual ~PreviewModel();
+};
+
+#endif /* PREVIEWMODEL_H_ */
diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp
new file mode 100644
index 0000000..c5dbfac
--- /dev/null
+++ b/src/preview/PreviewView.cpp
@@ -0,0 +1,28 @@
+/*
+ * PreviewView.cpp
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#include "PreviewView.h"
+#include "interface/Point.h"
+#include "interface/Window.h"
+
+PreviewView::PreviewView():
+ ui::Window(ui::Point(-1, -1), ui::Point(200, 200))
+{
+ // TODO Auto-generated constructor stub
+
+}
+
+void PreviewView::OnDraw()
+{
+ Graphics * g = ui::Engine::Ref().g;
+ g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 255, 255, 255, 255);
+}
+
+PreviewView::~PreviewView() {
+ // TODO Auto-generated destructor stub
+}
+
diff --git a/src/preview/PreviewView.h b/src/preview/PreviewView.h
new file mode 100644
index 0000000..728d547
--- /dev/null
+++ b/src/preview/PreviewView.h
@@ -0,0 +1,23 @@
+/*
+ * PreviewView.h
+ *
+ * Created on: Jan 21, 2012
+ * Author: Simon
+ */
+
+#ifndef PREVIEWVIEW_H_
+#define PREVIEWVIEW_H_
+#include "interface/Window.h"
+#include "preview/PreviewController.h"
+
+class PreviewController;
+class PreviewView: public ui::Window {
+ PreviewController * c;
+public:
+ void AttachController(PreviewController * controller) { c = controller;}
+ PreviewView();
+ virtual void OnDraw();
+ virtual ~PreviewView();
+};
+
+#endif /* PREVIEWVIEW_H_ */
diff --git a/src/search/SearchController.cpp b/src/search/SearchController.cpp
index 7103591..46a353c 100644
--- a/src/search/SearchController.cpp
+++ b/src/search/SearchController.cpp
@@ -3,8 +3,10 @@
#include "SearchModel.h"
#include "SearchView.h"
#include "interface/Panel.h"
+#include "preview/PreviewController.h"
-SearchController::SearchController()
+SearchController::SearchController():
+ activePreview(NULL)
{
searchModel = new SearchModel();
searchView = new SearchView();
@@ -19,6 +21,11 @@ SearchController::SearchController()
SearchController::~SearchController()
{
+ if(activePreview)
+ {
+ ui::Engine::Ref().CloseWindow();
+ delete activePreview;
+ }
delete searchModel;
delete searchView;
}
@@ -54,5 +61,11 @@ void SearchController::ChangeSort()
void SearchController::ShowOwn(bool show)
{
+ //TODO: Implement
+}
+void SearchController::OpenSave(int saveID)
+{
+ activePreview = new PreviewController(saveID);
+ ui::Engine::Ref().ShowWindow(activePreview->GetView());
}
diff --git a/src/search/SearchController.h b/src/search/SearchController.h
index c9fdb21..d67743e 100644
--- a/src/search/SearchController.h
+++ b/src/search/SearchController.h
@@ -4,6 +4,7 @@
#include "interface/Panel.h"
#include "SearchModel.h"
#include "SearchView.h"
+#include "preview/PreviewController.h"
class SearchView;
class SearchModel;
class SearchController
@@ -11,6 +12,7 @@ class SearchController
private:
SearchModel * searchModel;
SearchView * searchView;
+ PreviewController * activePreview;
public:
SearchController();
~SearchController();
@@ -20,6 +22,7 @@ public:
void PrevPage();
void ChangeSort();
void ShowOwn(bool show);
+ void OpenSave(int saveID);
};
#endif // SEARCHCONTROLLER_H
diff --git a/src/search/SearchView.cpp b/src/search/SearchView.cpp
index ca848b5..4a61099 100644
--- a/src/search/SearchView.cpp
+++ b/src/search/SearchView.cpp
@@ -178,6 +178,16 @@ void SearchView::NotifySaveListChanged(SearchModel * sender)
buttonAreaHeight = Size.Y - buttonYOffset - 18;
buttonWidth = (buttonAreaWidth/savesX) - buttonPadding*2;
buttonHeight = (buttonAreaHeight/savesY) - buttonPadding*2;
+ class SaveOpenAction: public ui::SaveButtonAction
+ {
+ SearchView * v;
+ public:
+ SaveOpenAction(SearchView * _v) { v = _v; }
+ virtual void ActionCallback(ui::SaveButton * sender)
+ {
+ v->c->OpenSave(sender->GetSave()->GetID());
+ }
+ };
for(i = 0; i < saves.size(); i++)
{
if(saveX == savesX)
@@ -195,6 +205,7 @@ void SearchView::NotifySaveListChanged(SearchModel * sender)
),
ui::Point(buttonWidth, buttonHeight),
saves[i]);
+ saveButton->SetActionCallback(new SaveOpenAction(this));
saveButtons.push_back(saveButton);
AddComponent(saveButton);
saveX++;