ui: implemented gui abstraction and dummy view
- added abstract class tree for gui elements. - implemented concrete gui classes that wrap the qt specific content. - implemented first DummyView which plays nice with the ViewManager. review id = 12
This commit is contained in:
@@ -1,2 +0,0 @@
|
||||
#include "component/view/CodeView.h"
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#ifndef CODE_VIEW_H
|
||||
#define CODE_VIEW_H
|
||||
|
||||
#include "component/view/View.h"
|
||||
|
||||
class CodeView: public View
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
#endif // CODE_VIEW_H
|
||||
@@ -0,0 +1,15 @@
|
||||
#include "component/view/DummyView.h"
|
||||
|
||||
#include "gui/GuiArea.h"
|
||||
#include "gui/GuiElementFactory.h"
|
||||
|
||||
DummyView::DummyView(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElementFactory> guiElementFactory)
|
||||
: View(viewManager, guiElementFactory->createArea(), Vec2i(100, 100))
|
||||
, m_guiElementFactory(guiElementFactory)
|
||||
{
|
||||
getRootElement()->setBackgroundColor(0, 255, 0, 255);
|
||||
}
|
||||
|
||||
DummyView::~DummyView()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef DUMMY_VIEW_H
|
||||
#define DUMMY_VIEW_H
|
||||
|
||||
#include "component/view/View.h"
|
||||
|
||||
class GuiElementFactory;
|
||||
|
||||
class DummyView: public View
|
||||
{
|
||||
public:
|
||||
DummyView(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElementFactory> guiElementFactory);
|
||||
virtual ~DummyView();
|
||||
|
||||
private:
|
||||
std::shared_ptr<GuiElementFactory> m_guiElementFactory;
|
||||
};
|
||||
|
||||
|
||||
#endif // DUMMY_VIEW_H
|
||||
@@ -1,5 +1,35 @@
|
||||
#include "component/view/View.h"
|
||||
#include "component/view/ViewManager.h"
|
||||
|
||||
View::View(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElement> rootElement, const Vec2i& minSize)
|
||||
: m_viewManager(viewManager)
|
||||
, m_rootElement(rootElement)
|
||||
, m_minSize(minSize)
|
||||
{
|
||||
m_viewManager->addView(this);
|
||||
}
|
||||
|
||||
View::~View()
|
||||
{
|
||||
m_viewManager->removeView(this);
|
||||
}
|
||||
|
||||
std::shared_ptr<GuiElement> View::getRootElement()
|
||||
{
|
||||
return m_rootElement;
|
||||
}
|
||||
|
||||
int View::getMinWidth() const
|
||||
{
|
||||
return m_minSize.x;
|
||||
}
|
||||
|
||||
int View::getMinHeight() const
|
||||
{
|
||||
return m_minSize.y;
|
||||
}
|
||||
|
||||
Vec2i View::getMinSize() const
|
||||
{
|
||||
return m_minSize;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
#ifndef VIEW_H
|
||||
#define VIEW_H
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "utility/math/Vector2.h"
|
||||
|
||||
class GuiElement;
|
||||
class ViewManager;
|
||||
|
||||
class View
|
||||
{
|
||||
public:
|
||||
View(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<GuiElement> rootElement, const Vec2i& minSize);
|
||||
virtual ~View();
|
||||
|
||||
std::shared_ptr<GuiElement> getRootElement();
|
||||
|
||||
int getMinWidth() const;
|
||||
int getMinHeight() const;
|
||||
Vec2i getMinSize() const;
|
||||
|
||||
private:
|
||||
std::shared_ptr<ViewManager> m_viewManager;
|
||||
std::shared_ptr<GuiElement> m_rootElement;
|
||||
Vec2i m_minSize;
|
||||
};
|
||||
|
||||
|
||||
#endif // VIEW_H
|
||||
|
||||
@@ -1,9 +1,29 @@
|
||||
#include "component/view/ViewManager.h"
|
||||
|
||||
ViewManager::ViewManager()
|
||||
#include "gui/GuiCanvas.h"
|
||||
#include "View.h"
|
||||
|
||||
ViewManager::ViewManager(std::shared_ptr<GuiCanvas> canvas)
|
||||
: m_canvas(canvas)
|
||||
{
|
||||
}
|
||||
|
||||
ViewManager::~ViewManager()
|
||||
{
|
||||
}
|
||||
|
||||
void ViewManager::addView(View* view)
|
||||
{
|
||||
m_views.push_back(view);
|
||||
m_canvas->addChild(view->getRootElement());
|
||||
}
|
||||
|
||||
void ViewManager::removeView(View* view)
|
||||
{
|
||||
std::vector<View*>::iterator it = std::find(m_views.begin(), m_views.end(), view);
|
||||
if (it != m_views.end())
|
||||
{
|
||||
m_canvas->removeChild((*it)->getRootElement());
|
||||
m_views.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,21 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "component/view/View.h"
|
||||
class GuiCanvas;
|
||||
class View;
|
||||
|
||||
class ViewManager
|
||||
{
|
||||
public:
|
||||
ViewManager();
|
||||
ViewManager(std::shared_ptr<GuiCanvas> canvas);
|
||||
~ViewManager();
|
||||
|
||||
void addView(View* view);
|
||||
void removeView(View* view);
|
||||
|
||||
private:
|
||||
std::vector<std::shared_ptr<View> > m_views;
|
||||
std::shared_ptr<GuiCanvas> m_canvas;
|
||||
std::vector<View*> m_views;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user