Basic skeleton for save preview

This commit is contained in:
Simon Robertshaw 2012-01-21 22:48:37 +00:00
parent 984d39f8cc
commit dea70befcf
12 changed files with 200 additions and 5 deletions

View File

@ -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_);

View File

@ -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);

View File

@ -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;
};

View File

@ -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;
}

View File

@ -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_ */

View File

@ -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
}

View File

@ -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_ */

View File

@ -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
}

23
src/preview/PreviewView.h Normal file
View File

@ -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_ */

View File

@ -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());
}

View File

@ -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

View File

@ -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++;